diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llavatariconctrl.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.cpp | 44 | 
2 files changed, 38 insertions, 11 deletions
| diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index c131dc641b..44bf698caa 100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -247,6 +247,11 @@ void LLAvatarIconCtrl::setValue(const LLSD& value)  				app->addObserver(mAvatarId, this);  				app->sendAvatarPropertiesRequest(mAvatarId);  			} +            else if (gAgentID == mAvatarId) +            { +                // Always track any changes to our own icon id +                app->addObserver(mAvatarId, this); +            }  		}  	}  	else diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 8ac1efe8e7..643d0f4df9 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -276,9 +276,9 @@ void request_avatar_properties_coro(std::string cap_url, LLUUID agent_id)  //TODO: changes take two minutes to propagate!  // Add some storage that holds updated data for two minutes  // for new instances to reuse the data -// Profile data is only relevant to won avatar, but notes -// are for everybody -void put_avatar_properties_coro(std::string cap_url, LLUUID agent_id, LLSD data) +// Profile data is only relevant to own avatar, but notes +// are for everybody (no onger an issue?) +void put_avatar_properties_coro(std::string cap_url, LLUUID agent_id, LLSD data, std::function<void(bool)> callback)  {      LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);      LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t @@ -299,10 +299,16 @@ void put_avatar_properties_coro(std::string cap_url, LLUUID agent_id, LLSD data)      if (!status)      {          LL_WARNS("AvatarProperties") << "Failed to put agent information " << data << " for id " << agent_id << LL_ENDL; -        return; +    } +    else +    { +        LL_DEBUGS("AvatarProperties") << "Agent id: " << agent_id << " Data: " << data << " Result: " << httpResults << LL_ENDL;      } -    LL_DEBUGS("AvatarProperties") << "Agent id: " << agent_id << " Data: " << data << " Result: " << httpResults << LL_ENDL; +    if (callback) +    { +        callback(status); +    }  }  LLUUID post_profile_image(std::string cap_url, const LLSD &first_data, std::string path_to_image, LLHandle<LLPanel> *handle) @@ -447,6 +453,13 @@ void post_profile_image_coro(std::string cap_url, EProfileImageType type, std::s          }      } +    if (type == PROFILE_IMAGE_SL && result.notNull()) +    { +        LLAvatarIconIDCache::getInstance()->add(gAgentID, result); +        // Should trigger callbacks in icon controls +        LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(gAgentID); +    } +      // Cleanup      LLFile::remove(path_to_image);      delete handle; @@ -1823,7 +1836,7 @@ void LLPanelProfileSecondLife::onShowInSearchCallback()          LLSD data;          data["allow_publish"] = mAllowPublish;          LLCoros::instance().launch("putAgentUserInfoCoro", -            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), data)); +            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), data, nullptr));      }      else      { @@ -1838,7 +1851,7 @@ void LLPanelProfileSecondLife::onSaveDescriptionChanges()      if (!cap_url.empty())      {          LLCoros::instance().launch("putAgentUserInfoCoro", -            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("sl_about_text", mDescriptionText))); +            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("sl_about_text", mDescriptionText), nullptr));      }      else      { @@ -1999,10 +2012,19 @@ void LLPanelProfileSecondLife::onCommitProfileImage(const LLUUID& id)      std::string cap_url = gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP);      if (!cap_url.empty())      { +        std::function<void(bool)> callback = [id](bool result) +        { +            if (result) +            { +                LLAvatarIconIDCache::getInstance()->add(gAgentID, id); +                // Should trigger callbacks in icon controls +                LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(gAgentID); +            } +        };          LLSD params;          params["sl_image_id"] = id;          LLCoros::instance().launch("putAgentUserInfoCoro", -            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), params)); +            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), params, callback));          mImageId = id;          if (mImageId == LLUUID::null) @@ -2353,7 +2375,7 @@ void LLPanelProfileFirstLife::onCommitPhoto(const LLUUID& id)          LLSD params;          params["fl_image_id"] = id;          LLCoros::instance().launch("putAgentUserInfoCoro", -            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), params)); +            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), params, nullptr));          mImageId = id;          if (mImageId.notNull()) @@ -2397,7 +2419,7 @@ void LLPanelProfileFirstLife::onSaveDescriptionChanges()      if (!cap_url.empty())      {          LLCoros::instance().launch("putAgentUserInfoCoro", -            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("fl_about_text", mCurrentDescription))); +            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("fl_about_text", mCurrentDescription), nullptr));      }      else      { @@ -2540,7 +2562,7 @@ void LLPanelProfileNotes::onSaveNotesChanges()      if (!cap_url.empty())      {          LLCoros::instance().launch("putAgentUserInfoCoro", -            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("notes", mCurrentNotes))); +            boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("notes", mCurrentNotes), nullptr));      }      else      { | 
