diff options
author | Steven Bennetts <steve@lindenlab.com> | 2008-05-09 20:57:23 +0000 |
---|---|---|
committer | Steven Bennetts <steve@lindenlab.com> | 2008-05-09 20:57:23 +0000 |
commit | 783e05058c5d74984ab554fdc60aa06839b9b5c9 (patch) | |
tree | b40ca6762c7546b65db3966c04ef545a23643f21 /indra/newview | |
parent | dbe0176552e070baef9a693252cb47dda97d1fb4 (diff) |
QAR-537 Viewer 1.20 RC 6
merge -r 86279:86925 Branch_1-20-Viewer -> release
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/app_settings/settings.xml | 2 | ||||
-rw-r--r-- | indra/newview/llappviewer.cpp | 10 | ||||
-rw-r--r-- | indra/newview/lldrawpoolterrain.cpp | 9 | ||||
-rw-r--r-- | indra/newview/llfloatergroups.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llfloaterproperties.cpp | 33 | ||||
-rw-r--r-- | indra/newview/llfloaterproperties.h | 4 | ||||
-rw-r--r-- | indra/newview/llfloatersnapshot.cpp | 28 | ||||
-rw-r--r-- | indra/newview/llhudobject.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llviewerjoystick.cpp | 30 | ||||
-rw-r--r-- | indra/newview/llviewermenu.cpp | 5 | ||||
-rw-r--r-- | indra/newview/llviewermenufile.cpp | 34 | ||||
-rw-r--r-- | indra/newview/llviewermessage.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llviewerobjectlist.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llviewerparcelmedia.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llviewerparceloverlay.cpp | 43 | ||||
-rw-r--r-- | indra/newview/llvoavatar.cpp | 9 | ||||
-rw-r--r-- | indra/newview/pipeline.cpp | 7 |
17 files changed, 164 insertions, 66 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 773e71a369..2d391c4416 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2840,7 +2840,7 @@ <key>Comment</key> <string>Whether or not a joystick has been detected and initiailized.</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 1ad37f239c..b8adfe5477 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -875,15 +875,7 @@ bool LLAppViewer::init() gSimFrames = (F32)gFrameCount; LLViewerJoystick::getInstance()->init(false); - if (LLViewerJoystick::getInstance()->isLikeSpaceNavigator()) - { - if (gSavedSettings.getString("JoystickInitialized") != "SpaceNavigator") - { - LLFloaterJoystick::setSNDefaults(); - gSavedSettings.setString("JoystickInitialized", "SpaceNavigator"); - } - } - + return true; } diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp index 4747043c78..c60ddbc517 100644 --- a/indra/newview/lldrawpoolterrain.cpp +++ b/indra/newview/lldrawpoolterrain.cpp @@ -357,7 +357,7 @@ void LLDrawPoolTerrain::renderFullShader() void LLDrawPoolTerrain::renderFull4TU() { - glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); // Hack! Get the region that this draw pool is rendering from! @@ -388,8 +388,7 @@ void LLDrawPoolTerrain::renderFull4TU() glActiveTextureARB(GL_TEXTURE0_ARB); LLViewerImage::bindTexture(detail_texture0p,0); glClientActiveTextureARB(GL_TEXTURE0_ARB); - - glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); @@ -467,6 +466,8 @@ void LLDrawPoolTerrain::renderFull4TU() glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR); glActiveTextureARB(GL_TEXTURE0_ARB); + glClientActiveTextureARB(GL_TEXTURE0_ARB); + // GL_BLEND disabled by default drawLoop(); @@ -576,11 +577,13 @@ void LLDrawPoolTerrain::renderFull4TU() glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); glActiveTextureARB(GL_TEXTURE0_ARB); + glClientActiveTextureARB(GL_TEXTURE0_ARB); { LLGLEnable blend(GL_BLEND); drawLoop(); } + LLVertexBuffer::unbind(); // Disable multitexture LLImageGL::unbindTexture(3, GL_TEXTURE_2D); glActiveTextureARB(GL_TEXTURE3_ARB); diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp index 26ed03951c..d67ae2de2d 100644 --- a/indra/newview/llfloatergroups.cpp +++ b/indra/newview/llfloatergroups.cpp @@ -466,7 +466,7 @@ void init_group_list(LLScrollListCtrl* ctrl, const LLUUID& highlight_id, U64 pow LLSD element; element["id"] = LLUUID::null; element["columns"][0]["column"] = "name"; - element["columns"][0]["value"] = "none"; + element["columns"][0]["value"] = "none"; // *TODO: Translate element["columns"][0]["font"] = "SANSSERIF"; element["columns"][0]["font-style"] = style; diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp index bea12fe017..74a880e010 100644 --- a/indra/newview/llfloaterproperties.cpp +++ b/indra/newview/llfloaterproperties.cpp @@ -65,11 +65,21 @@ // helper class to watch the inventory. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -class LLPropertiesObserver : public LLInventoryObserver, public LLSingleton<LLPropertiesObserver> +// Ugh. This can't be a singleton because it needs to remove itself +// from the inventory observer list when destroyed, which could +// happen after gInventory has already been destroyed if a singleton. +// Instead, do our own ref counting and create / destroy it as needed +class LLPropertiesObserver : public LLInventoryObserver { public: - LLPropertiesObserver() {} - virtual ~LLPropertiesObserver() {} + LLPropertiesObserver() + { + gInventory.addObserver(this); + } + virtual ~LLPropertiesObserver() + { + gInventory.removeObserver(this); + } virtual void changed(U32 mask); }; @@ -88,7 +98,10 @@ void LLPropertiesObserver::changed(U32 mask) /// Class LLFloaterProperties ///---------------------------------------------------------------------------- +// static LLFloaterProperties::instance_map LLFloaterProperties::sInstances; +LLPropertiesObserver* LLFloaterProperties::sPropertiesObserver = NULL; +S32 LLFloaterProperties::sPropertiesObserverCount = 0; // static LLFloaterProperties* LLFloaterProperties::find(const LLUUID& item_id, @@ -145,12 +158,12 @@ LLFloaterProperties::LLFloaterProperties(const std::string& name, const LLRect& { LLUICtrlFactory::getInstance()->buildFloater(this,"floater_inventory_item_properties.xml"); - // hack to make sure these floaters are observing the inventory. - if(!gInventory.containsObserver(LLPropertiesObserver::getInstance())) + if (!sPropertiesObserver) { - // Note: this is where gPropertiesObserver used to be constructed. - gInventory.addObserver(LLPropertiesObserver::getInstance()); + sPropertiesObserver = new LLPropertiesObserver; } + sPropertiesObserverCount++; + // add the object to the static structure LLUUID key = mItemID ^ mObjectID; sInstances.insert(instance_map::value_type(key, this)); @@ -193,6 +206,12 @@ LLFloaterProperties::~LLFloaterProperties() { sInstances.erase(it); } + sPropertiesObserverCount--; + if (!sPropertiesObserverCount) + { + delete sPropertiesObserver; + sPropertiesObserver = NULL; + } } void LLFloaterProperties::refresh() diff --git a/indra/newview/llfloaterproperties.h b/indra/newview/llfloaterproperties.h index 7b1cb5d77c..8f96bf7078 100644 --- a/indra/newview/llfloaterproperties.h +++ b/indra/newview/llfloaterproperties.h @@ -47,6 +47,8 @@ class LLLineEditor; class LLRadioGroup; class LLTextBox; +class LLPropertiesObserver; + class LLFloaterProperties : public LLFloater { public: @@ -94,6 +96,8 @@ protected: typedef std::map<LLUUID, LLFloaterProperties*, lluuid_less> instance_map; static instance_map sInstances; + static LLPropertiesObserver* sPropertiesObserver; + static S32 sPropertiesObserverCount; }; class LLMultiProperties : public LLMultiFloater diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 7950b127f0..b2301808a1 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1694,13 +1694,13 @@ void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 LLSpinCtrl *sctrl = view->getChild<LLSpinCtrl>("snapshot_width") ; if(sctrl) { - sctrl->setValue(width) ; + sctrl->forceSetValue(width) ; } sctrl = view->getChild<LLSpinCtrl>("snapshot_height") ; if(sctrl) { - sctrl->setValue(height) ; + sctrl->forceSetValue(height) ; } gSavedSettings.setS32("LastSnapshotWidth", width); @@ -1727,8 +1727,30 @@ void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* dat if (w != curw || h != curh) { + BOOL update_ = FALSE ; + //if to upload a snapshot, process spinner input in a special way. + if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == gSavedSettings.getS32("LastSnapshotType")) + { + S32 spinner_increment = (S32)((LLSpinCtrl*)ctrl)->getIncrement() ; + S32 dw = w - curw ; + S32 dh = h - curh ; + dw = (dw == spinner_increment) ? 1 : ((dw == -spinner_increment) ? -1 : 0) ; + dh = (dh == spinner_increment) ? 1 : ((dh == -spinner_increment) ? -1 : 0) ; + + if(dw) + { + w = (dw > 0) ? curw << dw : curw >> -dw ; + update_ = TRUE ; + } + if(dh) + { + h = (dh > 0) ? curh << dh : curh >> -dh ; + update_ = TRUE ; + } + } + previewp->setMaxImageSize((S32)((LLSpinCtrl *)ctrl)->getMaxValue()) ; - if(checkImageSize(previewp, w, h, w != curw, previewp->getMaxImageSize())) + if(checkImageSize(previewp, w, h, w != curw, previewp->getMaxImageSize()) || update_) { resetSnapshotSizeOnUI(view, w, h) ; } diff --git a/indra/newview/llhudobject.cpp b/indra/newview/llhudobject.cpp index 07b0379f7a..136974df2e 100644 --- a/indra/newview/llhudobject.cpp +++ b/indra/newview/llhudobject.cpp @@ -282,7 +282,6 @@ void LLHUDObject::renderAll() } } - // cleanup any leftover client state, etc LLVertexBuffer::unbind(); } diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp index c109ca10a0..1717153810 100644 --- a/indra/newview/llviewerjoystick.cpp +++ b/indra/newview/llviewerjoystick.cpp @@ -228,8 +228,38 @@ void LLViewerJoystick::init(bool autoenable) mDriverState = JDS_UNINITIALIZED; } } + + // Autoenable the joystick for recognized devices if nothing was connected previously + if (!autoenable) + { + autoenable = gSavedSettings.getString("JoystickInitialized").empty() ? true : false; + } updateEnabled(autoenable); + if (mDriverState == JDS_INITIALIZED) + { + // A Joystick device is plugged in + if (isLikeSpaceNavigator()) + { + // It's a space navigator, we have defaults for it. + if (gSavedSettings.getString("JoystickInitialized") != "SpaceNavigator") + { + // Only set the defaults if we haven't already (in case they were overridden) + setSNDefaults(); + gSavedSettings.setString("JoystickInitialized", "SpaceNavigator"); + } + } + else + { + // It's not a Space Navigator + gSavedSettings.setString("JoystickInitialized", "UnknownDevice"); + } + } + else + { + // No device connected, don't change any settings + } + llinfos << "ndof: mDriverState=" << mDriverState << "; mNdofDev=" << mNdofDev << "; libinit=" << libinit << llendl; #endif diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index e32564faa6..c4cd7a3a3d 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1064,7 +1064,7 @@ void init_client_menu(LLMenuGL* menu) menu->appendSeparator(); - menu->append(new LLMenuItemCallGL("Compress Image...", + menu->append(new LLMenuItemCallGL("Compress Images...", &handle_compress_image, NULL, NULL)); menu->append(new LLMenuItemCheckGL("Limit Select Distance", @@ -1507,7 +1507,8 @@ void init_debug_avatar_menu(LLMenuGL* menu) menu->append(new LLMenuItemToggleGL("Disable LOD", &LLViewerJoint::sDisableLOD)); menu->append(new LLMenuItemToggleGL("Debug Character Vis", &LLVOAvatar::sDebugInvisible)); //menu->append(new LLMenuItemToggleGL("Show Attachment Points", &LLVOAvatar::sShowAttachmentPoints)); - menu->append(new LLMenuItemToggleGL("Show Collision Plane", &LLVOAvatar::sShowFootPlane)); + //diabling collision plane due to DEV-14477 -brad + //menu->append(new LLMenuItemToggleGL("Show Collision Plane", &LLVOAvatar::sShowFootPlane)); menu->append(new LLMenuItemToggleGL("Show Collision Skeleton", &LLVOAvatar::sShowCollisionVolumes)); menu->append(new LLMenuItemToggleGL( "Display Agent Target", &LLAgent::sDebugDisplayTarget)); menu->append(new LLMenuItemToggleGL( "Debug Rotation", &gDebugAvatarRotation)); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 864c1dd570..9dc3208adb 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -436,25 +436,31 @@ void handle_upload(void* data) void handle_compress_image(void*) { LLFilePicker& picker = LLFilePicker::instance(); - if (picker.getOpenFile(LLFilePicker::FFLOAD_IMAGE)) + if (picker.getMultipleOpenFiles(LLFilePicker::FFLOAD_IMAGE)) { - std::string infile(picker.getFirstFile()); - std::string outfile = infile + ".j2c"; + const char* input_file = picker.getFirstFile(); + while (input_file) + { + std::string infile(input_file); + std::string outfile = infile + ".j2c"; - llinfos << "Input: " << infile << llendl; - llinfos << "Output: " << outfile << llendl; + llinfos << "Input: " << infile << llendl; + llinfos << "Output: " << outfile << llendl; - BOOL success; + BOOL success; - success = LLViewerImageList::createUploadFile(infile, outfile, IMG_CODEC_TGA); + success = LLViewerImageList::createUploadFile(infile, outfile, IMG_CODEC_TGA); - if (success) - { - llinfos << "Compression complete" << llendl; - } - else - { - llinfos << "Compression failed: " << LLImageBase::getLastError() << llendl; + if (success) + { + llinfos << "Compression complete" << llendl; + } + else + { + llinfos << "Compression failed: " << LLImageBase::getLastError() << llendl; + } + + input_file = picker.getNextFile(); } } } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 577e76b957..3b2b82e1f9 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1823,7 +1823,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) } break; case IM_BUSY_AUTO_RESPONSE: - // fix for JIRA issue VWR-20 submitted 13-JAN-2007 - Paul Churchill if (is_muted) { lldebugs << "Ignoring busy response from " << from_id << llendl; @@ -1831,8 +1830,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) } else { - // original code resumes - gIMMgr->addMessage(session_id, from_id, name, message); + // TODO: after LLTrans hits release, get "busy response" into translatable file + snprintf(buffer, sizeof(buffer), "%s (%s): %s", name, "busy response", (message+message_offset)); /* Flawfinder: ignore */ + gIMMgr->addMessage(session_id, from_id, name, buffer); } break; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 8398c3c9d7..b902599e88 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -1212,6 +1212,7 @@ U32 LLViewerObjectList::renderObjectsForSelect(LLCamera &camera, BOOL pick_parce // render pickable ui elements, like names, etc. LLHUDObject::renderAllForSelect(); gGL.flush(); + LLVertexBuffer::unbind(); gRenderForSelect = FALSE; diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index 2b475ce9f9..0259d4896c 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -103,6 +103,12 @@ void LLViewerParcelMedia::update(LLParcel* parcel) // we're in a parcel bool new_parcel = false; S32 parcelid = parcel->getLocalID(); + + if(!gAgent.getRegion()) + { + llerrs << "gAgent's region is NULL." << llendl ; + } + LLUUID regionid = gAgent.getRegion()->getRegionID(); if (parcelid != sMediaParcelLocalID || regionid != sMediaRegionID) { diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp index d190d2f12c..342d8c7222 100644 --- a/indra/newview/llviewerparceloverlay.cpp +++ b/indra/newview/llviewerparceloverlay.cpp @@ -48,6 +48,8 @@ #include "llagent.h" #include "llviewercamera.h" #include "llviewerimagelist.h" +#include "llselectmgr.h" +#include "llfloatertools.h" #include "llglheaders.h" const U8 OVERLAY_IMG_COMPONENTS = 4; @@ -839,31 +841,34 @@ S32 LLViewerParcelOverlay::renderPropertyLines () gGL.end(); - LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_GREATER); - - colorp = mColorArray + BYTES_PER_COLOR * i; - vertexp = mVertexArray + FLOATS_PER_VERTEX * i; + if (LLSelectMgr::sRenderHiddenSelections && gFloaterTools && gFloaterTools->getVisible()) + { + LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_GREATER); + + colorp = mColorArray + BYTES_PER_COLOR * i; + vertexp = mVertexArray + FLOATS_PER_VERTEX * i; - gGL.begin(LLVertexBuffer::TRIANGLE_STRIP); + gGL.begin(LLVertexBuffer::TRIANGLE_STRIP); - for (j = 0; j < vertex_per_edge; j++) - { - U8 color[4]; - color[0] = colorp[0]; - color[1] = colorp[1]; - color[2] = colorp[2]; - color[3] = colorp[3]/4; + for (j = 0; j < vertex_per_edge; j++) + { + U8 color[4]; + color[0] = colorp[0]; + color[1] = colorp[1]; + color[2] = colorp[2]; + color[3] = colorp[3]/4; - gGL.color4ubv(color); - gGL.vertex3fv(vertexp); + gGL.color4ubv(color); + gGL.vertex3fv(vertexp); - colorp += BYTES_PER_COLOR; - vertexp += FLOATS_PER_VERTEX; - } + colorp += BYTES_PER_COLOR; + vertexp += FLOATS_PER_VERTEX; + } - drawn += vertex_per_edge; + drawn += vertex_per_edge; - gGL.end(); + gGL.end(); + } } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 292fa83918..d7dfd8ac4a 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -4048,7 +4048,10 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) } // render collision normal - if (sShowFootPlane && mDrawable.notNull()) + // *NOTE: this is disabled (there is no UI for enabling sShowFootPlane) due + // to DEV-14477. the code is left here to aid in tracking down the cause + // of the crash in the future. -brad + if (!gRenderForSelect && sShowFootPlane && mDrawable.notNull()) { LLVector3 slaved_pos = mDrawable->getPositionAgent(); LLVector3 foot_plane_normal(mFootPlane.mV[VX], mFootPlane.mV[VY], mFootPlane.mV[VZ]); @@ -4076,7 +4079,9 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) gGL.vertex3f(collide_point.mV[VX], collide_point.mV[VY], collide_point.mV[VZ]); gGL.vertex3f(collide_point.mV[VX] + mFootPlane.mV[VX], collide_point.mV[VY] + mFootPlane.mV[VY], collide_point.mV[VZ] + mFootPlane.mV[VZ]); - }gGL.end(); + } + gGL.end(); + gGL.flush(); } //-------------------------------------------------------------------- // render all geomety attached to the skeleton diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 4972ce33ea..18b99d8b74 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1643,6 +1643,8 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) LLFastTimer ftm(LLFastTimer::FTM_STATESORT); LLMemType mt(LLMemType::MTYPE_PIPELINE); + //LLVertexBuffer::unbind(); + grabReferences(result); { @@ -2466,6 +2468,8 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) } } + LLVertexBuffer::unbind(); + LLGLState::checkStates(); LLGLState::checkTextureChannels(); LLGLState::checkClientArrays(); @@ -4759,7 +4763,6 @@ void LLPipeline::renderBloom(BOOL for_snapshot) LLGLDisable blend(GL_BLEND); - //tex unit 0 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); @@ -4806,6 +4809,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot) glMatrixMode(GL_MODELVIEW); glPopMatrix(); + LLVertexBuffer::unbind(); + LLGLState::checkStates(); LLGLState::checkTextureChannels(); |