diff --git a/indra/llaudio/llstreamingaudio.h b/indra/llaudio/llstreamingaudio.h index 009327c7c..0e81cc530 100644 --- a/indra/llaudio/llstreamingaudio.h +++ b/indra/llaudio/llstreamingaudio.h @@ -53,7 +53,11 @@ class LLStreamingAudioInterface virtual void setGain(F32 vol) = 0; virtual F32 getGain() = 0; virtual std::string getURL() = 0; - virtual const LLSD *getMetaData() = 0; //return NULL if not supported. + + virtual bool supportsMetaData() = 0; + virtual const LLSD *getMetaData() = 0; + virtual bool supportsWaveData() = 0; + virtual bool getWaveData(float* arr, S32 count, S32 stride = 1) = 0; }; #endif // LL_STREAMINGAUDIO_H diff --git a/indra/llaudio/llstreamingaudio_fmod.h b/indra/llaudio/llstreamingaudio_fmod.h index 5c4597fae..c8a940eed 100644 --- a/indra/llaudio/llstreamingaudio_fmod.h +++ b/indra/llaudio/llstreamingaudio_fmod.h @@ -54,8 +54,11 @@ class LLStreamingAudio_FMOD : public LLStreamingAudioInterface /*virtual*/ void setGain(F32 vol); /*virtual*/ F32 getGain(); /*virtual*/ std::string getURL(); - /*virtual*/ const LLSD *getMetaData(){return mMetaData;} //return NULL if not supported. + /*virtual*/ bool supportsMetaData(){return true;} + /*virtual*/ const LLSD *getMetaData(){return mMetaData;} //return NULL if not playing. + /*virtual*/ bool supportsWaveData(){return false;} + /*virtual*/ bool getWaveData(float* arr, S32 count, S32 stride = 1){return false}; private: LLAudioStreamManagerFMOD *mCurrentInternetStreamp; int mFMODInternetStreamChannel; diff --git a/indra/llaudio/llstreamingaudio_fmodex.cpp b/indra/llaudio/llstreamingaudio_fmodex.cpp index ce46e0162..1ad1b2eae 100644 --- a/indra/llaudio/llstreamingaudio_fmodex.cpp +++ b/indra/llaudio/llstreamingaudio_fmodex.cpp @@ -334,6 +334,27 @@ void LLStreamingAudio_FMODEX::setGain(F32 vol) } } +/*virtual*/ bool LLStreamingAudio_FMODEX::getWaveData(float* arr, S32 count, S32 stride/*=1*/) +{ + if(!mFMODInternetStreamChannelp || !mCurrentInternetStreamp) + return false; + + static std::vector local_array(count); //Have to have an extra buffer to mix channels. Bleh. + if(count > (S32)local_array.size()) //Expand the array if needed. Try to minimize allocation calls, so don't ever shrink. + local_array.resize(count); + + if( mFMODInternetStreamChannelp->getWaveData(&local_array[0],count,0) == FMOD_OK && + mFMODInternetStreamChannelp->getWaveData(&arr[0],count,1) == FMOD_OK ) + { + for(S32 i = count-1;i>=0;i-=stride) + { + arr[i] += local_array[i]; + arr[i] *= .5f; + } + return true; + } + return false; +} /////////////////////////////////////////////////////// // manager of possibly-multiple internet audio streams diff --git a/indra/llaudio/llstreamingaudio_fmodex.h b/indra/llaudio/llstreamingaudio_fmodex.h index 0bb88fc8a..064b266e6 100644 --- a/indra/llaudio/llstreamingaudio_fmodex.h +++ b/indra/llaudio/llstreamingaudio_fmodex.h @@ -61,8 +61,11 @@ class LLStreamingAudio_FMODEX : public LLStreamingAudioInterface /*virtual*/ void setGain(F32 vol); /*virtual*/ F32 getGain(); /*virtual*/ std::string getURL(); - /*virtual*/ const LLSD *getMetaData(){return mMetaData;} //return NULL if not supported. + /*virtual*/ bool supportsMetaData(){return true;} + /*virtual*/ const LLSD *getMetaData(){return mMetaData;} //return NULL if not playing. + /*virtual*/ bool supportsWaveData(){return true;} + /*virtual*/ bool getWaveData(float* arr, S32 count, S32 stride = 1); private: FMOD::System *mSystem; diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp index 85fb1c29a..ee06d32b9 100644 --- a/indra/llrender/llpostprocess.cpp +++ b/indra/llrender/llpostprocess.cpp @@ -247,10 +247,6 @@ void LLPostProcess::applyColorFilterShader(void) gPostColorFilterProgram.uniform3fv("contrastBase", 1, LLVector3(baseR, baseG, baseB).mV); gPostColorFilterProgram.uniform1f("saturation", tweaks.getSaturation()); gPostColorFilterProgram.uniform3fv("lumWeights", 1, LLVector3(LUMINANCE_R, LUMINANCE_G, LUMINANCE_B).mV); - - LLGLEnable blend(GL_BLEND); - gGL.setSceneBlendType(LLRender::BT_REPLACE); - LLGLDepthTest depth(GL_FALSE); /// Draw a screen space quad drawOrthoQuad(QUAD_NORMAL); @@ -271,11 +267,7 @@ void LLPostProcess::applyNightVisionShader(void) gPostNightVisionProgram.uniform1f("noiseStrength", tweaks.getNoiseStrength()); mNoiseTextureScale = 0.001f + ((100.f - tweaks.getNoiseSize()) / 100.f); mNoiseTextureScale *= (mScreenHeight / NOISE_SIZE); - - LLGLEnable blend(GL_BLEND); - gGL.setSceneBlendType(LLRender::BT_REPLACE); - LLGLDepthTest depth(GL_FALSE); - + /// Draw a screen space quad drawOrthoQuad(QUAD_NOISE); gPostNightVisionProgram.unbind(); @@ -291,9 +283,6 @@ void LLPostProcess::applyGaussBlurShader(void) gGL.getTexUnit(0)->bind(mSceneRenderTexture); - LLGLEnable blend(GL_BLEND); - LLGLDepthTest depth(GL_FALSE); - gGL.setSceneBlendType(LLRender::BT_REPLACE); GLint horiz_pass = gPostGaussianBlurProgram.getUniformLocation("horizontalPass"); for(int i = 0;idisable(); checkError(); } @@ -382,7 +373,7 @@ void LLPostProcess::createScreenTexture() { gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, mSceneRenderTexture->getTexName()); LLImageGL::setManualImage(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGB, mScreenWidth, mScreenHeight, GL_RGB, GL_UNSIGNED_BYTE, &data[0]); - gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); + gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT); gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); } } diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 346f26eff..7fd3015e5 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -949,45 +949,21 @@ void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor } // Draw gray and white checkerboard with black border -void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha) +void gl_rect_2d_checkerboard(const LLRect& parent_screen_rect, const LLRect& rect, GLfloat alpha) { - // Initialize the first time this is called. - const S32 PIXELS = 32; - static GLubyte checkerboard[PIXELS * PIXELS]; - static BOOL first = TRUE; - if( first ) - { - for( S32 i = 0; i < PIXELS; i++ ) - { - for( S32 j = 0; j < PIXELS; j++ ) - { - checkerboard[i * PIXELS + j] = ((i & 1) ^ (j & 1)) * 0xFF; - } - } - first = FALSE; - } + //Already reffed in LLImageList via uuid_ui_image_map_t mUIImages. Don't use LLPointer here! + static LLUIImage* checkboard_image = LLUI::getUIImage("checkerboard.tga"); + static F32 image_width = checkboard_image->getWidth(); + static F32 image_height = checkboard_image->getHeight(); + + F32 scale_x = rect.getWidth() / image_width; + F32 scale_y = rect.getHeight() / image_height; + F32 offs_x = (parent_screen_rect.mLeft + rect.mLeft) / image_width; + F32 offs_y = (parent_screen_rect.mBottom + rect.mBottom) / image_height; + LLRectf uv_rect(offs_x,offs_y+scale_y,offs_x+scale_x,offs_y); + + gl_draw_scaled_image(rect.mLeft,rect.mBottom,rect.getWidth(),rect.getHeight(),checkboard_image->getImage(), UI_VERTEX_COLOR, uv_rect); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - - // ...white squares - gGL.color4f( 1.f, 1.f, 1.f, alpha ); - gl_rect_2d(rect); - - // ...gray squares - gGL.color4f( .7f, .7f, .7f, alpha ); - gGL.flush(); - - if (!LLGLSLShader::sNoFixedFunction) - { //polygon stipple is deprecated - glPolygonStipple( checkerboard ); - - LLGLEnable polygon_stipple(GL_POLYGON_STIPPLE); - gl_rect_2d(rect); - } - else - { - gl_rect_2d(rect); - } gGL.flush(); } diff --git a/indra/llui/llui.h b/indra/llui/llui.h index 81dd94863..3c31ed27b 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -78,7 +78,7 @@ void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LL void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset = 0, BOOL filled = TRUE ); void gl_rect_2d(const LLRect& rect, BOOL filled = TRUE ); void gl_rect_2d(const LLRect& rect, const LLColor4& color, BOOL filled = TRUE ); -void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha = 1.0f); +void gl_rect_2d_checkerboard(const LLRect& parent_screen_rect, const LLRect& rect, GLfloat alpha = 1.0f); void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index bd1e5a28f..39b74df92 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -537,6 +537,7 @@ set(viewer_SOURCE_FILES rlvfloaterbehaviour.cpp rlvviewer2.cpp shcommandhandler.cpp + shfloatermediaticker.cpp ) # This gets renamed in the packaging step @@ -1019,6 +1020,7 @@ set(viewer_HEADER_FILES rlvfloaterbehaviour.h rlvviewer2.h shcommandhandler.h + shfloatermediaticker.h ) source_group("CMake Rules" FILES ViewerInstall.cmake) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index a427d608e..b9c6cae29 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -13391,7 +13391,7 @@ Type Boolean Value - 1 + 0 UseNewWalkRun diff --git a/indra/newview/app_settings/settings_sh.xml b/indra/newview/app_settings/settings_sh.xml index d1c5f640b..db1e8490f 100644 --- a/indra/newview/app_settings/settings_sh.xml +++ b/indra/newview/app_settings/settings_sh.xml @@ -1,6 +1,35 @@ + + SHShowMediaTicker + + Comment + Enable media ticker tool for supported audio libraries + Persist + 1 + Type + Boolean + Value + 0 + + SHMediaTickerRect + + Comment + Rectangle for media ticker + Persist + 1 + Type + Rect + Value + + 200 + 82 + 456 + 50 + + + SHEnableFMODExProfiler Comment diff --git a/indra/newview/floatersculptpreview.cpp b/indra/newview/floatersculptpreview.cpp index 8963abfa8..09356154d 100644 --- a/indra/newview/floatersculptpreview.cpp +++ b/indra/newview/floatersculptpreview.cpp @@ -259,7 +259,7 @@ void LLFloaterSculptPreview::draw() if (selected <= 0) { - gl_rect_2d_checkerboard(mPreviewRect); + gl_rect_2d_checkerboard(getScreenRect(),mPreviewRect); LLGLDisable gls_alpha(GL_ALPHA_TEST); if(mImagep.notNull()) diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index 8f22b1c5e..06d890209 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -33,6 +33,7 @@ ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1 ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1 ATI All-in-Wonder PCI-E .*ATI.*All-in-Wonder.*PCI-E.* 1 1 ATI All-in-Wonder Radeon .*ATI.*All-in-Wonder Radeon.* 0 1 +ATI ASUS ARES .*ATI.*ASUS.*ARES.* 3 1 ATI ASUS A9xxx .*ATI.*ASUS.*A9.* 1 1 ATI ASUS AH24xx .*ATI.*ASUS.*AH24.* 1 1 ATI ASUS AH26xx .*ATI.*ASUS.*AH26.* 3 1 @@ -44,25 +45,36 @@ ATI ASUS AX5xx .*ATI.*ASUS.*AX5.* 1 1 ATI ASUS AX8xx .*ATI.*ASUS.*AX8.* 2 1 ATI ASUS EAH24xx .*ATI.*ASUS.*EAH24.* 2 1 ATI ASUS EAH26xx .*ATI.*ASUS.*EAH26.* 3 1 +ATI ASUS EAH29xx .*ATI.*ASUS.*EAH29.* 3 1 ATI ASUS EAH34xx .*ATI.*ASUS.*EAH34.* 1 1 ATI ASUS EAH36xx .*ATI.*ASUS.*EAH36.* 3 1 ATI ASUS EAH38xx .*ATI.*ASUS.*EAH38.* 3 1 ATI ASUS EAH43xx .*ATI.*ASUS.*EAH43.* 1 1 ATI ASUS EAH45xx .*ATI.*ASUS.*EAH45.* 1 1 ATI ASUS EAH48xx .*ATI.*ASUS.*EAH48.* 3 1 -ATI ASUS EAH57xx .*ATI.*ASUS.*EAH57.* 3 1 -ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 3 1 -ATI Radeon X1xxx .*ATI.*ASUS.*X1.* 2 1 -ATI Radeon X700 .*ATI.*ASUS.*X7.* 1 1 +ATI ASUS EAH57xx .*ATI.*ASUS.*EAH57.* 3 1 +ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 3 1 +ATI ASUS EAH6xxx .*ATI.*ASUS.*EAH6.* 3 1 +ATI ASUS Radeon X1xxx .*ATI.*ASUS.*X1.* 3 1 +ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1 +ATI Radeon X19xx .*ATI.*X19.* 3 1 +ATI Radeon X18xx .*ATI.*X18.* 3 1 +ATI Radeon X17xx .*ATI.*X17.* 2 1 +ATI Radeon X16xx .*ATI.*X16.* 2 1 +ATI Radeon X15xx .*ATI.*X15.* 2 1 +ATI Radeon X13xx .*ATI.*X13.* 1 1 +ATI Radeon X1xxx .*ATI.*X1.* 1 1 +ATI Radeon X2xxx .*ATI.*X2.* 1 1 ATI Radeon X500 .*ATI.*X5.* 1 1 -ATI Radeon X1300 .*ATI.*X13.* 1 1 -ATI Radeon X1600 .*ATI.*X16.* 1 1 -ATI Radeon X1900 .*ATI.*X19.* 1 1 ATI Display Adapter .*ATI.*display adapter.* 0 1 ATI FireGL 5200 .*ATI.*FireGL V52.* 0 1 ATI FireGL 5xxx .*ATI.*FireGL V5.* 1 1 -ATI FireGL .*ATI.*Fire.*GL.* 0 1 -ATI FireMV .*ATI.*FireMV.* 0 0 +ATI FireGL .*ATI.*Fire.*GL.* 0 1 +ATI FirePro M3900 .*ATI.*FirePro.*M39.* 2 1 +ATI FirePro M5800 .*ATI.*FirePro.*M58.* 3 1 +ATI FirePro M7740 .*ATI.*FirePro.*M77.* 3 1 +ATI FirePro M7820 .*ATI.*FirePro.*M78.* 3 1 +ATI FireMV .*ATI.*FireMV.* 0 1 ATI Generic .*ATI.*Generic.* 0 0 ATI Hercules 9800 .*ATI.*Hercules.*9800.* 1 1 ATI IGP 340M .*ATI.*IGP.*340M.* 0 0 @@ -71,33 +83,42 @@ ATI M54 .*ATI.*M54.* 1 1 ATI M56 .*ATI.*M56.* 1 1 ATI M71 .*ATI.*M71.* 1 1 ATI M72 .*ATI.*M72.* 1 1 -ATI M76 .*ATI.*M76.* 3 1 -ATI Mobility Radeon 4100 .*ATI.*Mobility *41.* 0 1 +ATI M76 .*ATI.*M76.* 3 1 +ATI Radeon HD 64xx .*ATI.*AMD Radeon.* HD [67]4..[MG] 3 1 +ATI Radeon HD 65xx .*ATI.*AMD Radeon.* HD [67]5..[MG] 3 1 +ATI Radeon HD 66xx .*ATI.*AMD Radeon.* HD [67]6..[MG] 3 1 +ATI Mobility Radeon 4100 .*ATI.*Mobility.*41.. 1 1 ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 ATI Mobility Radeon 9800 .*ATI.*Mobility.*98.* 1 1 -ATI Mobility Radeon 9700 .*ATI.*Mobility.*97.* 1 1 -ATI Mobility Radeon 9600 .*ATI.*Mobility.*96.* 0 1 -ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD.*23.* 1 1 -ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD.*24.* 1 1 -ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD.*26.* 2 1 -ATI Mobility Radeon HD 2700 .*ATI.*Mobility.*HD.*27.* 3 1 -ATI Mobility Radeon HD 3100 .*ATI.*Mobility.*HD.*31.* 1 1 -ATI Mobility Radeon HD 3200 .*ATI.*Mobility.*HD.*32.* 1 1 -ATI Mobility Radeon HD 3400 .*ATI.*Mobility.*HD.*34.* 2 1 -ATI Mobility Radeon HD 3600 .*ATI.*Mobility.*HD.*36.* 2 1 -ATI Mobility Radeon HD 3800 .*ATI.*Mobility.*HD.*38.* 3 1 -ATI Mobility Radeon HD 4200 .*ATI.*Mobility.*HD.*42.* 2 1 -ATI Mobility Radeon HD 4300 .*ATI.*Mobility.*HD.*43.* 2 1 -ATI Mobility Radeon HD 4500 .*ATI.*Mobility.*HD.*45.* 3 1 -ATI Mobility Radeon HD 4600 .*ATI.*Mobility.*HD.*46.* 3 1 -ATI Mobility Radeon HD 4800 .*ATI.*Mobility.*HD.*48.* 3 1 -ATI Mobility Radeon HD 5100 .*ATI.*Mobility *HD *51.* 2 1 -ATI Mobility Radeon HD 5300 .*ATI.*Mobility *HD *53.* 2 1 -ATI Mobility Radeon HD 5400 .*ATI.*Mobility *HD *54.* 2 1 -ATI Mobility Radeon HD 5500 .*ATI.*Mobility *HD *55.* 2 1 -ATI Mobility Radeon HD 5600 .*ATI.*Mobility *HD *56.* 2 1 -ATI Mobility Radeon HD 5700 .*ATI.*Mobility *HD *57.* 3 1 +ATI Mobility Radeon 9700 .*ATI.*Mobility.*97.* 1 1 +ATI Mobility Radeon 9600 .*ATI.*Mobility.*96.* 0 1 +ATI Mobility Radeon HD 530v .*ATI.*Mobility.*HD *530v.* 1 1 +ATI Mobility Radeon HD 540v .*ATI.*Mobility.*HD *540v.* 2 1 +ATI Mobility Radeon HD 545v .*ATI.*Mobility.*HD *545v.* 2 1 +ATI Mobility Radeon HD 550v .*ATI.*Mobility.*HD *550v.* 2 1 +ATI Mobility Radeon HD 560v .*ATI.*Mobility.*HD *560v.* 2 1 +ATI Mobility Radeon HD 565v .*ATI.*Mobility.*HD *565v.* 2 1 +ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD *23.* 1 1 +ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD *24.* 1 1 +ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD *26.* 3 1 +ATI Mobility Radeon HD 2700 .*ATI.*Mobility.*HD *27.* 3 1 +ATI Mobility Radeon HD 3100 .*ATI.*Mobility.*HD *31.* 0 1 +ATI Mobility Radeon HD 3200 .*ATI.*Mobility.*HD *32.* 0 1 +ATI Mobility Radeon HD 3400 .*ATI.*Mobility.*HD *34.* 2 1 +ATI Mobility Radeon HD 3600 .*ATI.*Mobility.*HD *36.* 3 1 +ATI Mobility Radeon HD 3800 .*ATI.*Mobility.*HD *38.* 3 1 +ATI Mobility Radeon HD 4200 .*ATI.*Mobility.*HD *42.* 2 1 +ATI Mobility Radeon HD 4300 .*ATI.*Mobility.*HD *43.* 2 1 +ATI Mobility Radeon HD 4500 .*ATI.*Mobility.*HD *45.* 3 1 +ATI Mobility Radeon HD 4600 .*ATI.*Mobility.*HD *46.* 3 1 +ATI Mobility Radeon HD 4800 .*ATI.*Mobility.*HD *48.* 3 1 +ATI Mobility Radeon HD 5100 .*ATI.*Mobility.*HD *51.* 3 1 +ATI Mobility Radeon HD 5300 .*ATI.*Mobility.*HD *53.* 3 1 +ATI Mobility Radeon HD 5400 .*ATI.*Mobility.*HD *54.* 3 1 +ATI Mobility Radeon HD 5500 .*ATI.*Mobility.*HD *55.* 3 1 +ATI Mobility Radeon HD 5600 .*ATI.*Mobility.*HD *56.* 3 1 +ATI Mobility Radeon HD 5700 .*ATI.*Mobility.*HD *57.* 3 1 ATI Mobility Radeon HD 5800 .*ATI.*Mobility *HD *58.* 3 1 ATI Mobility Radeon HD 6200 .*ATI.*Mobility.*HD *62.* 3 1 ATI Mobility Radeon HD 6300 .*ATI.*Mobility.*HD *63.* 3 1 @@ -107,6 +128,12 @@ ATI Mobility Radeon HD 6600M .*ATI.*Mobility.*HD *66.* 3 1 ATI Mobility Radeon HD 6700M .*ATI.*Mobility.*HD *67.* 3 1 ATI Mobility Radeon HD 6800M .*ATI.*Mobility.*HD *68.* 3 1 ATI Mobility Radeon HD 6900M .*ATI.*Mobility.*HD *69.* 3 1 +ATI Mobility Radeon HD 7400M .*ATI.*Mobility.*HD *74.* 3 1 +ATI Mobility Radeon HD 7500M .*ATI.*Mobility.*HD *75.* 3 1 +ATI Mobility Radeon HD 7600M .*ATI.*Mobility.*HD *76.* 3 1 +ATI Mobility Radeon HD 7700M .*ATI.*Mobility.*HD *77.* 3 1 +ATI Mobility Radeon HD 7800M .*ATI.*Mobility.*HD *78.* 3 1 +ATI Mobility Radeon HD 7900M .*ATI.*Mobility.*HD *79.* 3 1 ATI Mobility Radeon X1xxx .*ATI.*Mobility.*X1.* 0 1 ATI Mobility Radeon X2xxx .*ATI.*Mobility.*X2.* 0 1 ATI Mobility Radeon X3xx .*ATI.*Mobility.*X3.* 1 1 @@ -114,77 +141,140 @@ ATI Mobility Radeon X6xx .*ATI.*Mobility.*X6.* 1 1 ATI Mobility Radeon X7xx .*ATI.*Mobility.*X7.* 1 1 ATI Mobility Radeon Xxxx .*ATI.*Mobility.*X.* 0 1 ATI Mobility Radeon .*ATI.*Mobility.* 0 1 -ATI Radeon HD 2300 .*ATI.*Radeon HD 23.* 0 1 -ATI Radeon HD 2400 .*ATI.*Radeon HD.*24.* 1 1 -ATI Radeon HD 2600 .*ATI.*Radeon HD 26.* 2 1 -ATI Radeon HD 2900 .*ATI.*Radeon HD 29.* 3 1 -ATI Radeon HD 3000 .*ATI.*Radeon.*HD.*30.* 0 1 -ATI Radeon HD 3100 .*ATI.*Radeon.*HD.*31.* 1 1 -ATI Radeon HD 3200 .*ATI.*Radeon.*HD.*32.* 1 1 -ATI Radeon HD 3300 .*ATI.*Radeon HD.*33.* 1 1 -ATI Radeon HD 3400 .*ATI.*Radeon HD.*34.* 1 1 -ATI Radeon HD 3600 .*ATI.*Radeon HD.*36.* 3 1 -ATI Radeon HD 3800 .*ATI.*Radeon HD.*38.* 3 1 -ATI Radeon HD 4200 .*ATI.*Radeon HD *42.* 1 1 -ATI Radeon HD 4300 .*ATI.*Radeon HD 43.* 1 1 -ATI Radeon HD 4500 .*ATI.*Radeon HD 45.* 2 1 -ATI Radeon HD 4600 .*ATI.*Radeon HD 46.* 3 1 -ATI Radeon HD 4700 .*ATI.*Radeon HD *47.* 3 1 -ATI Radeon HD 4800 .*ATI.*Radeon.*HD.*48.* 3 1 -ATI Radeon HD 5400 .*ATI.*Radeon.*HD.*54.* 2 1 -ATI Radeon HD 5500 .*ATI.*Radeon.*HD.*55.* 2 1 -ATI Radeon HD 5600 .*ATI.*Radeon.*HD.*56.* 3 1 -ATI Radeon HD 5700 .*ATI.*Radeon.*HD.*57.* 3 1 -ATI Radeon HD 5800 .*ATI.*Radeon.*HD.*58.* 3 1 -ATI Radeon HD 5900 .*ATI.*Radeon.*HD.*59.* 3 1 -ATI Radeon HD 6200 .*ATI.*Radeon.*HD.*62.* 2 1 -ATI Radeon HD 6300M .*ATI.*Radeon.*HD.*6300M.* 2 1 -ATI Radeon HD 6300 .*ATI.*Radeon.*HD.*63.* 2 1 -ATI Radeon HD 6500M .*ATI.*Radeon.*HD.*6500M.* 2 1 -ATI Radeon HD 6500 .*ATI.*Radeon.*HD.*65.* 3 1 -ATI Radeon HD 6800 .*ATI.*Radeon.*HD.*68.* 3 1 -ATI Radeon HD 6900 .*ATI.*Radeon.*HD.*69.* 3 1 -ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 -ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1 -ATI Radeon 3000 .*ATI.*Radeon 30.* 0 1 -ATI Radeon 3100 .*ATI.*Radeon 31.* 1 1 -ATI Radeon 7xxx .*ATI.*Radeon 7.* 0 1 -ATI Radeon 8xxx .*ATI.*Radeon 8.* 0 1 -ATI Radeon 9000 .*ATI.*Radeon 90.* 0 1 -ATI Radeon 9100 .*ATI.*Radeon 91.* 0 1 -ATI Radeon 9200 .*ATI.*Radeon 92.* 0 1 -ATI Radeon 9500 .*ATI.*Radeon 95.* 0 1 -ATI Radeon 9600 .*ATI.*Radeon 96.* 0 1 -ATI Radeon 9700 .*ATI.*Radeon 97.* 1 1 -ATI Radeon 9800 .*ATI.*Radeon 98.* 1 1 +ATI Radeon HD 2300 .*ATI.*Radeon HD *23.. 0 1 +ATI Radeon HD 2400 .*ATI.*Radeon HD *24.. 1 1 +ATI Radeon HD 2600 .*ATI.*Radeon HD *26.. 2 1 +ATI Radeon HD 2900 .*ATI.*Radeon HD *29.. 3 1 +ATI Radeon HD 3000 .*ATI.*Radeon HD *30.. 0 1 +ATI Radeon HD 3100 .*ATI.*Radeon HD *31.. 1 1 +ATI Radeon HD 3200 .*ATI.*Radeon HD *32.. 1 1 +ATI Radeon HD 3300 .*ATI.*Radeon HD *33.. 1 1 +ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 1 1 +ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 1 1 +ATI Radeon HD 3600 .*ATI.*Radeon HD *36.. 3 1 +ATI Radeon HD 3700 .*ATI.*Radeon HD *37.. 3 1 +ATI Radeon HD 3800 .*ATI.*Radeon HD *38.. 3 1 +ATI Radeon HD 4100 .*ATI.*Radeon HD *41.. 1 1 +ATI Radeon HD 4200 .*ATI.*Radeon HD *42.. 1 1 +ATI Radeon HD 4300 .*ATI.*Radeon HD *43.. 1 1 +ATI Radeon HD 4400 .*ATI.*Radeon HD *44.. 1 1 +ATI Radeon HD 4500 .*ATI.*Radeon HD *45.. 3 1 +ATI Radeon HD 4600 .*ATI.*Radeon HD *46.. 3 1 +ATI Radeon HD 4700 .*ATI.*Radeon HD *47.. 3 1 +ATI Radeon HD 4800 .*ATI.*Radeon HD *48.. 3 1 +ATI Radeon HD 5400 .*ATI.*Radeon HD *54.. 3 1 +ATI Radeon HD 5500 .*ATI.*Radeon HD *55.. 3 1 +ATI Radeon HD 5600 .*ATI.*Radeon HD *56.. 3 1 +ATI Radeon HD 5700 .*ATI.*Radeon HD *57.. 3 1 +ATI Radeon HD 5800 .*ATI.*Radeon HD *58.. 3 1 +ATI Radeon HD 5900 .*ATI.*Radeon HD *59.. 3 1 +ATI Radeon HD 6200 .*ATI.*Radeon HD *62.. 3 1 +ATI Radeon HD 6300M .*ATI.*Radeon.*HD.*6300M.* 3 1 +ATI Radeon HD 6300 .*ATI.*Radeon HD *63.. 3 1 +ATI Radeon HD 6400 .*ATI.*Radeon HD *64.. 3 1 +ATI Radeon HD 6500M .*ATI.*Radeon.*HD.*6500M.* 3 1 +ATI Radeon HD 6500 .*ATI.*Radeon HD *65.. 3 1 +ATI Radeon HD 6600 .*ATI.*Radeon HD *66.. 3 1 +ATI Radeon HD 6700 .*ATI.*Radeon HD *67.. 3 1 +ATI Radeon HD 6800 .*ATI.*Radeon HD *68.. 3 1 +ATI Radeon HD 6900 .*ATI.*Radeon HD *69.. 3 1 +ATI Radeon HD 7400 .*ATI.*Radeon HD *74.. 3 1 +ATI Radeon HD 7500 .*ATI.*Radeon HD *75.. 3 1 +ATI Radeon HD 7600 .*ATI.*Radeon HD *76.. 3 1 +ATI Radeon HD 7700 .*ATI.*Radeon HD *77.. 3 1 +ATI Radeon HD 7800 .*ATI.*Radeon HD *78.. 3 1 +ATI Radeon HD 7900 .*ATI.*Radeon HD *79.. 3 1 +ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 +ATI Radeon 2100 .*ATI.*Radeon 21.. 0 1 +ATI Radeon 3000 .*ATI.*Radeon 30.. 0 1 +ATI Radeon 3100 .*ATI.*Radeon 31.. 1 1 +ATI Radeon 5xxx .*ATI.*Radeon 5... 3 1 +ATI Radeon 7xxx .*ATI.*Radeon 7... 0 1 +ATI Radeon 8xxx .*ATI.*Radeon 8... 0 1 +ATI Radeon 9000 .*ATI.*Radeon 90.. 0 1 +ATI Radeon 9100 .*ATI.*Radeon 91.. 0 1 +ATI Radeon 9200 .*ATI.*Radeon 92.. 0 1 +ATI Radeon 9500 .*ATI.*Radeon 95.. 0 1 +ATI Radeon 9600 .*ATI.*Radeon 96.. 0 1 +ATI Radeon 9700 .*ATI.*Radeon 97.. 1 1 +ATI Radeon 9800 .*ATI.*Radeon 98.. 1 1 ATI Radeon RV250 .*ATI.*RV250.* 0 1 ATI Radeon RV600 .*ATI.*RV6.* 1 1 ATI Radeon RX700 .*ATI.*RX70.* 1 1 ATI Radeon RX800 .*ATI.*Radeon *RX80.* 2 1 +ATI RS880M .*ATI.*RS880M 1 1 ATI Radeon RX9550 .*ATI.*RX9550.* 1 1 ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0 ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1 ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1 ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1 -ATI Radeon X1400 .*ATI.*Radeon X14.* 1 1 -ATI Radeon X1500 .*ATI.*Radeon X15.* 1 1 +ATI Radeon X1400 .*ATI.*Radeon ?X14.* 1 1 +ATI Radeon X1500 .*ATI.*Radeon ?X15.* 1 1 ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1 -ATI Radeon X1700 .*ATI.*Radeon X17.* 1 1 -ATI Radeon X1800 .*ATI.*Radeon X18.* 3 1 -ATI Radeon X1900 .*ATI.*Radeon X19.* 3 1 -ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1 -ATI Radeon X400 .*ATI.*Radeon X4.* 0 1 -ATI Radeon X500 .*ATI.*Radeon X5.* 0 1 -ATI Radeon X600 .*ATI.*Radeon X6.* 1 1 -ATI Radeon X700 .*ATI.*Radeon X7.* 1 1 -ATI Radeon X800 .*ATI.*Radeon X8.* 2 1 -ATI Radeon X900 .*ATI.*Radeon X9.* 2 1 -ATI Radeon Xpress .*ATI.*Radeon Xpress.* 0 0 -ATI Rage 128 .*ATI.*Rage 128.* 0 1 -ATI RV250 .*ATI.*RV250.* 0 1 -ATI RV380 .*ATI.*RV380.* 0 1 -ATI RV530 .*ATI.*RV530.* 1 1 -ATI RX700 .*ATI.*RX700.* 1 1 +ATI Radeon X1700 .*ATI.*Radeon ?X17.* 1 1 +ATI Radeon X1800 .*ATI.*Radeon ?X18.* 3 1 +ATI Radeon X1900 .*ATI.*Radeon ?X19.* 3 1 +ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1 +ATI Radeon X400 .*ATI.*Radeon ?X4.* 0 1 +ATI Radeon X500 .*ATI.*Radeon ?X5.* 0 1 +ATI Radeon X600 .*ATI.*Radeon ?X6.* 1 1 +ATI Radeon X700 .*ATI.*Radeon ?X7.* 1 1 +ATI Radeon X800 .*ATI.*Radeon ?X8.* 2 1 +ATI Radeon X900 .*ATI.*Radeon ?X9.* 2 1 +ATI Radeon Xpress .*ATI.*Radeon Xpress.* 0 1 +ATI Rage 128 .*ATI.*Rage 128.* 0 1 +ATI R350 (9800) .*R350.* 1 1 +ATI R580 (X1900) .*R580.* 3 1 +ATI RC410 (Xpress 200) .*RC410.* 0 0 +ATI RS48x (Xpress 200x) .*RS48.* 0 0 +ATI RS600 (Xpress 3200) .*RS600.* 0 0 +ATI RV350 (9600) .*RV350.* 0 1 +ATI RV370 (X300) .*RV370.* 0 1 +ATI RV410 (X700) .*RV410.* 1 1 +ATI RV515 .*RV515.* 1 1 +ATI RV570 (X1900 GT/PRO) .*RV570.* 3 1 +ATI RV380 .*RV380.* 0 1 +ATI RV530 .*RV530.* 1 1 +ATI RX480 (Xpress 200P) .*RX480.* 0 1 +ATI RX700 .*RX700.* 1 1 +AMD ANTILLES (HD 6990) .*(AMD|ATI).*Antilles.* 3 1 +AMD BARTS (HD 6800) .*(AMD|ATI).*Barts.* 3 1 +AMD CAICOS (HD 6400) .*(AMD|ATI).*Caicos.* 3 1 +AMD CAYMAN (HD 6900) .*(AMD|ATI).*(Cayman|CAYMAM).* 3 1 +AMD CEDAR (HD 5450) .*(AMD|ATI).*Cedar.* 2 1 +AMD CYPRESS (HD 5800) .*(AMD|ATI).*Cypress.* 3 1 +AMD HEMLOCK (HD 5970) .*(AMD|ATI).*Hemlock.* 3 1 +AMD JUNIPER (HD 5700) .*(AMD|ATI).*Juniper.* 3 1 +AMD PARK .*(AMD|ATI).*Park.* 3 1 +AMD REDWOOD (HD 5500/5600) .*(AMD|ATI).*Redwood.* 3 1 +AMD TURKS (HD 6500/6600) .*(AMD|ATI).*Turks.* 3 1 +AMD RS780 (HD 3200) .*RS780.* 0 1 +AMD RS880 (HD 4200) .*RS880.* 1 1 +AMD RV610 (HD 2400) .*RV610.* 1 1 +AMD RV620 (HD 3400) .*RV620.* 1 1 +AMD RV630 (HD 2600) .*RV630.* 2 1 +AMD RV635 (HD 3600) .*RV635.* 3 1 +AMD RV670 (HD 3800) .*RV670.* 3 1 +AMD R680 (HD 3870 X2) .*R680.* 3 1 +AMD R700 (HD 4800 X2) .*R700.* 3 1 +AMD RV710 (HD 4300) .*RV710.* 1 1 +AMD RV730 (HD 4600) .*RV730.* 3 1 +AMD RV740 (HD 4700) .*RV740.* 3 1 +AMD RV770 (HD 4800) .*RV770.* 3 1 +AMD RV790 (HD 4800) .*RV790.* 3 1 +ATI 760G/Radeon 3000 .*ATI.*AMD 760G.* 1 1 +ATI 780L/Radeon 3000 .*ATI.*AMD 780L.* 1 1 +ATI Radeon DDR .*ATI.*Radeon ?DDR.* 0 1 +ATI FirePro 2000 .*ATI.*FirePro 2.* 1 1 +ATI FirePro 3000 .*ATI.*FirePro V3.* 1 1 +ATI FirePro 4000 .*ATI.*FirePro V4.* 2 1 +ATI FirePro 5000 .*ATI.*FirePro V5.* 3 1 +ATI FirePro 7000 .*ATI.*FirePro V7.* 3 1 +ATI FirePro M .*ATI.*FirePro M.* 3 1 +ATI Technologies .*ATI *Technologies.* 0 1 +// This entry is last to work around the "R300" driver problem. +ATI R300 (9700) .*R300.* 1 1 +ATI Radeon .*ATI.*(Diamond|Radeon).* 0 1 Intel X3100 .*Intel.*X3100.* 0 1 Intel 830M .*Intel.*830M 0 0 Intel 845G .*Intel.*845G 0 0 @@ -214,97 +304,105 @@ Intel Pineview .*Intel.*Pineview.* 0 1 Intel Springdale .*Intel.*Springdale.* 0 0 Intel HD Graphics 2000 .*Intel.*HD2000.* 1 1 Intel HD Graphics 3000 .*Intel.*HD3000.* 2 1 -Matrox .*Matrox.* 0 0 -Mesa .*Mesa.* 0 0 -NVIDIA 205 .*NVIDIA.*GeForce.*20.* 2 1 -NVIDIA 210 .*NVIDIA.*GeForce.*21.* 2 1 -NVIDIA 315M .*NVIDIA.*GeForce 315M.* 0 1 -NVIDIA 310M .*NVIDIA.*GeForce 310M.* 0 1 -NVIDIA 310 .*NVIDIA.*GeForce 310.* 0 1 -NVIDIA 315 .*NVIDIA.*GeForce 310.* 0 1 -NVIDIA 320M .*NVIDIA.*GeForce 320M.* 0 1 -NVIDIA G 100M .*NVIDIA.*GeForce G *100M.* 0 1 -NVIDIA G 102M .*NVIDIA.*GeForce G *102M.* 0 1 -NVIDIA G 103M .*NVIDIA.*GeForce G *103M.* 0 1 -NVIDIA G 105M .*NVIDIA.*GeForce G *105M.* 0 1 -NVIDIA G 110M .*NVIDIA.*GeForce G *110M.* 0 1 -NVIDIA G 210M .*NVIDIA.*GeForce G *210M.* 0 1 -NVIDIA GT 120M .*NVIDIA.*GeForce.*GT.*120M.* 2 1 -NVIDIA GT 120 .*NVIDIA.*GeForce.*GT.*12.* 2 1 -NVIDIA GT 130M .*NVIDIA.*GeForce.*GT.*130M.* 2 1 -NVIDIA GT 130 .*NVIDIA.*GeForce.*GT.*13.* 2 1 -NVIDIA GT 140M .*NVIDIA.*GeForce.*GT.*140M.* 2 1 -NVIDIA GT 140 .*NVIDIA.*GeForce.*GT.*14.* 2 1 -NVIDIA GT 150M .*NVIDIA.*GeForce.*GT.*150M.* 2 1 -NVIDIA GT 150 .*NVIDIA.*GeForce.*GT.*15.* 2 1 -NVIDIA GT 160M .*NVIDIA.*GeForce.*GT.*160M.* 2 1 -NVIDIA GT 220M .*NVIDIA.*GeForce.*GT.*220M.* 2 1 -NVIDIA GT 220 .*NVIDIA.*GeForce.*GT.*22.* 2 1 -NVIDIA GT 230M .*NVIDIA.*GeForce.*GT.*230M.* 2 1 -NVIDIA GT 230 .*NVIDIA.*GeForce.*GT.*23.* 2 1 -NVIDIA GT 240M .*NVIDIA.*GeForce.*GT.*240M.* 2 1 -NVIDIA GT 240 .*NVIDIA.*GeForce.*GT.*24.* 2 1 -NVIDIA GT 250M .*NVIDIA.*GeForce.*GT.*250M.* 2 1 -NVIDIA GT 260M .*NVIDIA.*GeForce.*GT.*260M.* 2 1 -NVIDIA GT 320M .*NVIDIA.*GeForce.*GT.*320M.* 0 1 -NVIDIA GT 320 .*NVIDIA.*GeForce.*GT.*32.* 0 1 -NVIDIA GT 325M .*NVIDIA.*GeForce.*GT.*325M.* 0 1 -NVIDIA GT 330M .*NVIDIA.*GeForce.*GT.*330M.* 1 1 -NVIDIA GT 330 .*NVIDIA.*GeForce.*GT.*33.* 1 1 -NVIDIA GT 335M .*NVIDIA.*GeForce.*GT.*335M.* 1 1 -NVIDIA GT 340 .*NVIDIA.*GeForce.*GT.*34.* 1 1 -NVIDIA GT 415M .*NVIDIA.*GeForce.*GT.*415M.* 2 1 -NVIDIA GT 420M .*NVIDIA.*GeForce.*GT.*420M.* 2 1 -NVIDIA GT 420 .*NVIDIA.*GeForce.*GT.*42.* 2 1 -NVIDIA GT 425M .*NVIDIA.*GeForce.*GT.*425M.* 3 1 -NVIDIA GT 430 .*NVIDIA.*GeForce.*GT.*43.* 3 1 -NVIDIA GT 435M .*NVIDIA.*GeForce.*GT.*435M.* 3 1 -NVIDIA GT 440 .*NVIDIA.*GeForce.*GT.*44.* 3 1 -NVIDIA GT 445M .*NVIDIA.*GeForce.*GT.*445M.* 3 1 -NVIDIA GT 450 .*NVIDIA.*GeForce.*GT.*45.* 3 1 -NVIDIA GT 520 .*NVIDIA.*GeForce.*GT.*52.* 2 1 -NVIDIA GT 540M .*NVIDIA.*GeForce.*GT.*540M.* 3 1 -NVIDIA GT 540 .*NVIDIA.*GeForce.*GT.*54.* 3 1 -NVIDIA GTS 240 .*NVIDIA.*GeForce *GTS.*24.* 3 1 -NVIDIA GTS 250 .*NVIDIA.*GeForce.*GTS.*25.* 3 1 -NVIDIA GTS 260M .*NVIDIA.*GeForce.*GTS.*260M.* 3 1 -NVIDIA GTS 280M .*NVIDIA.*GeForce.*GTS.*280M.* 3 1 -NVIDIA GTS 285M .*NVIDIA.*GeForce.*GTS.*285M.* 3 1 -NVIDIA GTS 350M .*NVIDIA.*GeForce.*GTS.*350M.* 3 1 -NVIDIA GTS 360M .*NVIDIA.*GeForce.*GTS.*360M.* 3 1 -NVIDIA GTS 450 .*NVIDIA.*GeForce.*GTS.*45.* 3 1 -NVIDIA GTX 260 .*NVIDIA.*GeForce.*GTX.*26.* 3 1 -NVIDIA GTX 270 .*NVIDIA.*GeForce.*GTX.*27.* 3 1 -NVIDIA GTX 275 .*NVIDIA.*GeForce.*GTX.*27.* 3 1 -NVIDIA GTX 280 .*NVIDIA.*GeForce.*GTX.*28.* 3 1 -NVIDIA GTX 285 .*NVIDIA.*GeForce.*GTX.*28.* 3 1 -NVIDIA GTX 290 .*NVIDIA.*GeForce.*GTX.*29.* 3 1 -NVIDIA GTX 295 .*NVIDIA.*GeForce.*GTX.*29.* 3 1 -NVIDIA GTX 460M .*NVIDIA.*GeForce.*GTX.*460M.* 3 1 -NVIDIA GTX 460 .*NVIDIA.*GeForce.*GTX.*46.* 3 1 -NVIDIA GTX 465 .*NVIDIA.*GeForce.*GTX.*46.* 3 1 -NVIDIA GTX 470M .*NVIDIA.*GeForce.*GTX.*470M.* 3 1 -NVIDIA GTX 470 .*NVIDIA.*GeForce.*GTX.*47.* 3 1 -NVIDIA GTX 480M .*NVIDIA.*GeForce.*GTX.*480M.* 3 1 -NVIDIA GTX 480 .*NVIDIA.*GeForce.*GTX.*48.* 3 1 -NVIDIA GTX 560 .*NVIDIA.*GeForce.*GTX.*56.* 3 1 -NVIDIA GTX 570 .*NVIDIA.*GeForce.*GTX.*57.* 3 1 -NVIDIA GTX 580M .*NVIDIA.*GeForce.*GTX.*580M.* 3 1 -NVIDIA GTX 580 .*NVIDIA.*GeForce.*GTX.*58.* 3 1 -NVIDIA C51 .*NVIDIA.*C51.* 0 1 -NVIDIA G72 .*NVIDIA.*G72.* 1 1 +Matrox .*Matrox.* 0 0 +Mesa .*Mesa.* 0 0 +NVIDIA 205 .*NVIDIA .*GeForce 205.* 2 1 +NVIDIA 210 .*NVIDIA .*GeForce 210.* 2 1 +NVIDIA 310M .*NVIDIA .*GeForce 310M.* 1 1 +NVIDIA 310 .*NVIDIA .*GeForce 310.* 3 1 +NVIDIA 315M .*NVIDIA .*GeForce 315M.* 2 1 +NVIDIA 315 .*NVIDIA .*GeForce 315.* 3 1 +NVIDIA 320M .*NVIDIA .*GeForce 320M.* 2 1 +NVIDIA G100M .*NVIDIA .*100M.* 0 1 +NVIDIA G100 .*NVIDIA .*100.* 0 1 +NVIDIA G102M .*NVIDIA .*102M.* 0 1 +NVIDIA G103M .*NVIDIA .*103M.* 0 1 +NVIDIA G105M .*NVIDIA .*105M.* 0 1 +NVIDIA G 110M .*NVIDIA .*110M.* 0 1 +NVIDIA G 120M .*NVIDIA .*120M.* 1 1 +NVIDIA G 200 .*NVIDIA .*200(M)?.* 0 1 +NVIDIA G 205M .*NVIDIA .*205(M)?.* 0 1 +NVIDIA G 210 .*NVIDIA .*210(M)?.* 1 1 +NVIDIA 305M .*NVIDIA .*305(M)?.* 1 1 +NVIDIA G 310M .*NVIDIA .*310(M)?.* 2 1 +NVIDIA G 315 .*NVIDIA .*315(M)?.* 2 1 +NVIDIA G 320M .*NVIDIA .*320(M)?.* 2 1 +NVIDIA G 405 .*NVIDIA .*405(M)?.* 1 1 +NVIDIA G 410M .*NVIDIA .*410(M)?.* 1 1 +NVIDIA GT 120M .*NVIDIA .*GT *120(M)?.* 2 1 +NVIDIA GT 120 .*NVIDIA .*GT.*120 2 1 +NVIDIA GT 130M .*NVIDIA .*GT *130(M)?.* 2 1 +NVIDIA GT 140M .*NVIDIA .*GT *140(M)?.* 2 1 +NVIDIA GT 150M .*NVIDIA .*GT(S)? *150(M)?.* 2 1 +NVIDIA GT 160M .*NVIDIA .*GT *160(M)?.* 2 1 +NVIDIA GT 220M .*NVIDIA .*GT *220(M)?.* 2 1 +NVIDIA GT 230M .*NVIDIA .*GT *230(M)?.* 2 1 +NVIDIA GT 240M .*NVIDIA .*GT *240(M)?.* 2 1 +NVIDIA GT 250M .*NVIDIA .*GT *250(M)?.* 2 1 +NVIDIA GT 260M .*NVIDIA .*GT *260(M)?.* 2 1 +NVIDIA GT 320M .*NVIDIA .*GT *320(M)?.* 2 1 +NVIDIA GT 325M .*NVIDIA .*GT *325(M)?.* 0 1 +NVIDIA GT 330M .*NVIDIA .*GT *330(M)?.* 3 1 +NVIDIA GT 335M .*NVIDIA .*GT *335(M)?.* 1 1 +NVIDIA GT 340M .*NVIDIA .*GT *340(M)?.* 2 1 +NVIDIA GT 415M .*NVIDIA .*GT *415(M)?.* 2 1 +NVIDIA GT 420M .*NVIDIA .*GT *420(M)?.* 2 1 +NVIDIA GT 425M .*NVIDIA .*GT *425(M)?.* 3 1 +NVIDIA GT 430M .*NVIDIA .*GT *430(M)?.* 3 1 +NVIDIA GT 435M .*NVIDIA .*GT *435(M)?.* 3 1 +NVIDIA GT 440M .*NVIDIA .*GT *440(M)?.* 3 1 +NVIDIA GT 445M .*NVIDIA .*GT *445(M)?.* 3 1 +NVIDIA GT 450M .*NVIDIA .*GT *450(M)?.* 3 1 +NVIDIA GT 520M .*NVIDIA .*GT *52.(M)?.* 3 1 +NVIDIA GT 530M .*NVIDIA .*GT *530(M)?.* 3 1 +NVIDIA GT 540M .*NVIDIA .*GT *54.(M)?.* 3 1 +NVIDIA GT 550M .*NVIDIA .*GT *550(M)?.* 3 1 +NVIDIA GT 555M .*NVIDIA .*GT *555(M)?.* 3 1 +NVIDIA GTS 160M .*NVIDIA .*GT(S)? *160(M)?.* 2 1 +NVIDIA GTS 240 .*NVIDIA .*GTS *24.* 3 1 +NVIDIA GTS 250 .*NVIDIA .*GTS *25.* 3 1 +NVIDIA GTS 350M .*NVIDIA .*GTS *350M.* 3 1 +NVIDIA GTS 360M .*NVIDIA .*GTS *360M.* 3 1 +NVIDIA GTS 360 .*NVIDIA .*GTS *360.* 3 1 +NVIDIA GTS 450 .*NVIDIA .*GTS *45.* 3 1 +NVIDIA GTX 260 .*NVIDIA .*GTX *26.* 3 1 +NVIDIA GTX 275 .*NVIDIA .*GTX *275.* 3 1 +NVIDIA GTX 270 .*NVIDIA .*GTX *27.* 3 1 +NVIDIA GTX 285 .*NVIDIA .*GTX *285.* 3 1 +NVIDIA GTX 280 .*NVIDIA .*GTX *280.* 3 1 +NVIDIA GTX 290 .*NVIDIA .*GTX *290.* 3 1 +NVIDIA GTX 295 .*NVIDIA .*GTX *295.* 3 1 +NVIDIA GTX 460M .*NVIDIA .*GTX *460M.* 3 1 +NVIDIA GTX 465 .*NVIDIA .*GTX *465.* 3 1 +NVIDIA GTX 460 .*NVIDIA .*GTX *46.* 3 1 +NVIDIA GTX 470M .*NVIDIA .*GTX *470M.* 3 1 +NVIDIA GTX 470 .*NVIDIA .*GTX *47.* 3 1 +NVIDIA GTX 480M .*NVIDIA .*GTX *480M.* 3 1 +NVIDIA GTX 485M .*NVIDIA .*GTX *485M.* 3 1 +NVIDIA GTX 480 .*NVIDIA .*GTX *48.* 3 1 +NVIDIA GTX 530 .*NVIDIA .*GTX *53.* 3 1 +NVIDIA GTX 550 .*NVIDIA .*GTX *55.* 3 1 +NVIDIA GTX 560 .*NVIDIA .*GTX *56.* 3 1 +NVIDIA GTX 570 .*NVIDIA .*GTX *57.* 3 1 +NVIDIA GTX 580M .*NVIDIA .*GTX *580M.* 3 1 +NVIDIA GTX 580 .*NVIDIA .*GTX *58.* 3 1 +NVIDIA GTX 590 .*NVIDIA .*GTX *59.* 3 1 +NVIDIA C51 .*NVIDIA .*C51.* 0 1 +NVIDIA G72 .*NVIDIA .*G72.* 1 1 NVIDIA G73 .*NVIDIA.*G73.* 1 1 -NVIDIA G84 .*NVIDIA.*G84.* 3 1 +NVIDIA G84 .*NVIDIA .*G84.* 2 1 NVIDIA G86 .*NVIDIA.*G86.* 3 1 NVIDIA G92 .*NVIDIA.*G92.* 3 1 -NVIDIA GeForce .*GeForce 256.* 0 0 -NVIDIA GeForce 2 .*GeForce2.* 0 1 -NVIDIA GeForce 3 .*GeForce3.* 0 1 -NVIDIA GeForce 4 Go .*NVIDIA.*GeForce4.*Go.* 0 1 -NVIDIA GeForce 4 MX .*NVIDIA.*GeForce4 MX.* 0 1 -NVIDIA GeForce 4 PCX .*NVIDIA.*GeForce4 PCX.* 0 1 -NVIDIA GeForce 4 Ti .*NVIDIA.*GeForce4 Ti.* 0 1 -NVIDIA GeForce 6100 .*NVIDIA.*GeForce 61.* 0 1 +NVIDIA GeForce .*GeForce 256.* 0 0 +NVIDIA GeForce 2 .*GeForce ?2 ?.* 0 1 +NVIDIA GeForce 3 .*GeForce ?3 ?.* 0 1 +NVIDIA GeForce 3 Ti .*GeForce ?3 Ti.* 0 1 +NVIDIA GeForce 4 .*NVIDIA .*GeForce ?4.* 0 1 +NVIDIA GeForce 4 Go .*NVIDIA .*GeForce ?4.*Go.* 0 1 +NVIDIA GeForce 4 MX .*NVIDIA .*GeForce ?4 MX.* 0 1 +NVIDIA GeForce 4 PCX .*NVIDIA .*GeForce ?4 PCX.* 0 1 +NVIDIA GeForce 4 Ti .*NVIDIA .*GeForce ?4 Ti.* 0 1 +NVIDIA GeForce 6100 .*NVIDIA .*GeForce 61.* 0 1 NVIDIA GeForce 6200 .*NVIDIA.*GeForce 62.* 0 1 NVIDIA GeForce 6500 .*NVIDIA.*GeForce 65.* 0 1 NVIDIA GeForce 6600 .*NVIDIA.*GeForce 66.* 1 1 @@ -363,7 +461,8 @@ NVIDIA GeForce FX Go5500 .*NVIDIA.*GeForce FX Go55.* 0 1 NVIDIA GeForce FX Go5600 .*NVIDIA.*GeForce FX Go56.* 0 1 NVIDIA GeForce FX Go5700 .*NVIDIA.*GeForce FX Go57.* 1 1 NVIDIA GeForce FX Go5800 .*NVIDIA.*GeForce FX Go58.* 1 1 -NVIDIA GeForce FX Go5900 .*NVIDIA.*GeForce FX Go59.* 1 1 +NVIDIA GeForce FX Go5900 .*NVIDIA .*GeForce FX Go59.* 1 1 +NVIDIA GeForce FX Go5xxx .*NVIDIA .*GeForce FX Go.* 0 1 NVIDIA GeForce Go 6100 .*NVIDIA.*GeForce Go 61.* 0 1 NVIDIA GeForce Go 6200 .*NVIDIA.*GeForce Go 62.* 0 1 NVIDIA GeForce Go 6400 .*NVIDIA.*GeForce Go 64.* 1 1 @@ -371,70 +470,102 @@ NVIDIA GeForce Go 6500 .*NVIDIA.*GeForce Go 65.* 1 1 NVIDIA GeForce Go 6600 .*NVIDIA.*GeForce Go 66.* 1 1 NVIDIA GeForce Go 6700 .*NVIDIA.*GeForce Go 67.* 1 1 NVIDIA GeForce Go 6800 .*NVIDIA.*GeForce Go 68.* 1 1 -NVIDIA GeForce Go 7200 .*NVIDIA.*GeForce Go 72.* 1 1 -NVIDIA GeForce Go 7300 .*NVIDIA.*GeForce Go 73.* 1 1 -NVIDIA GeForce Go 7300 LE .*NVIDIA.*GeForce Go 73.*LE.* 0 1 -NVIDIA GeForce Go 7400 .*NVIDIA.*GeForce Go 74.* 1 1 -NVIDIA GeForce Go 7600 .*NVIDIA.*GeForce Go 76.* 2 1 +NVIDIA GeForce Go 7200 .*NVIDIA .*GeForce Go 72.* 1 1 +NVIDIA GeForce Go 7300 LE .*NVIDIA .*GeForce Go 73.*LE.* 0 1 +NVIDIA GeForce Go 7300 .*NVIDIA .*GeForce Go 73.* 1 1 +NVIDIA GeForce Go 7400 .*NVIDIA .*GeForce Go 74.* 1 1 +NVIDIA GeForce Go 7600 .*NVIDIA .*GeForce Go 76.* 2 1 NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1 NVIDIA GeForce Go 7800 .*NVIDIA.*GeForce Go 78.* 2 1 -NVIDIA GeForce Go 7900 .*NVIDIA.*GeForce Go 79.* 2 1 -NVIDIA D9M .*D9M.* 1 1 -NVIDIA G84 .*G84.* 1 1 -NVIDIA G92 .*G92.* 3 1 -NVIDIA G94 .*G94.* 3 1 -NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 -NVIDIA ION .*NVIDIA ION.* 2 1 -NVIDIA ION 2 .*NVIDIA ION 2.* 2 1 -NVIDIA NB9M .*GeForce NB9M.* 1 1 -NVIDIA NB9P .*GeForce NB9P.* 1 1 -NVIDIA GeForce PCX .*GeForce PCX.* 0 1 -NVIDIA Generic .*NVIDIA.*Unknown.* 0 0 -NVIDIA NV17 .*GeForce NV17.* 0 1 -NVIDIA NV34 .*NVIDIA.*NV34.* 0 1 -NVIDIA NV35 .*NVIDIA.*NV35.* 0 1 -NVIDIA NV36 .*GeForce NV36.* 1 1 -NVIDIA NV43 .*NVIDIA.*NV43.* 1 1 -NVIDIA NV44 .*NVIDIA.*NV44.* 1 1 -NVIDIA nForce .*NVIDIA.*nForce.* 0 0 -NVIDIA MCP78 .*NVIDIA.*MCP78.* 1 1 -NVIDIA Quadro2 .*Quadro2.* 0 1 -NVIDIA Quadro4 .*Quadro4.* 0 1 +NVIDIA GeForce Go 7900 .*NVIDIA .*GeForce Go 79.* 2 1 +NVIDIA D9M .*NVIDIA .*D9M.* 1 1 +NVIDIA G94 .*NVIDIA .*G94.* 3 1 +NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 +NVIDIA ION 2 .*NVIDIA .*ION 2.* 2 1 +NVIDIA ION .*NVIDIA .*ION.* 2 1 +NVIDIA NB8M .*NVIDIA .*NB8M.* 1 1 +NVIDIA NB8P .*NVIDIA .*NB8P.* 2 1 +NVIDIA NB9E .*NVIDIA .*NB9E.* 3 1 +NVIDIA NB9M .*NVIDIA .*NB9M.* 1 1 +NVIDIA NB9P .*NVIDIA .*NB9P.* 2 1 +NVIDIA N10 .*NVIDIA .*N10.* 1 1 +NVIDIA GeForce PCX .*GeForce PCX.* 0 1 +NVIDIA Generic .*NVIDIA .*Unknown.* 0 0 +NVIDIA NV17 .*NVIDIA .*NV17.* 0 1 +NVIDIA NV34 .*NVIDIA .*NV34.* 0 1 +NVIDIA NV35 .*NVIDIA .*NV35.* 0 1 +NVIDIA NV36 .*NVIDIA .*NV36.* 1 1 +NVIDIA NV41 .*NVIDIA .*NV41.* 1 1 +NVIDIA NV43 .*NVIDIA .*NV43.* 1 1 +NVIDIA NV44 .*NVIDIA .*NV44.* 1 1 +NVIDIA nForce .*NVIDIA .*nForce.* 0 0 +NVIDIA MCP51 .*NVIDIA .*MCP51.* 1 1 +NVIDIA MCP61 .*NVIDIA .*MCP61.* 1 1 +NVIDIA MCP67 .*NVIDIA .*MCP67.* 1 1 +NVIDIA MCP68 .*NVIDIA .*MCP68.* 1 1 +NVIDIA MCP73 .*NVIDIA .*MCP73.* 1 1 +NVIDIA MCP77 .*NVIDIA .*MCP77.* 1 1 +NVIDIA MCP78 .*NVIDIA .*MCP78.* 1 1 +NVIDIA MCP79 .*NVIDIA .*MCP79.* 1 1 +NVIDIA MCP7A .*NVIDIA .*MCP7A.* 1 1 +NVIDIA Quadro2 .*Quadro2.* 0 1 +NVIDIA Quadro 1000M .*Quadro.*1000M.* 2 1 +NVIDIA Quadro 2000 M/D .*Quadro.*2000.* 3 1 +NVIDIA Quadro 3000M .*Quadro.*3000M.* 3 1 +NVIDIA Quadro 4000M .*Quadro.*4000M.* 3 1 +NVIDIA Quadro 4000 .*Quadro *4000.* 3 1 +NVIDIA Quadro 50x0 M .*Quadro.*50.0.* 3 1 +NVIDIA Quadro 6000 .*Quadro.*6000.* 3 1 +NVIDIA Quadro 400 .*Quadro.*400.* 2 1 +NVIDIA Quadro 600 .*Quadro.*600.* 2 1 +NVIDIA Quadro4 .*Quadro4.* 0 1 NVIDIA Quadro DCC .*Quadro DCC.* 0 1 -NVIDIA Quadro FX 1400 .*Quadro.*FX.*1400.* 1 1 -NVIDIA Quadro FX 1500 .*Quadro.*FX.*1500.* 1 1 -NVIDIA Quadro FX 1700 .*Quadro.*FX.*1700.* 2 1 -NVIDIA Quadro FX 1800 .*Quadro.*FX.*1800.* 2 1 -NVIDIA Quadro FX 3400 .*Quadro.*FX.*3400.* 1 1 -NVIDIA Quadro FX 3450 .*Quadro.*FX.*3450.* 1 1 -NVIDIA Quadro FX 3500 .*Quadro.*FX.*3500.* 1 1 -NVIDIA Quadro FX 3700 .*Quadro.*FX.*3700.* 2 1 -NVIDIA Quadro FX 3800 .*Quadro.*FX.*3800.* 2 1 -NVIDIA Quadro FX 370 .*Quadro.*FX.*370.* 2 1 -NVIDIA Quadro FX 380 .*Quadro.*FX.*380.* 2 1 -NVIDIA Quadro FX 4000 .*Quadro.*FX.*4000.* 1 1 -NVIDIA Quadro FX 4500 .*Quadro.*FX.*4500.* 1 1 -NVIDIA Quadro FX 4600 .*Quadro.*FX.*4600.* 2 1 -NVIDIA Quadro FX 4700 .*Quadro.*FX.*4700.* 2 1 -NVIDIA Quadro FX 4800 .*Quadro.*FX.*4800.* 2 1 -NVIDIA Quadro FX 470 .*Quadro.*FX.*470.* 2 1 -NVIDIA Quadro FX 5500 .*Quadro.*FX.*5500.* 1 1 -NVIDIA Quadro FX 5600 .*Quadro.*FX.*5600.* 2 1 -NVIDIA Quadro FX 5700 .*Quadro.*FX.*5700.* 2 1 -NVIDIA Quadro FX 5800 .*Quadro.*FX.*5800.* 2 1 -NVIDIA Quadro FX 540 .*Quadro.*FX.*540.* 1 1 -NVIDIA Quadro FX 550 .*Quadro.*FX.*550.* 1 1 -NVIDIA Quadro FX 560 .*Quadro.*FX.*560.* 1 1 -NVIDIA Quadro FX 570 .*Quadro.*FX.*570.* 2 1 -NVIDIA Quadro FX 580 .*Quadro.*FX.*580.* 2 1 +NVIDIA Quadro CX .*Quadro.*CX.* 3 1 +NVIDIA Quadro FX 770 .*Quadro.*FX *770(M)?.* 2 1 +NVIDIA Quadro FX 880 .*Quadro.*FX *880(M)?.* 2 1 +NVIDIA Quadro FX 1400 .*Quadro.*FX.*1400(M)?.* 1 1 +NVIDIA Quadro FX 1500 .*Quadro.*FX.*1500(M)?.* 1 1 +NVIDIA Quadro FX 1600 .*Quadro.*FX *1600(M)?.* 2 1 +NVIDIA Quadro FX 1700 .*Quadro.*FX.*1700(M)?.* 2 1 +NVIDIA Quadro FX 1800 .*Quadro.*FX.*1800(M)?.* 2 1 +NVIDIA Quadro FX 3400 .*Quadro.*FX.*3400(M)?.* 1 1 +NVIDIA Quadro FX 3450 .*Quadro.*FX.*3450(M)?.* 1 1 +NVIDIA Quadro FX 3500 .*Quadro.*FX.*3500(M)?.* 1 1 +NVIDIA Quadro FX 3700 .*Quadro.*FX.*3700(M)?.* 2 1 +NVIDIA Quadro FX 3800 .*Quadro.*FX.*3800(M)?.* 2 1 +NVIDIA Quadro FX 370 .*Quadro.*FX.*370(M)?.* 2 1 +NVIDIA Quadro FX 380 .*Quadro.*FX.*380(M)?.* 2 1 +NVIDIA Quadro FX 4000 .*Quadro.*FX.*4000(M)?.* 1 1 +NVIDIA Quadro FX 4500 .*Quadro.*FX.*4500(M)?.* 1 1 +NVIDIA Quadro FX 4600 .*Quadro.*FX.*4600(M)?.* 2 1 +NVIDIA Quadro FX 4700 .*Quadro.*FX.*4700(M)?.* 2 1 +NVIDIA Quadro FX 4800 .*Quadro.*FX.*4800(M)?.* 2 1 +NVIDIA Quadro FX 470 .*Quadro.*FX.*470(M)?.* 3 1 +NVIDIA Quadro FX 5500 .*Quadro.*FX.*5500(M)?.* 1 1 +NVIDIA Quadro FX 5600 .*Quadro.*FX.*5600(M)?.* 2 1 +NVIDIA Quadro FX 5700 .*Quadro.*FX.*5700(M)?.* 2 1 +NVIDIA Quadro FX 5800 .*Quadro.*FX.*5800(M)?.* 2 1 +NVIDIA Quadro FX 540 .*Quadro.*FX.*540(M)?.* 3 1 +NVIDIA Quadro FX 550 .*Quadro.*FX.*550(M)?.* 3 1 +NVIDIA Quadro FX 560 .*Quadro.*FX.*560(M)?.* 3 1 +NVIDIA Quadro FX 570 .*Quadro.*FX.*570(M)?.* 3 1 +NVIDIA Quadro FX 580 .*Quadro.*FX.*580(M)?.* 3 1 NVIDIA Quadro FX .*Quadro FX.* 1 1 +NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 NVIDIA Quadro VX 200 .*Quadro VX.*200.* 2 1 +NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 +NVIDIA Quadro NVS 300M .*NVIDIA .*NVS *300M.* 2 1 +NVIDIA Quadro NVS 320M .*NVIDIA .*NVS *320M.* 2 1 +NVIDIA Quadro NVS 2100M .*NVIDIA .*NVS *2100M.* 2 1 +NVIDIA Quadro NVS 3100M .*NVIDIA .*NVS *3100M.* 2 1 +NVIDIA Quadro NVS 4200M .*NVIDIA .*NVS *4200M.* 2 1 +NVIDIA Quadro NVS 5100M .*NVIDIA .*NVS *5100M.* 2 1 NVIDIA Quadro 2000 .*Quadro.*2000.* 2 1 NVIDIA Quadro 4000 .*Quadro.*4000.* 2 1 NVIDIA Quadro 5000 .*Quadro.*5000.* 2 1 NVIDIA Quadro 6000 .*Quadro.*6000.* 2 1 NVIDIA Quadro 600 .*Quadro.*600.* 2 1 -NVIDIA Quadro NVS .*Quadro NVS.* 0 1 +NVIDIA Quadro NVS .*(Quadro|NVIDIA) NVS.* 0 1 NVIDIA RIVA TNT .*RIVA TNT.* 0 0 NVIDIA PCI .*NVIDIA.*/PCI/SSE2 0 0 S3 .*S3 Graphics.* 0 0 @@ -446,3 +577,4 @@ VIA VIA.* 0 0 Apple Generic Apple.*Generic.* 0 0 Apple Software Renderer Apple.*Software Renderer.* 0 0 Microsoft RemoteFX Graphics Device - WDDM Microsoft.*RemoteFX.* 0 0 +Humper Humper.* 0 1 diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a8fd1c352..f81728318 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -945,7 +945,7 @@ void LLAppViewer::initMaxHeapSize() if(fnIsWow64Process && fnIsWow64Process(GetCurrentProcess(), &bWow64Process) && bWow64Process) { - max_heap_size_gb = 3.7; + max_heap_size_gb = 3.7f; } else if(ERROR_SUCCESS == RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management"), &hKey)) { @@ -954,7 +954,7 @@ void LLAppViewer::initMaxHeapSize() if(ERROR_SUCCESS == RegQueryValueEx(hKey, TEXT("PhysicalAddressExtension"), NULL, NULL, (LPBYTE)&dwResult, &dwSize)) { if(dwResult) - max_heap_size_gb = 3.7; + max_heap_size_gb = 3.7f; } RegCloseKey(hKey); } diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index 4504fb986..2ba89a29a 100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp @@ -218,7 +218,7 @@ void LLColorSwatchCtrl::draw() if ( mValid ) { // Draw the color swatch - gl_rect_2d_checkerboard( interior ); + gl_rect_2d_checkerboard( getScreenRect(), interior ); gl_rect_2d(interior, mColor, TRUE); LLColor4 opaque_color = mColor; opaque_color.mV[VALPHA] = 1.f; @@ -239,7 +239,7 @@ void LLColorSwatchCtrl::draw() LLPointer fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName); if( fallback_image->getComponents() == 4 ) { - gl_rect_2d_checkerboard( interior ); + gl_rect_2d_checkerboard( getScreenRect(), interior ); } gl_draw_scaled_image( interior.mLeft, interior.mBottom, interior.getWidth(), interior.getHeight(), fallback_image); fallback_image->addTextureStats( (F32)(interior.getWidth() * interior.getHeight()) ); diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp index 36409e765..67c20c91d 100644 --- a/indra/newview/llfloaterimagepreview.cpp +++ b/indra/newview/llfloaterimagepreview.cpp @@ -264,7 +264,7 @@ void LLFloaterImagePreview::draw() if (selected <= 0) { - gl_rect_2d_checkerboard(mPreviewRect); + gl_rect_2d_checkerboard( getScreenRect(), mPreviewRect); LLGLDisable gls_alpha(GL_ALPHA_TEST); if(mImagep.notNull()) diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp index 388a2cf4a..c83eb9bf4 100644 --- a/indra/newview/llglsandbox.cpp +++ b/indra/newview/llglsandbox.cpp @@ -441,7 +441,7 @@ void LLViewerParcelMgr::renderRect(const LLVector3d &west_south_bottom_global, { LLGLSUIDefault gls_ui; gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - LLGLDepthTest gls_depth(GL_TRUE); + LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); LLVector3 west_south_bottom_agent = gAgent.getPosAgentFromGlobal(west_south_bottom_global); F32 west = west_south_bottom_agent.mV[VX]; @@ -698,7 +698,7 @@ void LLViewerParcelMgr::renderHighlightSegments(const U8* segments, LLViewerRegi LLGLSUIDefault gls_ui; gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - LLGLDepthTest gls_depth(GL_TRUE); + LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); gGL.color4f(1.f, 1.f, 0.f, 0.2f); @@ -977,7 +977,7 @@ void LLViewerObjectList::renderObjectBeacons() { gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - LLGLDepthTest gls_depth(GL_TRUE); + LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); S32 last_line_width = -1; // gGL.begin(LLRender::LINES); // Always happens in (line_width != last_line_width) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 9bbbf0b8f..a773a196a 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -724,10 +724,10 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, addDeleteContextMenuOptions(items, disabled_items); // If multiple items are selected, disable properties (if it exists). - if ((flags & FIRST_SELECTED_ITEM) == 0) + /*if ((flags & FIRST_SELECTED_ITEM) == 0) { disabled_items.push_back(std::string("Properties")); - } + }*/ } void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags) diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index fd57ff602..338aa899e 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -270,7 +270,7 @@ void LLPreviewTexture::draw() // ...border gl_rect_2d( border, LLColor4(0.f, 0.f, 0.f, 1.f)); - gl_rect_2d_checkerboard( interior ); + gl_rect_2d_checkerboard( getScreenRect(), interior ); if ( mImage.notNull() ) { diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index a23c3ddd1..191b8c918 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -214,6 +214,7 @@ #include "ascentdaycyclemanager.h" #include "llfloaterblacklist.h" #include "scriptcounter.h" +#include "shfloatermediaticker.h" // #include "llavatarnamecache.h" @@ -2053,6 +2054,10 @@ bool idle_startup() { LLFloaterAvatarList::createInstance(false); } + if (gSavedSettings.getBOOL("SHShowMediaTicker")) + { + SHFloaterMediaTicker::showInstance(); + } // if (gSavedSettings.getBOOL("ShowCameraControls")) { @@ -2073,6 +2078,8 @@ bool idle_startup() LLFloaterBeacons::showInstance(); } + + if (!gNoRender) { //Set up cloud rendertypes. Passed argument is unused. diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 89eca8e42..854d67841 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -648,7 +648,7 @@ void LLFloaterTexturePicker::draw() { if( mTexturep->getComponents() == 4 ) { - gl_rect_2d_checkerboard( interior ); + gl_rect_2d_checkerboard( getScreenRect(), interior ); } gl_draw_scaled_image( interior.mLeft, interior.mBottom, interior.getWidth(), interior.getHeight(), mTexturep ); @@ -1540,7 +1540,7 @@ void LLTextureCtrl::draw() { if( mTexturep->getComponents() == 4 ) { - gl_rect_2d_checkerboard( interior ); + gl_rect_2d_checkerboard( getScreenRect(), interior ); } gl_draw_scaled_image( interior.mLeft, interior.mBottom, interior.getWidth(), interior.getHeight(), mTexturep); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index f4aa4305b..331a946ad 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -1225,7 +1225,8 @@ void render_ui(F32 zoom_factor, int subfield, bool tiling) /// and then display it again with compositor effects. /// Using render to texture would be faster/better, but I don't have a /// grasp of their full display stack just yet. - LLPostProcess::getInstance()->apply(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight()); + if(gPipeline.canUseVertexShaders()) + LLPostProcess::getInstance()->apply(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight()); render_hud_elements(); render_hud_attachments(); diff --git a/indra/newview/llviewergesture.cpp b/indra/newview/llviewergesture.cpp index 2c0a7739a..a8129875a 100644 --- a/indra/newview/llviewergesture.cpp +++ b/indra/newview/llviewergesture.cpp @@ -51,6 +51,7 @@ #include "chatbar_as_cmdline.h" #if SHY_MOD //Command handler +#include "llvoavatarself.h" #include "shcommandhandler.h" #endif //shy_mod @@ -109,7 +110,6 @@ BOOL LLViewerGesture::trigger(const std::string &trigger_string) } } - // private void LLViewerGesture::doTrigger( BOOL send_chat ) { diff --git a/indra/newview/llviewermedia_streamingaudio.h b/indra/newview/llviewermedia_streamingaudio.h index e5093f974..cba667861 100644 --- a/indra/newview/llviewermedia_streamingaudio.h +++ b/indra/newview/llviewermedia_streamingaudio.h @@ -55,7 +55,11 @@ class LLStreamingAudio_MediaPlugins : public LLStreamingAudioInterface /*virtual*/ void setGain(F32 vol); /*virtual*/ F32 getGain(); /*virtual*/ std::string getURL(); - /*virtual*/ LLSD *getMetaData(){return NULL;} //return NULL if not supported. + + /*virtual*/ bool supportsMetaData(){return false;} + /*virtual*/ LLSD *getMetaData(){return NULL;} //return NULL if not playing. + /*virtual*/ virtual bool supportsWaveData(){return false;} + /*virtual*/ virtual bool getWaveData(float* arr, S32 count, S32 stride = 1){return false;} private: LLPluginClassMedia* initializeMedia(const std::string& media_type); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 9b3186ba2..ffc19fda5 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -247,6 +247,7 @@ #include "llfloatermessagelog.h" #include "llfloatervfs.h" #include "llfloatervfsexplorer.h" +#include "shfloatermediaticker.h" // #include "scriptcounter.h" @@ -825,6 +826,8 @@ void init_menus() &handle_sounds_explorer, NULL)); menu->append(new LLMenuItemCallGL( "Asset Blacklist", &handle_blacklist, NULL)); + menu->append(new LLMenuItemCheckGL( "Streaming Audio Display", + &handle_ticker_toggle, &handle_ticker_enabled, &handle_ticker_check, NULL )); diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp index ab1307935..1c2db126f 100644 --- a/indra/newview/llviewerparceloverlay.cpp +++ b/indra/newview/llviewerparceloverlay.cpp @@ -872,7 +872,7 @@ S32 LLViewerParcelOverlay::renderPropertyLines () LLGLSUIDefault gls_ui; // called from pipeline gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - LLGLDepthTest mDepthTest(GL_TRUE); + LLGLDepthTest mDepthTest(GL_TRUE, GL_FALSE); // Find camera height off the ground (not from zero) F32 ground_height_at_camera = land.resolveHeightGlobal( gAgentCamera.getCameraPositionGlobal() ); diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 4d8f0c83b..f3a0c6bb8 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -166,6 +166,16 @@ void LLViewerTextureList::doPreloadImages() image->setAddressMode(LLTexUnit::TAM_WRAP); mImagePreloads.insert(image); } + //Hideous hack to set filtering and address modes without messing with our texture classes. + { + LLPointer temp_image = image_list->getUIImage("checkerboard.tga",LLViewerFetchedTexture::BOOST_UI); + if(temp_image.notNull() && temp_image->getImage().notNull()) + { + LLViewerTexture *tex = (LLViewerTexture*)temp_image->getImage().get(); + tex->setAddressMode(LLTexUnit::TAM_WRAP); + tex->setFilteringOption(LLTexUnit::TFO_POINT); + } + } } diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 627df591b..85751370c 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -178,7 +178,7 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host, U32 iindex = 0; U32 jindex = 0; - mWidth = region_size_x; //MegaRegion + mWidth = region_size_x; //MegaRegion mWidthInMeters = mWidth * mScale; //MegaRegion from_region_handle(region_handle, &iindex, &jindex); S32 x = (S32)(iindex/256); //MegaRegion @@ -1266,16 +1266,16 @@ void process_enable_simulator(LLMessageSystem *msg, void **user_data) // which simulator should we modify? LLHost sim(ip_u32, port); - U32 region_size_x = 256; - msg->getU32Fast(_PREHASH_SimulatorInfo, _PREHASH_RegionSizeX, region_size_x); - - U32 region_size_y = 256; - msg->getU32Fast(_PREHASH_SimulatorInfo, _PREHASH_RegionSizeY, region_size_y); - - if (region_size_y == 0 || region_size_x == 0) - { - region_size_x = 256; - region_size_y = 256; + U32 region_size_x = 256; + msg->getU32Fast(_PREHASH_SimulatorInfo, _PREHASH_RegionSizeX, region_size_x); + + U32 region_size_y = 256; + msg->getU32Fast(_PREHASH_SimulatorInfo, _PREHASH_RegionSizeY, region_size_y); + + if (region_size_y == 0 || region_size_x == 0) + { + region_size_x = 256; + region_size_y = 256; } // Viewer trusts the simulator. diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 015b4f84f..71d345192 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -3263,7 +3263,7 @@ void render_hud_elements() { LLFastTimer t(LLFastTimer::FTM_RENDER_UI); gPipeline.disableLights(); - + LLGLDisable fog(GL_FOG); LLGLSUIDefault gls_ui; @@ -3280,22 +3280,25 @@ void render_hud_elements() } LLGLDepthTest depth(GL_TRUE, GL_FALSE); - if (!LLPipeline::sReflectionRender && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) + if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) { - static const LLCachedControl RenderFSAASamples("RenderFSAASamples",0); - LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0); - gViewerWindow->renderSelections(FALSE, FALSE, FALSE); // For HUD version in render_ui_3d() + if(!LLPipeline::sReflectionRender) + { + static const LLCachedControl RenderFSAASamples("RenderFSAASamples",0); + LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0); + gViewerWindow->renderSelections(FALSE, FALSE, FALSE); // For HUD version in render_ui_3d() - // Draw the tracking overlays - LLTracker::render3D(); + // Draw the tracking overlays + LLTracker::render3D(); - // Show the property lines - LLWorld::getInstance()->renderPropertyLines(); - LLViewerParcelMgr::getInstance()->render(); - LLViewerParcelMgr::getInstance()->renderParcelCollision(); + // Show the property lines + LLWorld::getInstance()->renderPropertyLines(); + LLViewerParcelMgr::getInstance()->render(); + LLViewerParcelMgr::getInstance()->renderParcelCollision(); - // Render name tags. - LLHUDObject::renderAll(); + // Render name tags. + LLHUDObject::renderAll(); + } } else if (gForceRenderLandFence) { diff --git a/indra/newview/shfloatermediaticker.cpp b/indra/newview/shfloatermediaticker.cpp new file mode 100644 index 000000000..0b7eef36f --- /dev/null +++ b/indra/newview/shfloatermediaticker.cpp @@ -0,0 +1,274 @@ + +#include "llviewerprecompiledheaders.h" + +#include "shfloatermediaticker.h" + +// Library includes +#include "llaudioengine.h" +#include "lliconctrl.h" +#include "llstreamingaudio.h" +#include "lluictrlfactory.h" + +// Viewer includes +#include "llviewercontrol.h" + + +SHFloaterMediaTicker::SHFloaterMediaTicker() : LLFloater()/*, LLSingleton()*/, + mPlayState(STATE_PLAYING), + mArtistScrollChars(0), + mTitleScrollChars(0), + mCurScrollChar(0), + mTickerBackground(NULL), + mArtistText(NULL), + mTitleText(NULL), + mVisualizer(NULL) +{ + setIsChrome(TRUE); + if(gAudiop->getStreamingAudioImpl()->supportsWaveData()) + LLUICtrlFactory::getInstance()->buildFloater(this, "sh_floater_media_ticker_visualizer.xml"); + else + LLUICtrlFactory::getInstance()->buildFloater(this, "sh_floater_media_ticker.xml"); +} + +/*virtual*/ BOOL SHFloaterMediaTicker::postBuild() +{ + mTickerBackground = getChild("ticker_background"); + mArtistText = getChild("artist_text",true,false); + mTitleText = getChild("title_text",true,false); + mVisualizer = getChild("visualizer_box",true,false); + mszLoading = getString("loading"); + mszPaused = getString("paused"); + mOscillatorColor = gColors.getColor("SHMediaTickerOscillatorColor"); + + setPaused(true); + + return LLFloater::postBuild(); +} + +/*virtual*/ void SHFloaterMediaTicker::draw() +{ + updateTickerText(); + LLFloater::draw(); + drawOscilloscope(); +} + +/*virtual*/ void SHFloaterMediaTicker::onOpen() +{ + LLFloater::onOpen(); + + gSavedSettings.setBOOL("SHShowMediaTicker", TRUE); +} +/*virtual*/ void SHFloaterMediaTicker::onClose(bool app_quitting) +{ + LLFloater::onClose(app_quitting); + + if (!app_quitting) + { + gSavedSettings.setBOOL("SHShowMediaTicker", FALSE); + delete this; + } +} +/*virtual*/void SHFloaterMediaTicker::reshape(S32 width, S32 height, BOOL called_from_parent/*=TRUE*/) +{ + //disable height change. + bool width_changed = (getRect().getWidth() != width); + LLFloater::reshape(width,getRect().getHeight(), called_from_parent); + if(width_changed) + { + if(mTitleText) + mTitleScrollChars = countExtraChars(mTitleText,mszTitle); + if(mArtistText) + mArtistScrollChars = countExtraChars(mArtistText,mszArtist); + resetTicker(); + } +} +void SHFloaterMediaTicker::updateTickerText() //called via draw. +{ + bool stream_paused = gAudiop->getStreamingAudioImpl()->isPlaying() != 1; //will return 1 if playing. + + bool dirty = setPaused(stream_paused); + if(!stream_paused) + { + if(dirty || mUpdateTimer.getElapsedTimeF64() >= .5f) + { + mUpdateTimer.reset(); + const LLSD* metadata = gAudiop->getStreamingAudioImpl()->getMetaData(); + LLSD artist = metadata ? metadata->get("ARTIST") : LLSD(); + LLSD title = metadata ? metadata->get("TITLE") : LLSD(); + + dirty |= setArtist(artist.isDefined() ? artist.asString() : mszLoading); + dirty |= setTitle(title.isDefined() ? title.asString() : mszLoading); + if(artist.isDefined() && title.isDefined()) + mLoadTimer.stop(); + else if(dirty) + mLoadTimer.reset(); + else if(mLoadTimer.getStarted() && mLoadTimer.getElapsedTimeF64() > 10.f) //It has been 10 seconds.. give up. + { + if(!artist.isDefined()) + dirty |= setArtist(""); + if(!title.isDefined()) + dirty |= setTitle(""); + mLoadTimer.stop(); + } + } + } + if(dirty) + resetTicker(); + else + iterateTickerOffset(); +} + +void SHFloaterMediaTicker::drawOscilloscope() //called via draw. +{ + if(!mVisualizer || !gAudiop->getStreamingAudioImpl()->supportsWaveData()) + return; + + static const S32 NUM_LINE_STRIPS = 64; //How many lines to draw. 64 is more than enough. + static const S32 WAVE_DATA_STEP_SIZE = 4; //Increase to provide more history at expense of cpu/memory. + + static const S32 NUM_WAVE_DATA_VALUES = NUM_LINE_STRIPS*WAVE_DATA_STEP_SIZE; //Actual buffer size. Don't toy with this. Change above vars to tweak. + static F32 buf[NUM_WAVE_DATA_VALUES]; + + LLRect root_rect = mVisualizer->getRect(); + + F32 height = root_rect.getHeight(); + F32 height_scale = height / 2.f; //WaveData ranges from 1 to -1, so height_scale = height / 2 + F32 width = root_rect.getWidth(); + F32 width_scale = width / (F32)NUM_WAVE_DATA_VALUES; + + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + gGL.color4fv(mOscillatorColor.mV); + gGL.pushMatrix(); + gGL.translatef((F32)root_rect.mLeft, (F32)root_rect.mBottom + height*.5f, 0.f); + gGL.begin( LLRender::LINE_STRIP ); + if(mPlayState == STATE_PAUSED || !gAudiop->getStreamingAudioImpl()->getWaveData(&buf[0],NUM_WAVE_DATA_VALUES,WAVE_DATA_STEP_SIZE)) + { + gGL.vertex2i(0,0); + gGL.vertex2i((S32)width,0); + } + else + for(S32 i = NUM_WAVE_DATA_VALUES-1; i>=0;i-=WAVE_DATA_STEP_SIZE) + gGL.vertex2f((F32)i * width_scale, buf[i]*height_scale); + gGL.end(); + gGL.popMatrix(); + gGL.flush(); +} + +bool SHFloaterMediaTicker::setPaused(bool pause) +{ + if(pause == (mPlayState == STATE_PAUSED)) + return false; + mPlayState = pause ? STATE_PAUSED : STATE_PLAYING; + if(pause) + { + setArtist(mszPaused); + setTitle(mszPaused); + } + return true; +} + +void SHFloaterMediaTicker::resetTicker() +{ + mScrollTimer.reset(); + mCurScrollChar=0; + if(mArtistText) mArtistText->setText(LLStringExplicit(mszArtist.substr(0,mszArtist.length()-mArtistScrollChars))); + if(mTitleText) mTitleText->setText(LLStringExplicit(mszTitle.substr(0,mszTitle.length()-mTitleScrollChars))); +} + +bool SHFloaterMediaTicker::setArtist(const std::string &artist) +{ + if(!mArtistText || mszArtist == artist) + return false; + mszArtist = artist; + mArtistText->setText(mszArtist); + mArtistScrollChars = countExtraChars(mArtistText,mszArtist); + return true; +} + +bool SHFloaterMediaTicker::setTitle(const std::string &title) +{ + if(!mTitleText || mszTitle == title) + return false; + mszTitle=title; + mTitleText->setText(mszTitle); + mTitleScrollChars = countExtraChars(mTitleText,mszTitle); + return true; +} + +S32 SHFloaterMediaTicker::countExtraChars(LLTextBox *texbox, const std::string &text) +{ + S32 text_width = texbox->getTextPixelWidth(); + S32 box_width = texbox->getRect().getWidth(); + if(text_width > box_width) + { + const LLFontGL* font = texbox->getFont(); + for(S32 count = 1;count<(S32)text.length();count++) + { + //This isn't very efficient... + const std::string substr = text.substr(0,text.length()-count); + if(font->getWidth(substr) <= box_width) + return count; + } + } + return 0; +} + +void SHFloaterMediaTicker::iterateTickerOffset() +{ + if( (mPlayState != STATE_PAUSED) && + (mArtistScrollChars || mTitleScrollChars) && + ((!mCurScrollChar && mScrollTimer.getElapsedTimeF32() >= 5.f) || + ( mCurScrollChar && mScrollTimer.getElapsedTimeF32() >= .5f))) + { + if(++mCurScrollChar > llmax(mArtistScrollChars, mTitleScrollChars)) + { + if(mScrollTimer.getElapsedTimeF32() >= 2.f) //pause for a bit when it reaches beyond last character. + resetTicker(); + } + else + { + mScrollTimer.reset(); + if(mArtistText && mCurScrollChar <= mArtistScrollChars) + { + mArtistText->setText(LLStringExplicit(mszArtist.substr(mCurScrollChar,mszArtist.length()-mArtistScrollChars+mCurScrollChar))); + } + if(mTitleText && mCurScrollChar <= mTitleScrollChars) + { + mTitleText->setText(LLStringExplicit(mszTitle.substr(mCurScrollChar,mszTitle.length()-mTitleScrollChars+mCurScrollChar))); + } + } + } +} + +/*static*/ +void SHFloaterMediaTicker::showInstance() +{ + if(!handle_ticker_enabled(NULL)) + return; + if(!SHFloaterMediaTicker::instanceExists()) + { + SHFloaterMediaTicker::getInstance(); + } +} + +BOOL handle_ticker_enabled(void *) +{ + return gAudiop && gAudiop->getStreamingAudioImpl() && gAudiop->getStreamingAudioImpl()->supportsMetaData(); +} +BOOL handle_ticker_check(void *) +{ + return SHFloaterMediaTicker::instanceExists(); +} +void handle_ticker_toggle(void *) +{ + if(!handle_ticker_enabled(NULL)) + return; + if(!SHFloaterMediaTicker::instanceExists()) + { + SHFloaterMediaTicker::getInstance(); + } + else + { + SHFloaterMediaTicker::getInstance()->close(); + } +} \ No newline at end of file diff --git a/indra/newview/shfloatermediaticker.h b/indra/newview/shfloatermediaticker.h new file mode 100644 index 000000000..3fa23bdda --- /dev/null +++ b/indra/newview/shfloatermediaticker.h @@ -0,0 +1,59 @@ +#include "llfloater.h" + +class LLIconCtrl; + +class SHFloaterMediaTicker : public LLFloater, public LLSingleton +{ + friend class LLSingleton; +public: + SHFloaterMediaTicker(); //ctor + + virtual ~SHFloaterMediaTicker() {} + /*virtual*/ BOOL postBuild(); + /*virtual*/ void draw(); + /*virtual*/ void onOpen(); + /*virtual*/ void onClose(bool app_quitting); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + static void showInstance(); //use to create. +private: + void updateTickerText(); //called via draw. + void drawOscilloscope(); //called via draw. + bool setPaused(bool pause); //returns true on state change. + void resetTicker(); //Resets tickers to their innitial values (no offset). + bool setArtist(const std::string &artist); //returns true on change + bool setTitle(const std::string &title); //returns true on change + S32 countExtraChars(LLTextBox *texbox, const std::string &text); //calculates how many characters are truncated by bounds. + void iterateTickerOffset(); //Logic that actually shuffles the text to the left. + + enum ePlayState + { + STATE_PAUSED, + STATE_PLAYING + }; + + ePlayState mPlayState; + std::string mszLoading; + std::string mszPaused; + std::string mszArtist; + std::string mszTitle; + LLTimer mScrollTimer; + LLTimer mLoadTimer; + LLTimer mUpdateTimer; + S32 mArtistScrollChars; + S32 mTitleScrollChars; + S32 mCurScrollChar; + + LLColor4 mOscillatorColor; + + //UI elements + LLIconCtrl* mTickerBackground; + LLTextBox* mArtistText; + LLTextBox* mTitleText; + LLUICtrl* mVisualizer; +}; + +//Menu callbacks. +BOOL handle_ticker_enabled(void *); +BOOL handle_ticker_check(void *); +void handle_ticker_toggle(void *); + diff --git a/indra/newview/skins/Pony-Aquablue/colors_base.xml b/indra/newview/skins/Pony-Aquablue/colors_base.xml index f77e42294..b48208f68 100644 --- a/indra/newview/skins/Pony-Aquablue/colors_base.xml +++ b/indra/newview/skins/Pony-Aquablue/colors_base.xml @@ -183,6 +183,7 @@ + diff --git a/indra/newview/skins/Pony-Purple/colors_base.xml b/indra/newview/skins/Pony-Purple/colors_base.xml index 360f33104..8cde4c258 100644 --- a/indra/newview/skins/Pony-Purple/colors_base.xml +++ b/indra/newview/skins/Pony-Purple/colors_base.xml @@ -184,6 +184,7 @@ + diff --git a/indra/newview/skins/dark/colors_base.xml b/indra/newview/skins/dark/colors_base.xml index 8e758b6cb..032351a88 100644 --- a/indra/newview/skins/dark/colors_base.xml +++ b/indra/newview/skins/dark/colors_base.xml @@ -181,6 +181,7 @@ + diff --git a/indra/newview/skins/darkgred/colors_base.xml b/indra/newview/skins/darkgred/colors_base.xml index d7c76b5eb..d7132d44d 100644 --- a/indra/newview/skins/darkgred/colors_base.xml +++ b/indra/newview/skins/darkgred/colors_base.xml @@ -181,6 +181,7 @@ + diff --git a/indra/newview/skins/darkorange/colors_base.xml b/indra/newview/skins/darkorange/colors_base.xml index 6ccefdf5c..f3ff107f0 100644 --- a/indra/newview/skins/darkorange/colors_base.xml +++ b/indra/newview/skins/darkorange/colors_base.xml @@ -184,6 +184,7 @@ + diff --git a/indra/newview/skins/default/colors_base.xml b/indra/newview/skins/default/colors_base.xml index d71dbe7aa..eafb95481 100644 --- a/indra/newview/skins/default/colors_base.xml +++ b/indra/newview/skins/default/colors_base.xml @@ -195,6 +195,7 @@ + diff --git a/indra/newview/skins/default/textures/checkerboard.tga b/indra/newview/skins/default/textures/checkerboard.tga new file mode 100644 index 000000000..8ee0be57c Binary files /dev/null and b/indra/newview/skins/default/textures/checkerboard.tga differ diff --git a/indra/newview/skins/default/textures/ticker_background_small.tga b/indra/newview/skins/default/textures/ticker_background_small.tga new file mode 100644 index 000000000..ce3bb3fcd Binary files /dev/null and b/indra/newview/skins/default/textures/ticker_background_small.tga differ diff --git a/indra/newview/skins/default/textures/ticker_visualizer_grid.tga b/indra/newview/skins/default/textures/ticker_visualizer_grid.tga new file mode 100644 index 000000000..a7bb07b4e Binary files /dev/null and b/indra/newview/skins/default/textures/ticker_visualizer_grid.tga differ diff --git a/indra/newview/skins/default/xui/en-us/sh_floater_media_ticker.xml b/indra/newview/skins/default/xui/en-us/sh_floater_media_ticker.xml new file mode 100644 index 000000000..392736537 --- /dev/null +++ b/indra/newview/skins/default/xui/en-us/sh_floater_media_ticker.xml @@ -0,0 +1,40 @@ + + + + + + Artist: + + + + + Title: + + + + + + (not playing) + + + (loading...) + + diff --git a/indra/newview/skins/default/xui/en-us/sh_floater_media_ticker_visualizer.xml b/indra/newview/skins/default/xui/en-us/sh_floater_media_ticker_visualizer.xml new file mode 100644 index 000000000..e324830f1 --- /dev/null +++ b/indra/newview/skins/default/xui/en-us/sh_floater_media_ticker_visualizer.xml @@ -0,0 +1,44 @@ + + + + + + + + Artist: + + + + + Title: + + + + + + (not playing) + + + (loading...) + + diff --git a/indra/newview/skins/emerald/colors_base.xml b/indra/newview/skins/emerald/colors_base.xml index 0ae266670..57f34271a 100644 --- a/indra/newview/skins/emerald/colors_base.xml +++ b/indra/newview/skins/emerald/colors_base.xml @@ -182,6 +182,7 @@ + diff --git a/indra/newview/skins/gemini/colors_base.xml b/indra/newview/skins/gemini/colors_base.xml index f2df52367..4f5c5df9a 100644 --- a/indra/newview/skins/gemini/colors_base.xml +++ b/indra/newview/skins/gemini/colors_base.xml @@ -184,6 +184,7 @@ + diff --git a/indra/newview/skins/gred/colors_base.xml b/indra/newview/skins/gred/colors_base.xml index 64130c117..6ecb33e97 100644 --- a/indra/newview/skins/gred/colors_base.xml +++ b/indra/newview/skins/gred/colors_base.xml @@ -181,6 +181,7 @@ + diff --git a/indra/newview/skins/kdarknv/colors_base.xml b/indra/newview/skins/kdarknv/colors_base.xml index 5d33dd652..477527766 100644 --- a/indra/newview/skins/kdarknv/colors_base.xml +++ b/indra/newview/skins/kdarknv/colors_base.xml @@ -183,6 +183,7 @@ + diff --git a/indra/newview/skins/kliteat/colors_base.xml b/indra/newview/skins/kliteat/colors_base.xml index 5d33dd652..477527766 100644 --- a/indra/newview/skins/kliteat/colors_base.xml +++ b/indra/newview/skins/kliteat/colors_base.xml @@ -183,6 +183,7 @@ + diff --git a/indra/newview/skins/openlife/colors_base.xml b/indra/newview/skins/openlife/colors_base.xml index 3b85efa77..39f897639 100644 --- a/indra/newview/skins/openlife/colors_base.xml +++ b/indra/newview/skins/openlife/colors_base.xml @@ -171,6 +171,7 @@ + diff --git a/indra/newview/skins/openlife/textures/colors_base.xml b/indra/newview/skins/openlife/textures/colors_base.xml index 3b85efa77..39f897639 100644 --- a/indra/newview/skins/openlife/textures/colors_base.xml +++ b/indra/newview/skins/openlife/textures/colors_base.xml @@ -171,6 +171,7 @@ + diff --git a/indra/newview/skins/pslgreen/colors_base.xml b/indra/newview/skins/pslgreen/colors_base.xml index 3708d8d0b..10647478b 100644 --- a/indra/newview/skins/pslgreen/colors_base.xml +++ b/indra/newview/skins/pslgreen/colors_base.xml @@ -181,6 +181,7 @@ + diff --git a/indra/newview/skins/pslpurple/colors_base.xml b/indra/newview/skins/pslpurple/colors_base.xml index 3708d8d0b..10647478b 100644 --- a/indra/newview/skins/pslpurple/colors_base.xml +++ b/indra/newview/skins/pslpurple/colors_base.xml @@ -181,6 +181,7 @@ + diff --git a/indra/newview/skins/ruby/colors_base.xml b/indra/newview/skins/ruby/colors_base.xml index 1817e9ea6..f55f4c2e5 100644 --- a/indra/newview/skins/ruby/colors_base.xml +++ b/indra/newview/skins/ruby/colors_base.xml @@ -181,6 +181,7 @@ + diff --git a/indra/newview/skins/sapphire/colors_base.xml b/indra/newview/skins/sapphire/colors_base.xml index 42f4435a3..0b5e343e1 100644 --- a/indra/newview/skins/sapphire/colors_base.xml +++ b/indra/newview/skins/sapphire/colors_base.xml @@ -187,6 +187,7 @@ + diff --git a/indra/newview/skins/silver/colors_base.xml b/indra/newview/skins/silver/colors_base.xml index 15aebd29b..7ae59a490 100644 --- a/indra/newview/skins/silver/colors_base.xml +++ b/indra/newview/skins/silver/colors_base.xml @@ -193,6 +193,7 @@ + diff --git a/indra/newview/skins/white_emerald/colors_base.xml b/indra/newview/skins/white_emerald/colors_base.xml index 514782ebb..b637519e0 100644 --- a/indra/newview/skins/white_emerald/colors_base.xml +++ b/indra/newview/skins/white_emerald/colors_base.xml @@ -182,6 +182,7 @@ + diff --git a/indra/newview/skins/wisdom/colors_base.xml b/indra/newview/skins/wisdom/colors_base.xml index 0174b95b8..cfb056c21 100644 --- a/indra/newview/skins/wisdom/colors_base.xml +++ b/indra/newview/skins/wisdom/colors_base.xml @@ -186,6 +186,7 @@ +