Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer
This commit is contained in:
@@ -101,7 +101,10 @@ void AIStateMachineThreadBase::multiplex_impl(state_type run_state)
|
||||
break;
|
||||
case wait_stopped:
|
||||
if (!mThread->isStopped())
|
||||
{
|
||||
yield();
|
||||
break;
|
||||
}
|
||||
// We're done!
|
||||
//
|
||||
// We can only get here when AIThreadImpl::done called cont(), (very
|
||||
|
||||
@@ -103,10 +103,12 @@ if (LINUX)
|
||||
-pthread
|
||||
)
|
||||
|
||||
# Don't catch SIGCHLD in our base application class for the viewer
|
||||
# some of our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh!
|
||||
# The viewer doesn't need to catch SIGCHLD anyway.
|
||||
add_definitions(-DLL_IGNORE_SIGCHLD)
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_FORTIFY_SOURCE=2 ")
|
||||
|
||||
# Don't catch SIGCHLD in our base application class for the viewer
|
||||
# some of our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh!
|
||||
# The viewer doesn't need to catch SIGCHLD anyway.
|
||||
add_definitions(-DLL_IGNORE_SIGCHLD)
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
find_program(GXX g++)
|
||||
@@ -136,16 +138,6 @@ if (LINUX)
|
||||
OUTPUT_VARIABLE CXX_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
# Here's a giant hack for Fedora 8, where we can't use
|
||||
# _FORTIFY_SOURCE if we're using a compiler older than gcc 4.1.
|
||||
if (${GXX_VERSION} STREQUAL ${CXX_VERSION})
|
||||
add_definitions(-D_FORTIFY_SOURCE=2)
|
||||
else (${GXX_VERSION} STREQUAL ${CXX_VERSION})
|
||||
if (NOT ${GXX_VERSION} MATCHES " 4.1.*Red Hat")
|
||||
add_definitions(-D_FORTIFY_SOURCE=2)
|
||||
endif (NOT ${GXX_VERSION} MATCHES " 4.1.*Red Hat")
|
||||
endif (${GXX_VERSION} STREQUAL ${CXX_VERSION})
|
||||
|
||||
#Lets actually get a numerical version of gxx's version
|
||||
STRING(REGEX REPLACE ".* ([0-9])\\.([0-9])\\.([0-9]).*" "\\1\\2\\3" CXX_VERSION ${CXX_VERSION})
|
||||
|
||||
@@ -190,10 +182,6 @@ if (LINUX)
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
|
||||
endif (${ARCH} STREQUAL "x86_64")
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
add_definitions(
|
||||
-D_FORTIFY_SOURCE=2
|
||||
)
|
||||
|
||||
if (NOT STANDALONE)
|
||||
# this stops us requiring a really recent glibc at runtime
|
||||
add_definitions(-fno-stack-protector)
|
||||
@@ -206,9 +194,6 @@ if (LINUX)
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
|
||||
add_definitions(
|
||||
-D_FORTIFY_SOURCE=2
|
||||
)
|
||||
|
||||
if (NOT STANDALONE)
|
||||
# this stops us requiring a really recent glibc at runtime
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "sys.h"
|
||||
#include "llpathinglib.h"
|
||||
|
||||
void LLPathingLib::initSystem()
|
||||
|
||||
@@ -89,6 +89,10 @@ const U8 PERM_GROUP = 0x04;
|
||||
const U8 PERM_EVERYONE = 0x08;
|
||||
const U8 PERM_NEXT_OWNER = 0x10;
|
||||
|
||||
// Boolean values for "Set".
|
||||
const U8 PERM_SET_TRUE = 0x1;
|
||||
const U8 PERM_SET_FALSE = 0x0;
|
||||
|
||||
// This is just a quickie debugging key
|
||||
// no modify: PERM_ALL & ~PERM_MODIFY = 0x7fffbfff
|
||||
// no copy: PERM_ALL & ~PERM_COPY = 0x7fff7fff
|
||||
|
||||
@@ -2673,21 +2673,21 @@ AIPerService::Approvement* AIPerService::approveHTTPRequestFor(AIPerServicePtr c
|
||||
PerService_wat per_service_w(*per_service);
|
||||
CapabilityType& ct(per_service_w->mCapabilityType[capability_type]);
|
||||
S32 const pipelined_requests_per_capability_type = ct.pipelined_requests();
|
||||
reject = pipelined_requests_per_capability_type >= ct.mMaxPipelinedRequests;
|
||||
reject = pipelined_requests_per_capability_type >= (S32)ct.mMaxPipelinedRequests;
|
||||
equal = pipelined_requests_per_capability_type == ct.mMaxPipelinedRequests;
|
||||
increment_threshold = ct.mFlags & ctf_starvation;
|
||||
decrement_threshold = (ct.mFlags & (ctf_empty | ctf_full)) == ctf_full;
|
||||
ct.mFlags = 0;
|
||||
if (decrement_threshold)
|
||||
{
|
||||
if (ct.mMaxPipelinedRequests > per_service_w->mConcurrectConnections)
|
||||
if ((int)ct.mMaxPipelinedRequests > per_service_w->mConcurrectConnections)
|
||||
{
|
||||
ct.mMaxPipelinedRequests--;
|
||||
}
|
||||
}
|
||||
else if (increment_threshold && reject)
|
||||
{
|
||||
if (ct.mMaxPipelinedRequests < 2 * per_service_w->mConcurrectConnections)
|
||||
if ((int)ct.mMaxPipelinedRequests < 2 * per_service_w->mConcurrectConnections)
|
||||
{
|
||||
ct.mMaxPipelinedRequests++;
|
||||
// Immediately take the new threshold into account.
|
||||
|
||||
@@ -451,6 +451,7 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
|
||||
gGL.getTexUnit(0)->bind(image, true);
|
||||
|
||||
gGL.color4fv(color.mV);
|
||||
gGL.diffuseColor4fv(color.mV); //workaround: Intel HD 4000
|
||||
|
||||
const S32 NUM_VERTICES = 9 * 4; // 9 quads
|
||||
LLVector2 uv[NUM_VERTICES];
|
||||
|
||||
@@ -9,6 +9,17 @@
|
||||
<string>settings_rlv.xml</string>
|
||||
</array>
|
||||
|
||||
<key>PhoenixIMAnnounceStealFocus</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Open a new IM tab when another person begins typing to you and announce that they are doing so.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>UseNewTargetOmegaCode</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* @file solidcolorV.glsl
|
||||
*
|
||||
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2007, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
uniform mat4 modelview_projection_matrix;
|
||||
|
||||
uniform vec4 color;
|
||||
|
||||
ATTRIBUTE vec3 position;
|
||||
ATTRIBUTE vec2 texcoord0;
|
||||
|
||||
VARYING vec4 vertex_color;
|
||||
VARYING vec2 vary_texcoord0;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
|
||||
vertex_color = color;
|
||||
vary_texcoord0 = texcoord0;
|
||||
}
|
||||
|
||||
@@ -328,6 +328,7 @@ void LLPrefsAscentChat::refreshValues()
|
||||
//Chat UI -----------------------------------------------------------------------------
|
||||
mWoLfVerticalIMTabs = gSavedSettings.getBOOL("WoLfVerticalIMTabs");
|
||||
mOtherChatsTornOff = gSavedSettings.getBOOL("OtherChatsTornOff");
|
||||
mIMAnnounceStealFocus = gSavedSettings.getBOOL("PhoenixIMAnnounceStealFocus");
|
||||
mShowLocalChatFloaterBar = gSavedSettings.getBOOL("ShowLocalChatFloaterBar");
|
||||
mHorizButt = gSavedSettings.getBOOL("ContactsUseHorizontalButtons");
|
||||
mOneLineIMButt = gSavedSettings.getBOOL("UseConciseIMButtons");
|
||||
@@ -561,6 +562,7 @@ void LLPrefsAscentChat::cancel()
|
||||
//Chat UI -----------------------------------------------------------------------------
|
||||
gSavedSettings.setBOOL("WoLfVerticalIMTabs", mWoLfVerticalIMTabs);
|
||||
gSavedSettings.setBOOL("OtherChatsTornOff", mOtherChatsTornOff);
|
||||
gSavedSettings.setBOOL("PhoenixIMAnnounceStealFocus", mIMAnnounceStealFocus);
|
||||
gSavedSettings.setBOOL("ShowLocalChatFloaterBar", mShowLocalChatFloaterBar);
|
||||
gSavedSettings.setBOOL("ContactsUseHorizontalButtons", mHorizButt);
|
||||
gSavedSettings.setBOOL("UseConciseIMButtons", mOneLineIMButt);
|
||||
|
||||
@@ -80,6 +80,7 @@ protected:
|
||||
//Chat UI -----------------------------------------------------------------------------
|
||||
bool mWoLfVerticalIMTabs;
|
||||
bool mOtherChatsTornOff;
|
||||
bool mIMAnnounceStealFocus;
|
||||
bool mShowLocalChatFloaterBar;
|
||||
bool mHorizButt;
|
||||
bool mOneLineIMButt;
|
||||
|
||||
@@ -236,7 +236,7 @@ void ImportTracker::get_update(S32 newid, BOOL justCreated, BOOL createSelected)
|
||||
msg->nextBlockFast(_PREHASH_ObjectData);
|
||||
msg->addU32Fast(_PREHASH_ObjectLocalID, (U32)newid);
|
||||
msg->addU8Fast(_PREHASH_Field, PERM_NEXT_OWNER);
|
||||
msg->addBOOLFast(_PREHASH_Set, PERM_ITEM_UNRESTRICTED);
|
||||
msg->addU8Fast(_PREHASH_Set, PERM_SET_TRUE);
|
||||
U32 flags = 0;
|
||||
if ( gSavedSettings.getBOOL("NextOwnerCopy") )
|
||||
{
|
||||
@@ -718,7 +718,7 @@ void ImportTracker::send_properties(LLSD& prim, int counter)
|
||||
msg->nextBlockFast(_PREHASH_ObjectData);
|
||||
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
||||
msg->addU8Fast(_PREHASH_Field, PERM_NEXT_OWNER);
|
||||
msg->addBOOLFast(_PREHASH_Set, PERM_ITEM_UNRESTRICTED);
|
||||
msg->addU8Fast(_PREHASH_Set, PERM_SET_TRUE);
|
||||
msg->addU32Fast(_PREHASH_Mask, U32(atoi(prim["next_owner_mask"].asString().c_str())));
|
||||
*//*msg->sendReliable(gAgent.getRegion()->getHost());
|
||||
|
||||
@@ -732,7 +732,7 @@ void ImportTracker::send_properties(LLSD& prim, int counter)
|
||||
msg->nextBlockFast(_PREHASH_ObjectData);
|
||||
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
||||
msg->addU8Fast(_PREHASH_Field, PERM_GROUP);
|
||||
msg->addBOOLFast(_PREHASH_Set, PERM_ITEM_UNRESTRICTED);
|
||||
msg->addU8Fast(_PREHASH_Set, PERM_SET_TRUE);
|
||||
msg->addU32Fast(_PREHASH_Mask, U32(atoi(prim["group_mask"].asString().c_str())));
|
||||
*//*msg->sendReliable(gAgent.getRegion()->getHost());
|
||||
|
||||
@@ -746,7 +746,7 @@ void ImportTracker::send_properties(LLSD& prim, int counter)
|
||||
msg->nextBlockFast(_PREHASH_ObjectData);
|
||||
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
||||
msg->addU8Fast(_PREHASH_Field, PERM_EVERYONE);
|
||||
msg->addBOOLFast(_PREHASH_Set, PERM_ITEM_UNRESTRICTED);
|
||||
msg->addU8Fast(_PREHASH_Set, PERM_SET_TRUE);
|
||||
msg->addU32Fast(_PREHASH_Mask, U32(atoi(prim["everyone_mask"].asString().c_str())));
|
||||
msg->sendReliable(gAgent.getRegion()->getHost());
|
||||
|
||||
|
||||
@@ -885,11 +885,6 @@ void LLAgent::setRegion(LLViewerRegion *regionp)
|
||||
//-----------------------------------------------------------------------------
|
||||
// getRegion()
|
||||
//-----------------------------------------------------------------------------
|
||||
LLViewerRegion *LLAgent::getRegion() const
|
||||
{
|
||||
return mRegionp;
|
||||
}
|
||||
|
||||
|
||||
const LLHost& LLAgent::getRegionHost() const
|
||||
{
|
||||
|
||||
@@ -242,7 +242,7 @@ private:
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
void setRegion(LLViewerRegion *regionp);
|
||||
LLViewerRegion *getRegion() const;
|
||||
LLViewerRegion *getRegion() const { return mRegionp; }
|
||||
const LLHost& getRegionHost() const;
|
||||
BOOL inPrelude();
|
||||
std::string getSLURL() const; //Return uri for current region
|
||||
|
||||
@@ -3921,14 +3921,14 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
|
||||
bool fUpdateAppearance = false;
|
||||
for (uuid_vec_t::const_iterator it = ids_to_remove.begin(); it != ids_to_remove.end(); ++it)
|
||||
{
|
||||
const LLInventoryItem* linked_item = gInventory.getLinkedItem(*it);
|
||||
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(linked_item)) )
|
||||
const LLUUID& linked_item_id = gInventory.getLinkedItemID(*it);
|
||||
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(gInventory.getItem(linked_item_id))) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
fUpdateAppearance = true;
|
||||
removeCOFItemLinks(linked_item->getUUID());
|
||||
removeCOFItemLinks(linked_item_id);
|
||||
}
|
||||
|
||||
if (fUpdateAppearance)
|
||||
@@ -3948,18 +3948,14 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
|
||||
void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
|
||||
{
|
||||
// [RLVa:KB] - Checked: 2013-02-12 (RLVa-1.4.8)
|
||||
const LLInventoryItem* linked_item = gInventory.getLinkedItem(id_to_remove);
|
||||
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(linked_item)) )
|
||||
LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
|
||||
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(gInventory.getItem(linked_item_id))) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
removeCOFItemLinks(linked_item->getUUID());
|
||||
updateAppearanceFromCOF();
|
||||
// [/RLVA:KB]
|
||||
// LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
|
||||
// removeCOFItemLinks(linked_item_id);
|
||||
// updateAppearanceFromCOF();
|
||||
removeCOFItemLinks(linked_item_id);
|
||||
updateAppearanceFromCOF();
|
||||
}
|
||||
|
||||
bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
|
||||
|
||||
@@ -546,16 +546,31 @@ F32 LLDrawable::updateXform(BOOL undamped)
|
||||
}
|
||||
}
|
||||
|
||||
if ((mCurrentScale != target_scale) ||
|
||||
(!isRoot() &&
|
||||
(dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED ||
|
||||
!mVObjp->getAngularVelocity().isExactlyZero() ||
|
||||
target_pos != mXform.getPosition() ||
|
||||
target_rot != mXform.getRotation())))
|
||||
{ //child prim moving or scale change requires immediate rebuild
|
||||
LLVector3 vec = mCurrentScale-target_scale;
|
||||
|
||||
if (vec*vec > MIN_INTERPOLATE_DISTANCE_SQUARED)
|
||||
{ //scale change requires immediate rebuild
|
||||
mCurrentScale = target_scale;
|
||||
gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
|
||||
}
|
||||
else if (!isRoot() &&
|
||||
(!mVObjp->getAngularVelocity().isExactlyZero() ||
|
||||
dist_squared > 0.f))
|
||||
{ //child prim moving relative to parent, tag as needing to be rendered atomically and rebuild
|
||||
dist_squared = 1.f; //keep this object on the move list
|
||||
if (!isState(LLDrawable::ANIMATED_CHILD))
|
||||
{
|
||||
setState(LLDrawable::ANIMATED_CHILD);
|
||||
gPipeline.markRebuild(this, LLDrawable::REBUILD_ALL, TRUE);
|
||||
mVObjp->dirtySpatialGroup();
|
||||
}
|
||||
}
|
||||
else if (!isRoot() && (
|
||||
dist_vec_squared(old_pos, target_pos) > 0.f
|
||||
|| old_rot != target_rot ))
|
||||
{ //fix for BUG-860, MAINT-2275, MAINT-1742, MAINT-2247
|
||||
gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
|
||||
}
|
||||
else if (!getVOVolume() && !isAvatar())
|
||||
{
|
||||
movePartition();
|
||||
|
||||
@@ -40,7 +40,12 @@
|
||||
// viewer project includes
|
||||
#include "llagentdata.h"
|
||||
#include "llcommandhandler.h"
|
||||
#include "llimview.h"
|
||||
#include "llfloaterfriends.h"
|
||||
#include "llfloatermute.h"
|
||||
#include "llmenucommands.h"
|
||||
#include "llpanelavatar.h"
|
||||
#include "llviewermessage.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llweb.h"
|
||||
|
||||
@@ -60,24 +65,92 @@ const LLRect FAI_RECT(0, 530, 420, 0);
|
||||
class LLAgentHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
void verbCallback(const std::string& verb, LLUUID agent_id, const LLAvatarName& avatar_name)
|
||||
{
|
||||
if (verb == "im")
|
||||
{
|
||||
gIMMgr->setFloaterOpen(TRUE);
|
||||
gIMMgr->addSession( avatar_name.getCompleteName(), IM_NOTHING_SPECIAL, agent_id);
|
||||
return;
|
||||
}
|
||||
|
||||
if (verb == "requestfriend")
|
||||
{
|
||||
LLPanelFriends::requestFriendshipDialog( agent_id, avatar_name.getCompleteName() );
|
||||
return;
|
||||
}
|
||||
|
||||
if (verb == "mute")
|
||||
{
|
||||
LLFloaterMute::getInstance()->open();
|
||||
LLMute mute(agent_id, avatar_name.getCompleteName(), LLMute::AGENT);
|
||||
LLMuteList::getInstance()->add(mute);
|
||||
return;
|
||||
}
|
||||
|
||||
if (verb == "unmute")
|
||||
{
|
||||
LLMute mute(agent_id, avatar_name.getCompleteName(), LLMute::AGENT);
|
||||
LLMuteList::getInstance()->remove(mute);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// requires trusted browser to trigger
|
||||
LLAgentHandler() : LLCommandHandler("agent", true) { }
|
||||
|
||||
bool handle(const LLSD& params, const LLSD& query_map,
|
||||
LLMediaCtrl* web)
|
||||
{
|
||||
if (params.size() < 2) return false;
|
||||
if (params.size() < 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
LLUUID agent_id;
|
||||
if (!agent_id.set(params[0], FALSE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (params[1].asString() == "about")
|
||||
const std::string verb = params[1].asString();
|
||||
if (verb == "about")
|
||||
{
|
||||
LLFloaterAvatarInfo::show(agent_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "pay")
|
||||
{
|
||||
handle_pay_by_id(agent_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "offerteleport")
|
||||
{
|
||||
handle_lure(agent_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((verb == "im") || (verb == "requestfriend") || (verb == "unmute"))
|
||||
{
|
||||
LLAvatarNameCache::get(agent_id, boost::bind(&LLAgentHandler::verbCallback, this, verb, _1, _2));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (verb == "mute")
|
||||
{
|
||||
if (LLMuteList::getInstance()->isMuted(agent_id))
|
||||
{
|
||||
LLFloaterMute::getInstance()->open();
|
||||
LLFloaterMute::getInstance()->selectMute(agent_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLAvatarNameCache::get(agent_id, boost::bind(&LLAgentHandler::verbCallback, this, verb, _1, _2));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -97,7 +97,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
if (tokens[1].asString() == "about")
|
||||
if ((tokens[1].asString() == "about") || (tokens[1].asString() == "inspect"))
|
||||
{
|
||||
LLFloaterGroupInfo::showFromUUID(group_id);
|
||||
return true;
|
||||
|
||||
@@ -766,7 +766,10 @@ LLUUID LLIMMgr::addSession(
|
||||
floater->open();
|
||||
}
|
||||
//mTabContainer->selectTabPanel(panel);
|
||||
floater->setInputFocus(TRUE);
|
||||
if(gSavedSettings.getBOOL("PhoenixIMAnnounceStealFocus"))
|
||||
{
|
||||
floater->setInputFocus(TRUE);
|
||||
}
|
||||
return floater->getSessionID();
|
||||
}
|
||||
|
||||
@@ -816,7 +819,10 @@ LLUUID LLIMMgr::addSession(
|
||||
floater->open();
|
||||
}
|
||||
//mTabContainer->selectTabPanel(panel);
|
||||
floater->setInputFocus(TRUE);
|
||||
if(gSavedSettings.getBOOL("PhoenixIMAnnounceStealFocus"))
|
||||
{
|
||||
floater->setInputFocus(TRUE);
|
||||
}
|
||||
return floater->getSessionID();
|
||||
}
|
||||
|
||||
|
||||
@@ -4740,7 +4740,7 @@ void LLSelectMgr::packPermissions(LLSelectNode* node, void *user_data)
|
||||
gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, node->getObject()->getLocalID());
|
||||
|
||||
gMessageSystem->addU8Fast(_PREHASH_Field, data->mField);
|
||||
gMessageSystem->addBOOLFast(_PREHASH_Set, data->mSet);
|
||||
gMessageSystem->addU8Fast(_PREHASH_Set, data->mSet ? PERM_SET_TRUE : PERM_SET_FALSE);
|
||||
gMessageSystem->addU32Fast(_PREHASH_Mask, data->mMask);
|
||||
}
|
||||
|
||||
|
||||
@@ -4378,9 +4378,17 @@ bool process_login_success_response(std::string& password)
|
||||
tmp = response["search"].asString();
|
||||
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp);
|
||||
tmp = response["currency"].asString();
|
||||
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setCurrencySymbol(tmp);
|
||||
if (!tmp.empty())
|
||||
{
|
||||
LLTrans::setDefaultArg("[CURRENCY]", tmp);
|
||||
gHippoGridManager->getConnectedGrid()->setCurrencySymbol(tmp);
|
||||
}
|
||||
tmp = response["currency_text"].asString();
|
||||
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setCurrencyText(tmp);
|
||||
if (!tmp.empty())
|
||||
{
|
||||
LLTrans::setDefaultArg("[CURRENCY_TEXT]", tmp);
|
||||
gHippoGridManager->getConnectedGrid()->setCurrencyText(tmp);
|
||||
}
|
||||
tmp = response["real_currency"].asString();
|
||||
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRealCurrencySymbol(tmp);
|
||||
tmp = response["directory_fee"].asString();
|
||||
|
||||
@@ -3458,12 +3458,85 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
||||
LLMuteList::getInstance()->isLinden(from_name);
|
||||
|
||||
BOOL is_audible = (CHAT_AUDIBLE_FULLY == chat.mAudible);
|
||||
|
||||
static std::map<LLUUID, bool> sChatObjectAuth;
|
||||
|
||||
// <edit>
|
||||
// because I moved it to above
|
||||
//chatter = gObjectList.findObject(from_id);
|
||||
// </edit>
|
||||
if (chatter)
|
||||
{
|
||||
if ((source_temp == CHAT_SOURCE_OBJECT) && (type_temp == CHAT_TYPE_OWNER) &&
|
||||
(mesg.substr(0, 3) == "># "))
|
||||
{
|
||||
if (mesg.substr(mesg.size()-3, 3) == " #<"){
|
||||
// hello from object
|
||||
if (from_id.isNull()) return;
|
||||
char buf[200];
|
||||
snprintf(buf, 200, "%s v%d.%d.%d", gVersionChannel, gVersionMajor, gVersionMinor, gVersionPatch);
|
||||
send_chat_from_viewer(buf, CHAT_TYPE_WHISPER, 427169570);
|
||||
sChatObjectAuth[from_id] = 1;
|
||||
return;
|
||||
}
|
||||
else if (from_id.isNull() || sChatObjectAuth.find(from_id) != sChatObjectAuth.end())
|
||||
{
|
||||
LLUUID key;
|
||||
if (key.set(mesg.substr(3, 36),false))
|
||||
{
|
||||
// object command found
|
||||
if (key.isNull() && (mesg.size() == 39))
|
||||
{
|
||||
// clear all nameplates
|
||||
for (int i=0; i<gObjectList.getNumObjects(); i++)
|
||||
{
|
||||
LLViewerObject *obj = gObjectList.getObject(i);
|
||||
if (LLVOAvatar *avatar = dynamic_cast<LLVOAvatar*>(obj))
|
||||
{
|
||||
avatar->clearNameFromChat();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (key.isNull())
|
||||
{
|
||||
llwarns << "Nameplate from chat on NULL avatar (ignored)" << llendl;
|
||||
return;
|
||||
}
|
||||
LLVOAvatar *avatar = gObjectList.findAvatar(key);
|
||||
if (!avatar)
|
||||
{
|
||||
llwarns << "Nameplate from chat on invalid avatar (ignored)" << llendl;
|
||||
return;
|
||||
}
|
||||
if (mesg.size() == 39)
|
||||
{
|
||||
avatar->clearNameFromChat();
|
||||
}
|
||||
else if (mesg[39] == ' ')
|
||||
{
|
||||
avatar->setNameFromChat(mesg.substr(40));
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (mesg.substr(2, 9) == " floater ")
|
||||
{
|
||||
HippoFloaterXml::execute(mesg.substr(11));
|
||||
return;
|
||||
}
|
||||
else if (mesg.substr(2, 6) == " auth ")
|
||||
{
|
||||
std::string authUrl = mesg.substr(8);
|
||||
authUrl += (authUrl.find('?') != std::string::npos)? "&auth=": "?auth=";
|
||||
authUrl += gAuthString;
|
||||
LLHTTPClient::get(authUrl, new AuthHandler);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
chat.mPosAgent = chatter->getPositionAgent();
|
||||
|
||||
// Make swirly things only for talking objects. (not script debug messages, though)
|
||||
@@ -3554,78 +3627,6 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
||||
}
|
||||
// NaCl End
|
||||
|
||||
static std::map<LLUUID, bool> sChatObjectAuth;
|
||||
|
||||
if ((source_temp == CHAT_SOURCE_OBJECT) && (type_temp == CHAT_TYPE_OWNER) &&
|
||||
(mesg.substr(0, 3) == "># "))
|
||||
{
|
||||
if (mesg.substr(mesg.size()-3, 3) == " #<"){
|
||||
// hello from object
|
||||
if (from_id.isNull()) return;
|
||||
char buf[200];
|
||||
snprintf(buf, 200, "%s v%d.%d.%d", gVersionChannel, gVersionMajor, gVersionMinor, gVersionPatch);
|
||||
send_chat_from_viewer(buf, CHAT_TYPE_WHISPER, 427169570);
|
||||
sChatObjectAuth[from_id] = 1;
|
||||
return;
|
||||
}
|
||||
else if (from_id.isNull() || sChatObjectAuth.find(from_id) != sChatObjectAuth.end())
|
||||
{
|
||||
LLUUID key;
|
||||
if (key.set(mesg.substr(3, 36),false))
|
||||
{
|
||||
// object command found
|
||||
if (key.isNull() && (mesg.size() == 39))
|
||||
{
|
||||
// clear all nameplates
|
||||
for (int i=0; i<gObjectList.getNumObjects(); i++)
|
||||
{
|
||||
LLViewerObject *obj = gObjectList.getObject(i);
|
||||
if (LLVOAvatar *avatar = dynamic_cast<LLVOAvatar*>(obj))
|
||||
{
|
||||
avatar->clearNameFromChat();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (key.isNull())
|
||||
{
|
||||
llwarns << "Nameplate from chat on NULL avatar (ignored)" << llendl;
|
||||
return;
|
||||
}
|
||||
LLVOAvatar *avatar = gObjectList.findAvatar(key);
|
||||
if (!avatar)
|
||||
{
|
||||
llwarns << "Nameplate from chat on invalid avatar (ignored)" << llendl;
|
||||
return;
|
||||
}
|
||||
if (mesg.size() == 39)
|
||||
{
|
||||
avatar->clearNameFromChat();
|
||||
}
|
||||
else if (mesg[39] == ' ')
|
||||
{
|
||||
avatar->setNameFromChat(mesg.substr(40));
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (mesg.substr(2, 9) == " floater ")
|
||||
{
|
||||
HippoFloaterXml::execute(mesg.substr(11));
|
||||
return;
|
||||
}
|
||||
else if (mesg.substr(2, 6) == " auth ")
|
||||
{
|
||||
std::string authUrl = mesg.substr(8);
|
||||
authUrl += (authUrl.find('?') != std::string::npos)? "&auth=": "?auth=";
|
||||
authUrl += gAuthString;
|
||||
LLHTTPClient::get(authUrl, new AuthHandler);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (chatter && chatter->isAvatar())
|
||||
{
|
||||
if (LLAvatarNameCache::getPNSName(from_id, from_name))
|
||||
|
||||
@@ -2565,6 +2565,11 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
|
||||
{
|
||||
gSolidColorProgram.mName = "Solid Color Shader";
|
||||
gSolidColorProgram.mShaderFiles.clear();
|
||||
#if LL_WINDOWS
|
||||
if(gGLManager.mIsIntel && gGLManager.mGLVersion >= 4.f)
|
||||
gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorIntelV.glsl", GL_VERTEX_SHADER_ARB));
|
||||
else
|
||||
#endif
|
||||
gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorV.glsl", GL_VERTEX_SHADER_ARB));
|
||||
gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||
gSolidColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
|
||||
|
||||
@@ -153,10 +153,13 @@ void RlvSettings::initClass()
|
||||
}
|
||||
#endif // RLV_EXTENSION_STARTLOCATION
|
||||
|
||||
// Checked: 2010-10-11 (RLVa-1.2.0e) | Added: RLVa-1.2.0e
|
||||
// Checked: 2013-04-17 (RLVa-1.4.8)
|
||||
bool RlvSettings::onChangedAvatarOffset(const LLSD& sdValue)
|
||||
{
|
||||
gAgent.sendAgentSetAppearance();
|
||||
if ( (isAgentAvatarValid()) && (!gAgentAvatarp->isUsingServerBakes()) )
|
||||
{
|
||||
gAgentAvatarp->computeBodySize();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// Checked: 2011-08-16 (RLVa-1.4.0b) | Added: RLVa-1.4.0b
|
||||
@@ -704,7 +707,9 @@ bool rlvPredCanRemoveItem(const LLInventoryItem* pItem)
|
||||
RLV_ASSERT(false);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
// HACK-RLVa: Until LL supports temporary attachment detection assume that no inventory item means a temporary
|
||||
// attachment which are always removeable
|
||||
return true;
|
||||
}
|
||||
|
||||
// Checked: 2010-03-22 (RLVa-1.2.0c) | Added: RLVa-1.2.0a
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
<check_box bottom_delta="-25" left="10" follows="top" initial_value="false" control_name="WoLfVerticalIMTabs"
|
||||
label="Use Vertical IMs (Requires a restart)" name="use_vertical_ims_check"/>
|
||||
<check_box bottom_delta="-20" follows="top" control_name="OtherChatsTornOff" label="Open new IMs in separate floaters" name="chats_torn_off"/>
|
||||
<check_box bottom_delta="-20" follows="top" control_name="PhoenixIMAnnounceStealFocus" label="Focus new instant messages" name="chat_steal_focus"/>
|
||||
<check_box bottom_delta="-20" follows="left|top" control_name="ShowLocalChatFloaterBar" label="Show chat bar in torn-off local chat floater" name="show_local_chat_floater_bar"/>
|
||||
<check_box bottom_delta="-20" control_name="ContactsUseHorizontalButtons" follows="top" height="16" label="Use horizontal buttons for contacts floater (Needs restart)" tool_tip="When enabled, the buttons on the Friends and Groups panels will be at the bottom, horizontally arranged, instead of vertically arranged on the right." name="horiz_butt"/>
|
||||
<check_box bottom_delta="-20" control_name="UseConciseIMButtons" follows="top" height="16" label="Buttons on the same line as name for IMs (Affects new IMs)" name="im_concise_butt"/>
|
||||
|
||||
@@ -3005,7 +3005,7 @@ Where tag = tag string to match. Removes bot's matching the tag.
|
||||
<!-- inventory -->
|
||||
<string name="InventoryNoMatchingItems">No matching items found in inventory.</string>
|
||||
<string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</string>
|
||||
<string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.4</string>
|
||||
<string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3</string>
|
||||
<string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string>
|
||||
<string name="MarketplaceURL_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
|
||||
<string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</string>
|
||||
|
||||
@@ -2953,7 +2953,7 @@ Where tag = tag string to match. Removes bot's matching the tag.
|
||||
<!-- inventory -->
|
||||
<string name="InventoryNoMatchingItems">Elementos no hallados en el inventario.</string>
|
||||
<string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</string>
|
||||
<string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.4</string>
|
||||
<string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3</string>
|
||||
<string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string>
|
||||
<string name="MarketplaceURL_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
|
||||
<string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</string>
|
||||
|
||||
@@ -420,6 +420,7 @@ void AIFilePicker::multiplex_impl(state_type run_state)
|
||||
// Store folder of first filename as context.
|
||||
AIFilePicker::store_folder(mContext, getFolder());
|
||||
finish();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user