FIRE-15194: Avatar picker doesn't work anymore when using legacy simulator messages

Ansariel 2014-12-18 15:03:38 +01:00
parent abb02c6c66
commit 0d4a1ae9df
2 changed files with 30 additions and 1 deletions

View File

@ -65,6 +65,9 @@
//put it back as a member once the legacy path is out?
static std::map<LLUUID, LLAvatarName> sAvatarNameMap;
// <FS:Ansariel> FIRE-15194: Avatar picker doesn't work anymore when using legacy simulator messages
LLFloaterAvatarPicker::query_id_name_map_t LLFloaterAvatarPicker::sQueryNameMap;
LLFloaterAvatarPicker* LLFloaterAvatarPicker::show(select_callback_t callback,
BOOL allow_multiple,
BOOL closeOnSelect,
@ -219,6 +222,14 @@ LLFloaterAvatarPicker::~LLFloaterAvatarPicker()
}
// </FS:Ansariel>
// <FS:Ansariel> FIRE-15194: Avatar picker doesn't work anymore when using legacy simulator messages
query_id_name_map_t::iterator found = sQueryNameMap.find(mQueryID);
if (found != sQueryNameMap.end())
{
sQueryNameMap.erase(found);
}
// </FS:Ansariel>
gFocusMgr.releaseFocusIfNeeded( this );
}
@ -648,6 +659,9 @@ void LLFloaterAvatarPicker::find()
}
else
{
// <FS:Ansariel> FIRE-15194: Avatar picker doesn't work anymore when using legacy simulator messages
sQueryNameMap[mQueryID] = getKey().asString();
LLMessageSystem* msg = gMessageSystem;
msg->newMessage("AvatarPickerRequest");
msg->nextBlock("AgentData");
@ -774,7 +788,17 @@ void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void*
// Not for us
if (agent_id != gAgent.getID()) return;
LLFloaterAvatarPicker* floater = LLFloaterReg::findTypedInstance<LLFloaterAvatarPicker>("avatar_picker");
// <FS:Ansariel> FIRE-15194: Avatar picker doesn't work anymore when using legacy simulator messages
//LLFloaterAvatarPicker* floater = LLFloaterReg::findTypedInstance<LLFloaterAvatarPicker>("avatar_picker");
query_id_name_map_t::iterator found = sQueryNameMap.find(query_id);
if (found == sQueryNameMap.end())
{
return;
}
std::string floater_key = LLSD(found->second);
sQueryNameMap.erase(found);
LLFloaterAvatarPicker* floater = LLFloaterReg::findTypedInstance<LLFloaterAvatarPicker>("avatar_picker", floater_key);
// </FS:Ansariel>
// floater is closed or these are not results from our last request
if (NULL == floater || query_id != floater->mQueryID)

View File

@ -68,6 +68,11 @@ public:
void openFriendsTab();
BOOL isExcludeAgentFromSearchResults() {return mExcludeAgentFromSearchResults;}
// <FS:Ansariel> FIRE-15194: Avatar picker doesn't work anymore when using legacy simulator messages
typedef std::map<LLUUID, std::string> query_id_name_map_t;
static query_id_name_map_t sQueryNameMap;
// </FS:Ansariel>
private:
void editKeystroke(class LLLineEditor* caller, void* user_data);
// <FS:Ansariel> Search by UUID