summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llcharacter/llkeyframemotion.cpp5
-rw-r--r--indra/llui/llmodaldialog.cpp10
-rw-r--r--indra/llui/llmodaldialog.h2
-rw-r--r--indra/newview/llimpanel.cpp66
-rw-r--r--indra/newview/llimview.cpp41
-rw-r--r--indra/newview/llvoiceclient.cpp10
6 files changed, 72 insertions, 62 deletions
diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp
index 44a2425b1b..76fa0b93ee 100644
--- a/indra/llcharacter/llkeyframemotion.cpp
+++ b/indra/llcharacter/llkeyframemotion.cpp
@@ -534,6 +534,11 @@ LLMotion::LLMotionInitStatus LLKeyframeMotion::onInitialize(LLCharacter *charact
joint_state->setUsage(joint_motion->mUsage);
joint_state->setPriority(joint_motion->mPriority);
}
+ else
+ {
+ // add dummy joint state with no associated joint
+ mJointStates.push_back(new LLJointState);
+ }
}
mAssetStatus = ASSET_LOADED;
setupPose();
diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp
index ca8020fe70..af14ec418f 100644
--- a/indra/llui/llmodaldialog.cpp
+++ b/indra/llui/llmodaldialog.cpp
@@ -70,6 +70,16 @@ LLModalDialog::~LLModalDialog()
}
}
+// virtual
+void LLModalDialog::open() /* Flawfinder: ignore */
+{
+ // SJB: Hack! Make sure we don't ever host a modal dialog
+ LLMultiFloater* thost = LLFloater::sHostp;
+ LLFloater::sHostp = NULL;
+ LLFloater::open();
+ LLFloater::sHostp = thost;
+}
+
void LLModalDialog::reshape(S32 width, S32 height, BOOL called_from_parent)
{
LLFloater::reshape(width, height, called_from_parent);
diff --git a/indra/llui/llmodaldialog.h b/indra/llui/llmodaldialog.h
index 2355861f04..dcd5644f60 100644
--- a/indra/llui/llmodaldialog.h
+++ b/indra/llui/llmodaldialog.h
@@ -47,6 +47,8 @@ public:
LLModalDialog( const LLString& title, S32 width, S32 height, BOOL modal = true );
/*virtual*/ ~LLModalDialog();
+ /*virtual*/ void open(); /* Flawfinder: ignore */
+
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = 1);
/*virtual*/ void startModal();
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index b1fefc4f5d..0c34ef3ebc 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -305,6 +305,7 @@ void LLVoiceCallCapResponder::error(U32 status, const std::string& reason)
{
if ( 403 == status )
{
+ //403 == no ability
LLNotifyBox::showXml(
"VoiceNotAllowed",
channelp->getNotifyArgs());
@@ -1403,48 +1404,6 @@ private:
LLUUID mSessionID;
};
-class LLSessionImmediateInviteResponder : public LLHTTPClient::Responder
-{
-public:
- LLSessionImmediateInviteResponder(
- const LLUUID& session_id,
- const std::string& chat_req_url,
- const LLSD& post_data)
- {
- mSessionID = session_id;
- mURL = chat_req_url;
- mPostData = post_data;
- }
-
- void error(U32 statusNum, const std::string& reason)
- {
- if ( statusNum == 400 )
- {
- //hrm 400 indicates invalid parameters...more
- //than likely the method doesn't exist
- //so try a soon to be deprecated old school way of doing this
- mPostData["method"] = "invite";
-
- LLHTTPClient::post(
- mURL,
- mPostData,
- new LLSessionInviteResponder(mSessionID));
- }
- else
- {
- //throw something back to the viewer here?
- llinfos << "Error inviting all agents to session" << llendl;
- }
- }
-
-private:
- LLUUID mSessionID;
- LLSD mPostData;
-
- std::string mURL;
-};
-
-
BOOL LLFloaterIMPanel::inviteToSession(const LLDynamicArray<LLUUID>& ids)
{
LLViewerRegion* region = gAgent.getRegion();
@@ -1469,16 +1428,13 @@ BOOL LLFloaterIMPanel::inviteToSession(const LLDynamicArray<LLUUID>& ids)
data["params"].append(ids.get(i));
}
- data["method"] = "immediate invite";
+ data["method"] = "invite";
data["session-id"] = mSessionUUID;
LLHTTPClient::post(
url,
data,
- new LLSessionImmediateInviteResponder(
- mSessionUUID,
- url,
- data));
-
+ new LLSessionInviteResponder(
+ mSessionUUID));
}
else
{
@@ -2155,7 +2111,7 @@ void LLFloaterIMPanel::showSessionStartError(
"ChatterBoxSessionStartError",
args,
onConfirmForceCloseError,
- this);
+ new LLUUID(mSessionUUID));
}
void LLFloaterIMPanel::showSessionEventError(
@@ -2163,7 +2119,7 @@ void LLFloaterIMPanel::showSessionEventError(
const std::string& error_string)
{
LLString::format_map_t args;
- args["[REASON]"] =
+ args["[REASON]"] =
LLFloaterIM::sErrorStringsMap[error_string];
args["[EVENT]"] =
LLFloaterIM::sEventStringsMap[event_string];
@@ -2199,9 +2155,15 @@ void LLFloaterIMPanel::onKickSpeaker(void* user_data)
void LLFloaterIMPanel::onConfirmForceCloseError(S32 option, void* data)
{
//only 1 option really
- LLFloaterIMPanel* floater = ((LLFloaterIMPanel*) data);
+ LLUUID session_id = *((LLUUID*) data);
- if ( floater ) floater->close(FALSE);
+ if ( gIMMgr )
+ {
+ LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(
+ session_id);
+
+ if ( floaterp ) floaterp->close(FALSE);
+ }
}
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index f93f5810c5..2be41f01c5 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -177,6 +177,27 @@ BOOL LLFloaterIM::postBuild()
}
if ( sErrorStringsMap.end() ==
+ sErrorStringsMap.find("no_ability") )
+ {
+ sErrorStringsMap["no_ability"] =
+ getFormattedUIString("no_ability_error");
+ }
+
+ if ( sErrorStringsMap.end() ==
+ sErrorStringsMap.find("muted") )
+ {
+ sErrorStringsMap["muted"] =
+ getFormattedUIString("muted_error");
+ }
+
+ if ( sErrorStringsMap.end() ==
+ sErrorStringsMap.find("not_a_moderator") )
+ {
+ sErrorStringsMap["not_a_moderator"] =
+ getFormattedUIString("not_a_mod_error");
+ }
+
+ if ( sErrorStringsMap.end() ==
sErrorStringsMap.find("does not exist") )
{
sErrorStringsMap["does not exist"] =
@@ -195,6 +216,13 @@ BOOL LLFloaterIM::postBuild()
getFormattedUIString("message_session_event");
}
+
+ if ( sEventStringsMap.end() == sEventStringsMap.find("mute") )
+ {
+ sEventStringsMap["mute"] = getFormattedUIString(
+ "mute_agent_event");
+ }
+
if ( sForceCloseSessionMap.end() ==
sForceCloseSessionMap.find("removed") )
{
@@ -832,8 +860,7 @@ public:
}
void error(U32 statusNum, const std::string& reason)
- {
-
+ {
//throw something back to the viewer here?
if ( gIMMgr )
{
@@ -843,7 +870,7 @@ public:
LLFloaterIMPanel* floaterp =
gIMMgr->findFloaterBySession(mSessionID);
- if (floaterp)
+ if ( floaterp )
{
std::string error_string;
@@ -853,7 +880,7 @@ public:
}
else
{
- error_string = "generic_request_error";
+ error_string = "generic";
}
floaterp->showSessionStartError(
@@ -1428,8 +1455,6 @@ public:
//check for 'text' or 'voice' invitations...bleh
if ( input["body"].has("instantmessage") )
{
- LLString capability = input["body"]["capabilities"]["call"].asString();
-
LLSD message_params =
input["body"]["instantmessage"]["message_params"];
@@ -1537,12 +1562,12 @@ public:
{
LLSD data;
data["method"] = "accept invitation";
- data["session-id"] = input["body"]["session_id"];
+ data["session-id"] = session_id;
LLHTTPClient::post(
url,
data,
new LLViewerChatterBoxInvitationAcceptResponder(
- input["body"]["session_id"].asUUID(),
+ session_id,
LLIMMgr::INVITATION_TYPE_INSTANT_MESSAGE));
}
} //end if invitation has instant message
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 1cbb1adada..2b151a5902 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -3230,7 +3230,6 @@ void LLVoiceClient::parcelChanged()
std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest");
LLSD data;
- data["method"] = "call";
LLHTTPClient::post(
url,
data,
@@ -3996,7 +3995,14 @@ void LLVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::EStatusTy
{
case 20713: status = LLVoiceClientStatusObserver::ERROR_CHANNEL_FULL; break;
case 20714: status = LLVoiceClientStatusObserver::ERROR_CHANNEL_LOCKED; break;
- case 20715: status = LLVoiceClientStatusObserver::ERROR_NOT_AVAILABLE;
+ case 20715:
+ //invalid channel, we may be using a set of poorly cached
+ //info
+ status = LLVoiceClientStatusObserver::ERROR_NOT_AVAILABLE;
+ break;
+ case 1009:
+ //invalid username and password
+ status = LLVoiceClientStatusObserver::ERROR_NOT_AVAILABLE;
break;
}