diff options
Diffstat (limited to 'linden/indra/newview/llmutelist.cpp')
-rw-r--r-- | linden/indra/newview/llmutelist.cpp | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/linden/indra/newview/llmutelist.cpp b/linden/indra/newview/llmutelist.cpp index 0cdfe83..fe42608 100644 --- a/linden/indra/newview/llmutelist.cpp +++ b/linden/indra/newview/llmutelist.cpp | |||
@@ -97,6 +97,26 @@ const char AGENT_SUFFIX[] = " (resident)"; | |||
97 | const char OBJECT_SUFFIX[] = " (object)"; | 97 | const char OBJECT_SUFFIX[] = " (object)"; |
98 | const char GROUP_SUFFIX[] = " (group)"; | 98 | const char GROUP_SUFFIX[] = " (group)"; |
99 | 99 | ||
100 | |||
101 | LLMute::LLMute(const LLUUID& id, const std::string& name, EType type, U32 flags) | ||
102 | : mID(id), | ||
103 | mName(name), | ||
104 | mType(type), | ||
105 | mFlags(flags) | ||
106 | { | ||
107 | // muting is done by root objects only - try to find this objects root | ||
108 | LLViewerObject *objectp = gObjectList.findObject(mID); | ||
109 | if ((objectp) && (!objectp->isAvatar())) | ||
110 | { | ||
111 | LLViewerObject *parentp = (LLViewerObject *)objectp->getParent(); | ||
112 | if (parentp) | ||
113 | { | ||
114 | mID = parentp->getID(); | ||
115 | } | ||
116 | } | ||
117 | } | ||
118 | |||
119 | |||
100 | std::string LLMute::getDisplayName() const | 120 | std::string LLMute::getDisplayName() const |
101 | { | 121 | { |
102 | std::string name_with_suffix = mName; | 122 | std::string name_with_suffix = mName; |
@@ -216,17 +236,24 @@ void LLMuteList::loadUserVolumes() | |||
216 | //----------------------------------------------------------------------------- | 236 | //----------------------------------------------------------------------------- |
217 | LLMuteList::~LLMuteList() | 237 | LLMuteList::~LLMuteList() |
218 | { | 238 | { |
219 | std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml"); | 239 | // If we quit from the login screen we will not have an SL account |
220 | LLSD settings_llsd; | 240 | // name. Don't try to save, otherwise we'll dump a file in |
221 | 241 | // C:\Program Files\SecondLife\ JC | |
222 | for(user_volume_map_t::iterator iter = mUserVolumeSettings.begin(); iter != mUserVolumeSettings.end(); ++iter) | 242 | std::string user_dir = gDirUtilp->getLindenUserDir(); |
243 | if (!user_dir.empty()) | ||
223 | { | 244 | { |
224 | settings_llsd[iter->first.asString()] = iter->second; | 245 | std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml"); |
225 | } | 246 | LLSD settings_llsd; |
226 | 247 | ||
227 | llofstream file; | 248 | for(user_volume_map_t::iterator iter = mUserVolumeSettings.begin(); iter != mUserVolumeSettings.end(); ++iter) |
228 | file.open(filename); | 249 | { |
229 | LLSDSerialize::toPrettyXML(settings_llsd, file); | 250 | settings_llsd[iter->first.asString()] = iter->second; |
251 | } | ||
252 | |||
253 | llofstream file; | ||
254 | file.open(filename); | ||
255 | LLSDSerialize::toPrettyXML(settings_llsd, file); | ||
256 | } | ||
230 | } | 257 | } |
231 | 258 | ||
232 | BOOL LLMuteList::isLinden(const std::string& name) const | 259 | BOOL LLMuteList::isLinden(const std::string& name) const |