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;
|
break;
|
||||||
case wait_stopped:
|
case wait_stopped:
|
||||||
if (!mThread->isStopped())
|
if (!mThread->isStopped())
|
||||||
|
{
|
||||||
|
yield();
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
// We're done!
|
// We're done!
|
||||||
//
|
//
|
||||||
// We can only get here when AIThreadImpl::done called cont(), (very
|
// We can only get here when AIThreadImpl::done called cont(), (very
|
||||||
|
|||||||
@@ -103,10 +103,12 @@ if (LINUX)
|
|||||||
-pthread
|
-pthread
|
||||||
)
|
)
|
||||||
|
|
||||||
# Don't catch SIGCHLD in our base application class for the viewer
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_FORTIFY_SOURCE=2 ")
|
||||||
# some of our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh!
|
|
||||||
# The viewer doesn't need to catch SIGCHLD anyway.
|
# Don't catch SIGCHLD in our base application class for the viewer
|
||||||
add_definitions(-DLL_IGNORE_SIGCHLD)
|
# 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")
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
find_program(GXX g++)
|
find_program(GXX g++)
|
||||||
@@ -136,16 +138,6 @@ if (LINUX)
|
|||||||
OUTPUT_VARIABLE CXX_VERSION
|
OUTPUT_VARIABLE CXX_VERSION
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
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
|
#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})
|
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}")
|
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
|
||||||
endif (${ARCH} STREQUAL "x86_64")
|
endif (${ARCH} STREQUAL "x86_64")
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
add_definitions(
|
|
||||||
-D_FORTIFY_SOURCE=2
|
|
||||||
)
|
|
||||||
|
|
||||||
if (NOT STANDALONE)
|
if (NOT STANDALONE)
|
||||||
# this stops us requiring a really recent glibc at runtime
|
# this stops us requiring a really recent glibc at runtime
|
||||||
add_definitions(-fno-stack-protector)
|
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_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
|
||||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
|
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
|
||||||
add_definitions(
|
|
||||||
-D_FORTIFY_SOURCE=2
|
|
||||||
)
|
|
||||||
|
|
||||||
if (NOT STANDALONE)
|
if (NOT STANDALONE)
|
||||||
# this stops us requiring a really recent glibc at runtime
|
# this stops us requiring a really recent glibc at runtime
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
#include "sys.h"
|
||||||
#include "llpathinglib.h"
|
#include "llpathinglib.h"
|
||||||
|
|
||||||
void LLPathingLib::initSystem()
|
void LLPathingLib::initSystem()
|
||||||
|
|||||||
@@ -89,6 +89,10 @@ const U8 PERM_GROUP = 0x04;
|
|||||||
const U8 PERM_EVERYONE = 0x08;
|
const U8 PERM_EVERYONE = 0x08;
|
||||||
const U8 PERM_NEXT_OWNER = 0x10;
|
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
|
// This is just a quickie debugging key
|
||||||
// no modify: PERM_ALL & ~PERM_MODIFY = 0x7fffbfff
|
// no modify: PERM_ALL & ~PERM_MODIFY = 0x7fffbfff
|
||||||
// no copy: PERM_ALL & ~PERM_COPY = 0x7fff7fff
|
// no copy: PERM_ALL & ~PERM_COPY = 0x7fff7fff
|
||||||
|
|||||||
@@ -2673,21 +2673,21 @@ AIPerService::Approvement* AIPerService::approveHTTPRequestFor(AIPerServicePtr c
|
|||||||
PerService_wat per_service_w(*per_service);
|
PerService_wat per_service_w(*per_service);
|
||||||
CapabilityType& ct(per_service_w->mCapabilityType[capability_type]);
|
CapabilityType& ct(per_service_w->mCapabilityType[capability_type]);
|
||||||
S32 const pipelined_requests_per_capability_type = ct.pipelined_requests();
|
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;
|
equal = pipelined_requests_per_capability_type == ct.mMaxPipelinedRequests;
|
||||||
increment_threshold = ct.mFlags & ctf_starvation;
|
increment_threshold = ct.mFlags & ctf_starvation;
|
||||||
decrement_threshold = (ct.mFlags & (ctf_empty | ctf_full)) == ctf_full;
|
decrement_threshold = (ct.mFlags & (ctf_empty | ctf_full)) == ctf_full;
|
||||||
ct.mFlags = 0;
|
ct.mFlags = 0;
|
||||||
if (decrement_threshold)
|
if (decrement_threshold)
|
||||||
{
|
{
|
||||||
if (ct.mMaxPipelinedRequests > per_service_w->mConcurrectConnections)
|
if ((int)ct.mMaxPipelinedRequests > per_service_w->mConcurrectConnections)
|
||||||
{
|
{
|
||||||
ct.mMaxPipelinedRequests--;
|
ct.mMaxPipelinedRequests--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (increment_threshold && reject)
|
else if (increment_threshold && reject)
|
||||||
{
|
{
|
||||||
if (ct.mMaxPipelinedRequests < 2 * per_service_w->mConcurrectConnections)
|
if ((int)ct.mMaxPipelinedRequests < 2 * per_service_w->mConcurrectConnections)
|
||||||
{
|
{
|
||||||
ct.mMaxPipelinedRequests++;
|
ct.mMaxPipelinedRequests++;
|
||||||
// Immediately take the new threshold into account.
|
// 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.getTexUnit(0)->bind(image, true);
|
||||||
|
|
||||||
gGL.color4fv(color.mV);
|
gGL.color4fv(color.mV);
|
||||||
|
gGL.diffuseColor4fv(color.mV); //workaround: Intel HD 4000
|
||||||
|
|
||||||
const S32 NUM_VERTICES = 9 * 4; // 9 quads
|
const S32 NUM_VERTICES = 9 * 4; // 9 quads
|
||||||
LLVector2 uv[NUM_VERTICES];
|
LLVector2 uv[NUM_VERTICES];
|
||||||
|
|||||||
@@ -9,6 +9,17 @@
|
|||||||
<string>settings_rlv.xml</string>
|
<string>settings_rlv.xml</string>
|
||||||
</array>
|
</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>
|
<key>UseNewTargetOmegaCode</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<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 -----------------------------------------------------------------------------
|
//Chat UI -----------------------------------------------------------------------------
|
||||||
mWoLfVerticalIMTabs = gSavedSettings.getBOOL("WoLfVerticalIMTabs");
|
mWoLfVerticalIMTabs = gSavedSettings.getBOOL("WoLfVerticalIMTabs");
|
||||||
mOtherChatsTornOff = gSavedSettings.getBOOL("OtherChatsTornOff");
|
mOtherChatsTornOff = gSavedSettings.getBOOL("OtherChatsTornOff");
|
||||||
|
mIMAnnounceStealFocus = gSavedSettings.getBOOL("PhoenixIMAnnounceStealFocus");
|
||||||
mShowLocalChatFloaterBar = gSavedSettings.getBOOL("ShowLocalChatFloaterBar");
|
mShowLocalChatFloaterBar = gSavedSettings.getBOOL("ShowLocalChatFloaterBar");
|
||||||
mHorizButt = gSavedSettings.getBOOL("ContactsUseHorizontalButtons");
|
mHorizButt = gSavedSettings.getBOOL("ContactsUseHorizontalButtons");
|
||||||
mOneLineIMButt = gSavedSettings.getBOOL("UseConciseIMButtons");
|
mOneLineIMButt = gSavedSettings.getBOOL("UseConciseIMButtons");
|
||||||
@@ -561,6 +562,7 @@ void LLPrefsAscentChat::cancel()
|
|||||||
//Chat UI -----------------------------------------------------------------------------
|
//Chat UI -----------------------------------------------------------------------------
|
||||||
gSavedSettings.setBOOL("WoLfVerticalIMTabs", mWoLfVerticalIMTabs);
|
gSavedSettings.setBOOL("WoLfVerticalIMTabs", mWoLfVerticalIMTabs);
|
||||||
gSavedSettings.setBOOL("OtherChatsTornOff", mOtherChatsTornOff);
|
gSavedSettings.setBOOL("OtherChatsTornOff", mOtherChatsTornOff);
|
||||||
|
gSavedSettings.setBOOL("PhoenixIMAnnounceStealFocus", mIMAnnounceStealFocus);
|
||||||
gSavedSettings.setBOOL("ShowLocalChatFloaterBar", mShowLocalChatFloaterBar);
|
gSavedSettings.setBOOL("ShowLocalChatFloaterBar", mShowLocalChatFloaterBar);
|
||||||
gSavedSettings.setBOOL("ContactsUseHorizontalButtons", mHorizButt);
|
gSavedSettings.setBOOL("ContactsUseHorizontalButtons", mHorizButt);
|
||||||
gSavedSettings.setBOOL("UseConciseIMButtons", mOneLineIMButt);
|
gSavedSettings.setBOOL("UseConciseIMButtons", mOneLineIMButt);
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ protected:
|
|||||||
//Chat UI -----------------------------------------------------------------------------
|
//Chat UI -----------------------------------------------------------------------------
|
||||||
bool mWoLfVerticalIMTabs;
|
bool mWoLfVerticalIMTabs;
|
||||||
bool mOtherChatsTornOff;
|
bool mOtherChatsTornOff;
|
||||||
|
bool mIMAnnounceStealFocus;
|
||||||
bool mShowLocalChatFloaterBar;
|
bool mShowLocalChatFloaterBar;
|
||||||
bool mHorizButt;
|
bool mHorizButt;
|
||||||
bool mOneLineIMButt;
|
bool mOneLineIMButt;
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ void ImportTracker::get_update(S32 newid, BOOL justCreated, BOOL createSelected)
|
|||||||
msg->nextBlockFast(_PREHASH_ObjectData);
|
msg->nextBlockFast(_PREHASH_ObjectData);
|
||||||
msg->addU32Fast(_PREHASH_ObjectLocalID, (U32)newid);
|
msg->addU32Fast(_PREHASH_ObjectLocalID, (U32)newid);
|
||||||
msg->addU8Fast(_PREHASH_Field, PERM_NEXT_OWNER);
|
msg->addU8Fast(_PREHASH_Field, PERM_NEXT_OWNER);
|
||||||
msg->addBOOLFast(_PREHASH_Set, PERM_ITEM_UNRESTRICTED);
|
msg->addU8Fast(_PREHASH_Set, PERM_SET_TRUE);
|
||||||
U32 flags = 0;
|
U32 flags = 0;
|
||||||
if ( gSavedSettings.getBOOL("NextOwnerCopy") )
|
if ( gSavedSettings.getBOOL("NextOwnerCopy") )
|
||||||
{
|
{
|
||||||
@@ -718,7 +718,7 @@ void ImportTracker::send_properties(LLSD& prim, int counter)
|
|||||||
msg->nextBlockFast(_PREHASH_ObjectData);
|
msg->nextBlockFast(_PREHASH_ObjectData);
|
||||||
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
||||||
msg->addU8Fast(_PREHASH_Field, PERM_NEXT_OWNER);
|
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->addU32Fast(_PREHASH_Mask, U32(atoi(prim["next_owner_mask"].asString().c_str())));
|
||||||
*//*msg->sendReliable(gAgent.getRegion()->getHost());
|
*//*msg->sendReliable(gAgent.getRegion()->getHost());
|
||||||
|
|
||||||
@@ -732,7 +732,7 @@ void ImportTracker::send_properties(LLSD& prim, int counter)
|
|||||||
msg->nextBlockFast(_PREHASH_ObjectData);
|
msg->nextBlockFast(_PREHASH_ObjectData);
|
||||||
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
||||||
msg->addU8Fast(_PREHASH_Field, PERM_GROUP);
|
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->addU32Fast(_PREHASH_Mask, U32(atoi(prim["group_mask"].asString().c_str())));
|
||||||
*//*msg->sendReliable(gAgent.getRegion()->getHost());
|
*//*msg->sendReliable(gAgent.getRegion()->getHost());
|
||||||
|
|
||||||
@@ -746,7 +746,7 @@ void ImportTracker::send_properties(LLSD& prim, int counter)
|
|||||||
msg->nextBlockFast(_PREHASH_ObjectData);
|
msg->nextBlockFast(_PREHASH_ObjectData);
|
||||||
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
msg->addU32Fast(_PREHASH_ObjectLocalID, prim["LocalID"].asInteger());
|
||||||
msg->addU8Fast(_PREHASH_Field, PERM_EVERYONE);
|
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->addU32Fast(_PREHASH_Mask, U32(atoi(prim["everyone_mask"].asString().c_str())));
|
||||||
msg->sendReliable(gAgent.getRegion()->getHost());
|
msg->sendReliable(gAgent.getRegion()->getHost());
|
||||||
|
|
||||||
|
|||||||
@@ -885,11 +885,6 @@ void LLAgent::setRegion(LLViewerRegion *regionp)
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// getRegion()
|
// getRegion()
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
LLViewerRegion *LLAgent::getRegion() const
|
|
||||||
{
|
|
||||||
return mRegionp;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const LLHost& LLAgent::getRegionHost() const
|
const LLHost& LLAgent::getRegionHost() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ private:
|
|||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
public:
|
public:
|
||||||
void setRegion(LLViewerRegion *regionp);
|
void setRegion(LLViewerRegion *regionp);
|
||||||
LLViewerRegion *getRegion() const;
|
LLViewerRegion *getRegion() const { return mRegionp; }
|
||||||
const LLHost& getRegionHost() const;
|
const LLHost& getRegionHost() const;
|
||||||
BOOL inPrelude();
|
BOOL inPrelude();
|
||||||
std::string getSLURL() const; //Return uri for current region
|
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;
|
bool fUpdateAppearance = false;
|
||||||
for (uuid_vec_t::const_iterator it = ids_to_remove.begin(); it != ids_to_remove.end(); ++it)
|
for (uuid_vec_t::const_iterator it = ids_to_remove.begin(); it != ids_to_remove.end(); ++it)
|
||||||
{
|
{
|
||||||
const LLInventoryItem* linked_item = gInventory.getLinkedItem(*it);
|
const LLUUID& linked_item_id = gInventory.getLinkedItemID(*it);
|
||||||
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(linked_item)) )
|
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(gInventory.getItem(linked_item_id))) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
fUpdateAppearance = true;
|
fUpdateAppearance = true;
|
||||||
removeCOFItemLinks(linked_item->getUUID());
|
removeCOFItemLinks(linked_item_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fUpdateAppearance)
|
if (fUpdateAppearance)
|
||||||
@@ -3948,18 +3948,14 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
|
|||||||
void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
|
void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
|
||||||
{
|
{
|
||||||
// [RLVa:KB] - Checked: 2013-02-12 (RLVa-1.4.8)
|
// [RLVa:KB] - Checked: 2013-02-12 (RLVa-1.4.8)
|
||||||
const LLInventoryItem* linked_item = gInventory.getLinkedItem(id_to_remove);
|
LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
|
||||||
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(linked_item)) )
|
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(gInventory.getItem(linked_item_id))) )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
removeCOFItemLinks(linked_item->getUUID());
|
|
||||||
updateAppearanceFromCOF();
|
|
||||||
// [/RLVA:KB]
|
// [/RLVA:KB]
|
||||||
// LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
|
removeCOFItemLinks(linked_item_id);
|
||||||
// removeCOFItemLinks(linked_item_id);
|
updateAppearanceFromCOF();
|
||||||
// updateAppearanceFromCOF();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
|
bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
|
||||||
|
|||||||
@@ -546,16 +546,31 @@ F32 LLDrawable::updateXform(BOOL undamped)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mCurrentScale != target_scale) ||
|
LLVector3 vec = mCurrentScale-target_scale;
|
||||||
(!isRoot() &&
|
|
||||||
(dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED ||
|
if (vec*vec > MIN_INTERPOLATE_DISTANCE_SQUARED)
|
||||||
!mVObjp->getAngularVelocity().isExactlyZero() ||
|
{ //scale change requires immediate rebuild
|
||||||
target_pos != mXform.getPosition() ||
|
|
||||||
target_rot != mXform.getRotation())))
|
|
||||||
{ //child prim moving or scale change requires immediate rebuild
|
|
||||||
mCurrentScale = target_scale;
|
mCurrentScale = target_scale;
|
||||||
gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
|
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())
|
else if (!getVOVolume() && !isAvatar())
|
||||||
{
|
{
|
||||||
movePartition();
|
movePartition();
|
||||||
|
|||||||
@@ -40,7 +40,12 @@
|
|||||||
// viewer project includes
|
// viewer project includes
|
||||||
#include "llagentdata.h"
|
#include "llagentdata.h"
|
||||||
#include "llcommandhandler.h"
|
#include "llcommandhandler.h"
|
||||||
|
#include "llimview.h"
|
||||||
|
#include "llfloaterfriends.h"
|
||||||
|
#include "llfloatermute.h"
|
||||||
|
#include "llmenucommands.h"
|
||||||
#include "llpanelavatar.h"
|
#include "llpanelavatar.h"
|
||||||
|
#include "llviewermessage.h"
|
||||||
#include "lluictrlfactory.h"
|
#include "lluictrlfactory.h"
|
||||||
#include "llweb.h"
|
#include "llweb.h"
|
||||||
|
|
||||||
@@ -60,24 +65,92 @@ const LLRect FAI_RECT(0, 530, 420, 0);
|
|||||||
class LLAgentHandler : public LLCommandHandler
|
class LLAgentHandler : public LLCommandHandler
|
||||||
{
|
{
|
||||||
public:
|
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
|
// requires trusted browser to trigger
|
||||||
LLAgentHandler() : LLCommandHandler("agent", true) { }
|
LLAgentHandler() : LLCommandHandler("agent", true) { }
|
||||||
|
|
||||||
bool handle(const LLSD& params, const LLSD& query_map,
|
bool handle(const LLSD& params, const LLSD& query_map,
|
||||||
LLMediaCtrl* web)
|
LLMediaCtrl* web)
|
||||||
{
|
{
|
||||||
if (params.size() < 2) return false;
|
if (params.size() < 2)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
LLUUID agent_id;
|
LLUUID agent_id;
|
||||||
if (!agent_id.set(params[0], FALSE))
|
if (!agent_id.set(params[0], FALSE))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params[1].asString() == "about")
|
const std::string verb = params[1].asString();
|
||||||
|
if (verb == "about")
|
||||||
{
|
{
|
||||||
LLFloaterAvatarInfo::show(agent_id);
|
LLFloaterAvatarInfo::show(agent_id);
|
||||||
return true;
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tokens[1].asString() == "about")
|
if ((tokens[1].asString() == "about") || (tokens[1].asString() == "inspect"))
|
||||||
{
|
{
|
||||||
LLFloaterGroupInfo::showFromUUID(group_id);
|
LLFloaterGroupInfo::showFromUUID(group_id);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -766,7 +766,10 @@ LLUUID LLIMMgr::addSession(
|
|||||||
floater->open();
|
floater->open();
|
||||||
}
|
}
|
||||||
//mTabContainer->selectTabPanel(panel);
|
//mTabContainer->selectTabPanel(panel);
|
||||||
floater->setInputFocus(TRUE);
|
if(gSavedSettings.getBOOL("PhoenixIMAnnounceStealFocus"))
|
||||||
|
{
|
||||||
|
floater->setInputFocus(TRUE);
|
||||||
|
}
|
||||||
return floater->getSessionID();
|
return floater->getSessionID();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -816,7 +819,10 @@ LLUUID LLIMMgr::addSession(
|
|||||||
floater->open();
|
floater->open();
|
||||||
}
|
}
|
||||||
//mTabContainer->selectTabPanel(panel);
|
//mTabContainer->selectTabPanel(panel);
|
||||||
floater->setInputFocus(TRUE);
|
if(gSavedSettings.getBOOL("PhoenixIMAnnounceStealFocus"))
|
||||||
|
{
|
||||||
|
floater->setInputFocus(TRUE);
|
||||||
|
}
|
||||||
return floater->getSessionID();
|
return floater->getSessionID();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4740,7 +4740,7 @@ void LLSelectMgr::packPermissions(LLSelectNode* node, void *user_data)
|
|||||||
gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, node->getObject()->getLocalID());
|
gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, node->getObject()->getLocalID());
|
||||||
|
|
||||||
gMessageSystem->addU8Fast(_PREHASH_Field, data->mField);
|
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);
|
gMessageSystem->addU32Fast(_PREHASH_Mask, data->mMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4378,9 +4378,17 @@ bool process_login_success_response(std::string& password)
|
|||||||
tmp = response["search"].asString();
|
tmp = response["search"].asString();
|
||||||
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp);
|
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp);
|
||||||
tmp = response["currency"].asString();
|
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();
|
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();
|
tmp = response["real_currency"].asString();
|
||||||
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRealCurrencySymbol(tmp);
|
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRealCurrencySymbol(tmp);
|
||||||
tmp = response["directory_fee"].asString();
|
tmp = response["directory_fee"].asString();
|
||||||
|
|||||||
@@ -3458,12 +3458,85 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
|||||||
LLMuteList::getInstance()->isLinden(from_name);
|
LLMuteList::getInstance()->isLinden(from_name);
|
||||||
|
|
||||||
BOOL is_audible = (CHAT_AUDIBLE_FULLY == chat.mAudible);
|
BOOL is_audible = (CHAT_AUDIBLE_FULLY == chat.mAudible);
|
||||||
|
|
||||||
|
static std::map<LLUUID, bool> sChatObjectAuth;
|
||||||
|
|
||||||
// <edit>
|
// <edit>
|
||||||
// because I moved it to above
|
// because I moved it to above
|
||||||
//chatter = gObjectList.findObject(from_id);
|
//chatter = gObjectList.findObject(from_id);
|
||||||
// </edit>
|
// </edit>
|
||||||
if (chatter)
|
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();
|
chat.mPosAgent = chatter->getPositionAgent();
|
||||||
|
|
||||||
// Make swirly things only for talking objects. (not script debug messages, though)
|
// 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
|
// 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 (chatter && chatter->isAvatar())
|
||||||
{
|
{
|
||||||
if (LLAvatarNameCache::getPNSName(from_id, from_name))
|
if (LLAvatarNameCache::getPNSName(from_id, from_name))
|
||||||
|
|||||||
@@ -2565,6 +2565,11 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
|
|||||||
{
|
{
|
||||||
gSolidColorProgram.mName = "Solid Color Shader";
|
gSolidColorProgram.mName = "Solid Color Shader";
|
||||||
gSolidColorProgram.mShaderFiles.clear();
|
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/solidcolorV.glsl", GL_VERTEX_SHADER_ARB));
|
||||||
gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorF.glsl", GL_FRAGMENT_SHADER_ARB));
|
gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||||
gSolidColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
|
gSolidColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
|
||||||
|
|||||||
@@ -153,10 +153,13 @@ void RlvSettings::initClass()
|
|||||||
}
|
}
|
||||||
#endif // RLV_EXTENSION_STARTLOCATION
|
#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)
|
bool RlvSettings::onChangedAvatarOffset(const LLSD& sdValue)
|
||||||
{
|
{
|
||||||
gAgent.sendAgentSetAppearance();
|
if ( (isAgentAvatarValid()) && (!gAgentAvatarp->isUsingServerBakes()) )
|
||||||
|
{
|
||||||
|
gAgentAvatarp->computeBodySize();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// Checked: 2011-08-16 (RLVa-1.4.0b) | Added: RLVa-1.4.0b
|
// 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);
|
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
|
// 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"
|
<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"/>
|
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="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" 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="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"/>
|
<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 -->
|
<!-- inventory -->
|
||||||
<string name="InventoryNoMatchingItems">No matching items found in inventory.</string>
|
<string name="InventoryNoMatchingItems">No matching items found in inventory.</string>
|
||||||
<string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</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_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_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
|
||||||
<string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</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 -->
|
<!-- inventory -->
|
||||||
<string name="InventoryNoMatchingItems">Elementos no hallados en el inventario.</string>
|
<string name="InventoryNoMatchingItems">Elementos no hallados en el inventario.</string>
|
||||||
<string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</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_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_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
|
||||||
<string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</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.
|
// Store folder of first filename as context.
|
||||||
AIFilePicker::store_folder(mContext, getFolder());
|
AIFilePicker::store_folder(mContext, getFolder());
|
||||||
finish();
|
finish();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user