diff options
-rw-r--r-- | indra/newview/llappearancemgr.cpp | 47 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_advanced.xml | 57 |
2 files changed, 30 insertions, 74 deletions
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 585d42f66d..0fe236c056 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -321,7 +321,7 @@ public: ~LLWearableHoldingPattern(); bool pollCompletion(); - bool isDone(); + bool isFetchCompleted(); bool isTimedOut(); typedef std::list<LLFoundData> found_list_t; @@ -330,10 +330,12 @@ public: LLInventoryModel::item_array_t mGestItems; S32 mResolved; LLTimer mWaitTime; + bool mFired; }; LLWearableHoldingPattern::LLWearableHoldingPattern(): - mResolved(0) + mResolved(0), + mFired(false) { } @@ -341,31 +343,34 @@ LLWearableHoldingPattern::~LLWearableHoldingPattern() { } -bool LLWearableHoldingPattern::isDone() +bool LLWearableHoldingPattern::isFetchCompleted() { - if (mResolved >= (S32)mFoundList.size()) - return true; // have everything we were waiting for - else if (isTimedOut()) - { - llwarns << "Exceeded max wait time, updating appearance based on what has arrived" << llendl; - return true; - } - return false; - + return (mResolved >= (S32)mFoundList.size()); // have everything we were waiting for? } bool LLWearableHoldingPattern::isTimedOut() { - static F32 max_wait_time = 15.0; // give up if wearable fetches haven't completed in max_wait_time seconds. + static F32 max_wait_time = 20.0; // give up if wearable fetches haven't completed in max_wait_time seconds. return mWaitTime.getElapsedTimeF32() > max_wait_time; } bool LLWearableHoldingPattern::pollCompletion() { - bool done = isDone(); - llinfos << "polling, done status: " << done << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl; + bool completed = isFetchCompleted(); + bool timed_out = isTimedOut(); + bool done = completed || timed_out; + + llinfos << "polling, done status: " << completed << " timed out? " << timed_out << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl; + if (done) { + mFired = true; + + if (timed_out) + { + llwarns << "Exceeded max wait time for wearables, updating appearance based on what has arrived" << llendl; + } + // Activate all gestures in this folder if (mGestItems.count() > 0) { @@ -397,7 +402,11 @@ bool LLWearableHoldingPattern::pollCompletion() LLAgentWearables::userUpdateAttachments(mObjItems); } - delete this; + if (completed) + { + // Only safe to delete if all wearable callbacks completed. + delete this; + } } return done; } @@ -432,7 +441,11 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items) static void onWearableAssetFetch(LLWearable* wearable, void* data) { LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data; - + if (holder->mFired) + { + llwarns << "called after holder fired" << llendl; + } + if(wearable) { for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin(); diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 4d14d46743..05a3771edf 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -266,61 +266,4 @@ Automatic position for: <button.commit_callback function="Pref.VoiceSetMiddleMouse" /> </button> - <text - follows="left|top" - type="string" - length="1" - height="13" - layout="topleft" - left="30" - top_pad="8" - name="AspectRatioLabel1" - tool_tip="width / height" - label_width="50" - width="120"> - Aspect ratio - </text> - <combo_box - allow_text_entry="true" - height="23" - follows="left|top" - layout="topleft" - left="80" - max_chars="100" - name="aspect_ratio" - tool_tip="width / height" - width="150"> - <combo_box.item - enabled="true" - label=" 4:3 (Standard CRT)" - name="item1" - value="1.333333" /> - <combo_box.item - enabled="true" - label=" 5:4 (1280x1024 LCD)" - name="item2" - value="1.25" /> - <combo_box.item - enabled="true" - label=" 8:5 (Widescreen)" - name="item3" - value="1.6" /> - <combo_box.item - enabled="true" - label=" 16:9 (Widescreen)" - name="item4" - value="1.7777777" /> - </combo_box> - <check_box - control_name="FullScreenAutoDetectAspectRatio" - follows="left|top" - height="25" - label="Automatic" - layout="topleft" - left_pad="10" - name="aspect_auto_detect" - width="256"> - <check_box.commit_callback - function="Pref.AutoDetectAspect" /> - </check_box> </panel> |