Properly disconnect RlvBehaviorCallbacks in contacts and quickprefs floater
parent
69c9b91859
commit
204393bd99
|
|
@ -91,7 +91,8 @@ FSFloaterContacts::FSFloaterContacts(const LLSD& seed)
|
|||
mGroupList(NULL),
|
||||
mAllowRightsChange(TRUE),
|
||||
mNumRightsChanged(0),
|
||||
mSortByUserName(LLCachedControl<bool>(gSavedSettings,"FSSortContactsByUserName", FALSE))
|
||||
mSortByUserName(LLCachedControl<bool>(gSavedSettings,"FSSortContactsByUserName", FALSE)),
|
||||
mRlvBehaviorCallbackConnection()
|
||||
{
|
||||
mObserver = new LLLocalFriendsObserver(this);
|
||||
LLAvatarTracker::instance().addObserver(mObserver);
|
||||
|
|
@ -105,6 +106,11 @@ FSFloaterContacts::~FSFloaterContacts()
|
|||
LLVoiceClient::getInstance()->removeObserver(mObserver);
|
||||
LLAvatarTracker::instance().removeObserver(mObserver);
|
||||
delete mObserver;
|
||||
|
||||
if (mRlvBehaviorCallbackConnection.connected())
|
||||
{
|
||||
mRlvBehaviorCallbackConnection.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
BOOL FSFloaterContacts::postBuild()
|
||||
|
|
@ -165,7 +171,7 @@ BOOL FSFloaterContacts::postBuild()
|
|||
mGroupsTab->childSetAction("invite_btn", boost::bind(&FSFloaterContacts::onGroupInviteButtonClicked, this));
|
||||
mGroupsTab->setDefaultBtn("chat_btn");
|
||||
|
||||
gRlvHandler.setBehaviourCallback(boost::bind(&FSFloaterContacts::updateRlvRestrictions, this, _1));
|
||||
mRlvBehaviorCallbackConnection = gRlvHandler.setBehaviourCallback(boost::bind(&FSFloaterContacts::updateRlvRestrictions, this, _1));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,6 +146,7 @@ private:
|
|||
void childShowTab(const std::string& id, const std::string& tabname);
|
||||
|
||||
void updateRlvRestrictions(ERlvBehaviour behavior);
|
||||
boost::signals2::connection mRlvBehaviorCallbackConnection;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -95,7 +95,8 @@ FloaterQuickPrefs::QuickPrefsXMLEntry::QuickPrefsXMLEntry()
|
|||
// </FS:Zi>
|
||||
|
||||
FloaterQuickPrefs::FloaterQuickPrefs(const LLSD& key)
|
||||
: LLTransientDockableFloater(NULL, true, key)
|
||||
: LLTransientDockableFloater(NULL, true, key),
|
||||
mRlvBehaviorCallbackConnection()
|
||||
{
|
||||
// For Phototools
|
||||
mCommitCallbackRegistrar.add("Quickprefs.ShaderChanged", boost::bind(&handleSetShaderChanged, LLSD()));
|
||||
|
|
@ -103,6 +104,10 @@ FloaterQuickPrefs::FloaterQuickPrefs(const LLSD& key)
|
|||
|
||||
FloaterQuickPrefs::~FloaterQuickPrefs()
|
||||
{
|
||||
if (mRlvBehaviorCallbackConnection.connected())
|
||||
{
|
||||
mRlvBehaviorCallbackConnection.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
void FloaterQuickPrefs::onOpen(const LLSD& key)
|
||||
|
|
@ -202,7 +207,7 @@ void FloaterQuickPrefs::initCallbacks()
|
|||
gSavedSettings.getControl("QuickPrefsEditMode")->getSignal()->connect(boost::bind(&FloaterQuickPrefs::onEditModeChanged, this)); // <FS:Zi> Dynamic Quickprefs
|
||||
}
|
||||
|
||||
gRlvHandler.setBehaviourCallback(boost::bind(&FloaterQuickPrefs::updateRlvRestrictions, this, _1, _2));
|
||||
mRlvBehaviorCallbackConnection = gRlvHandler.setBehaviourCallback(boost::bind(&FloaterQuickPrefs::updateRlvRestrictions, this, _1, _2));
|
||||
}
|
||||
|
||||
void FloaterQuickPrefs::loadPresets()
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ private:
|
|||
void onClickDayCycleNext();
|
||||
void onClickResetToRegionDefault();
|
||||
|
||||
boost::signals2::connection mRlvBehaviorCallbackConnection;
|
||||
void updateRlvRestrictions(ERlvBehaviour behavior, ERlvParamType type);
|
||||
void enableWindlightButtons(BOOL enable);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue