Merge branch 'V2MultiWear' of git://github.com/Lirusaito/SingularityViewer into V2MultiWear

This commit is contained in:
Siana Gearz
2012-06-09 03:01:54 +02:00
47 changed files with 804 additions and 428 deletions

View File

@@ -7,10 +7,8 @@ include(Audio)
include(LLAudio) include(LLAudio)
if (FMODEX) if (FMODEX)
include(FMODEX) include(FMODEX)
if(FMODEX)
set(FMOD OFF) set(FMOD OFF)
endif (FMODEX) endif (FMODEX)
endif(FMODEX)
if (NOT FMODEX) if (NOT FMODEX)
include(FMOD) include(FMOD)
endif (NOT FMODEX) endif (NOT FMODEX)

View File

@@ -242,8 +242,8 @@ BOOL LLVorbisDecodeState::initDecode()
llwarns << "No default bitstream found" << llendl; llwarns << "No default bitstream found" << llendl;
} }
// <edit> // <edit>
// This magic value is equivilent to 150MiB of data. // This magic value is equivalent to 150MiB of data.
// Prevents griffers from utilizin a huge xbox sound the size of god to instafry the viewer // Prevents griefers from utilizing a huge xbox sound the size of god to instafry the viewer
if(size_guess >= 157286400) if(size_guess >= 157286400)
{ {
llwarns << "Bad sound caught by zmagic" << llendl; llwarns << "Bad sound caught by zmagic" << llendl;
@@ -616,7 +616,8 @@ void LLAudioDecodeMgr::Impl::processQueue(const F32 num_secs)
llwarns << mCurrentDecodep->getUUID() << " has invalid vorbis data, aborting decode" << llendl; llwarns << mCurrentDecodep->getUUID() << " has invalid vorbis data, aborting decode" << llendl;
mCurrentDecodep->flushBadFile(); mCurrentDecodep->flushBadFile();
LLAudioData *adp = gAudiop->getAudioData(mCurrentDecodep->getUUID()); LLAudioData *adp = gAudiop->getAudioData(mCurrentDecodep->getUUID());
adp->setHasValidData(FALSE); adp->setHasValidData(false);
adp->setHasCompletedDecode(true);
mCurrentDecodep = NULL; mCurrentDecodep = NULL;
done = TRUE; done = TRUE;
} }
@@ -631,11 +632,16 @@ void LLAudioDecodeMgr::Impl::processQueue(const F32 num_secs)
if (mCurrentDecodep->finishDecode()) if (mCurrentDecodep->finishDecode())
{ {
// We finished! // We finished!
if (mCurrentDecodep->isValid() && mCurrentDecodep->isDone())
{
LLAudioData *adp = gAudiop->getAudioData(mCurrentDecodep->getUUID()); LLAudioData *adp = gAudiop->getAudioData(mCurrentDecodep->getUUID());
adp->setHasDecodedData(TRUE); if (!adp)
adp->setHasValidData(TRUE); {
llwarns << "Missing LLAudioData for decode of " << mCurrentDecodep->getUUID() << llendl;
}
else if (mCurrentDecodep->isValid() && mCurrentDecodep->isDone())
{
adp->setHasCompletedDecode(true);
adp->setHasDecodedData(true);
adp->setHasValidData(true);
// At this point, we could see if anyone needs this sound immediately, but // At this point, we could see if anyone needs this sound immediately, but
// I'm not sure that there's a reason to - we need to poll all of the playing // I'm not sure that there's a reason to - we need to poll all of the playing
@@ -644,7 +650,8 @@ void LLAudioDecodeMgr::Impl::processQueue(const F32 num_secs)
} }
else else
{ {
llinfos << "Vorbis decode failed!!!" << llendl; adp->setHasCompletedDecode(true);
llinfos << "Vorbis decode failed for " << mCurrentDecodep->getUUID() << llendl;
} }
mCurrentDecodep = NULL; mCurrentDecodep = NULL;
} }
@@ -712,15 +719,18 @@ BOOL LLAudioDecodeMgr::addDecodeRequest(const LLUUID &uuid)
if (gAudiop->hasDecodedFile(uuid)) if (gAudiop->hasDecodedFile(uuid))
{ {
// Already have a decoded version, don't need to decode it. // Already have a decoded version, don't need to decode it.
//llinfos << "addDecodeRequest for " << uuid << " has decoded file already" << llendl;
return TRUE; return TRUE;
} }
if (gAssetStorage->hasLocalAsset(uuid, LLAssetType::AT_SOUND)) if (gAssetStorage->hasLocalAsset(uuid, LLAssetType::AT_SOUND))
{ {
// Just put it on the decode queue. // Just put it on the decode queue.
//llinfos << "addDecodeRequest for " << uuid << " has local asset file already" << llendl;
mImpl->mDecodeQueue.push(uuid); mImpl->mDecodeQueue.push(uuid);
return TRUE; return TRUE;
} }
//llinfos << "addDecodeRequest for " << uuid << " no file available" << llendl;
return FALSE; return FALSE;
} }

View File

@@ -1275,10 +1275,11 @@ void LLAudioEngine::assetCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::E
// Need to mark data as bad to avoid constant rerequests. // Need to mark data as bad to avoid constant rerequests.
LLAudioData *adp = gAudiop->getAudioData(uuid); LLAudioData *adp = gAudiop->getAudioData(uuid);
if (adp) if (adp)
{ { // Make sure everything is cleared
adp->setHasValidData(false); adp->setHasValidData(false);
adp->setHasLocalData(false); adp->setHasLocalData(false);
adp->setHasDecodedData(false); adp->setHasDecodedData(false);
adp->setHasCompletedDecode(true);
} }
} }
else else
@@ -1291,6 +1292,7 @@ void LLAudioEngine::assetCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::E
} }
else else
{ {
// llinfos << "Got asset callback with good audio data for " << uuid << ", making decode request" << llendl;
adp->setHasValidData(true); adp->setHasValidData(true);
adp->setHasLocalData(true); adp->setHasLocalData(true);
gAudioDecodeMgrp->addDecodeRequest(uuid); gAudioDecodeMgrp->addDecodeRequest(uuid);
@@ -1380,16 +1382,18 @@ void LLAudioSource::update()
if (!getCurrentBuffer()) if (!getCurrentBuffer())
{ {
if (getCurrentData()) LLAudioData *adp = getCurrentData();
if (adp)
{ {
// Hack - try and load the sound. Will do this as a callback // Hack - try and load the sound. Will do this as a callback
// on decode later. // on decode later.
if (getCurrentData()->load() && getCurrentData()->getBuffer()) if (adp->load() && adp->getBuffer())
{ {
play(getCurrentData()->getID()); play(adp->getID());
} }
else else if (adp->hasCompletedDecode()) // Only mark corrupted after decode is done
{ {
llwarns << "Marking LLAudioSource corrupted for " << adp->getID() << llendl;
mCorrupted = true ; mCorrupted = true ;
} }
} }
@@ -1812,6 +1816,7 @@ LLAudioData::LLAudioData(const LLUUID &uuid) :
mBufferp(NULL), mBufferp(NULL),
mHasLocalData(false), mHasLocalData(false),
mHasDecodedData(false), mHasDecodedData(false),
mHasCompletedDecode(false),
mHasValidData(true) mHasValidData(true)
{ {
if (uuid.isNull()) if (uuid.isNull())
@@ -1823,12 +1828,13 @@ LLAudioData::LLAudioData(const LLUUID &uuid) :
if (gAudiop && gAudiop->hasDecodedFile(uuid)) if (gAudiop && gAudiop->hasDecodedFile(uuid))
{ {
// Already have a decoded version, don't need to decode it. // Already have a decoded version, don't need to decode it.
mHasLocalData = true; setHasLocalData(true);
mHasDecodedData = true; setHasDecodedData(true);
setHasCompletedDecode(true);
} }
else if (gAssetStorage && gAssetStorage->hasLocalAsset(uuid, LLAssetType::AT_SOUND)) else if (gAssetStorage && gAssetStorage->hasLocalAsset(uuid, LLAssetType::AT_SOUND))
{ {
mHasLocalData = true; setHasLocalData(true);
} }
} }

View File

@@ -408,10 +408,12 @@ public:
bool hasLocalData() const { return mHasLocalData; } bool hasLocalData() const { return mHasLocalData; }
bool hasDecodedData() const { return mHasDecodedData; } bool hasDecodedData() const { return mHasDecodedData; }
bool hasCompletedDecode() const { return mHasCompletedDecode; }
bool hasValidData() const { return mHasValidData; } bool hasValidData() const { return mHasValidData; }
void setHasLocalData(const bool hld) { mHasLocalData = hld; } void setHasLocalData(const bool hld) { mHasLocalData = hld; }
void setHasDecodedData(const bool hdd) { mHasDecodedData = hdd; } void setHasDecodedData(const bool hdd) { mHasDecodedData = hdd; }
void setHasCompletedDecode(const bool hcd) { mHasCompletedDecode = hcd; }
void setHasValidData(const bool hvd) { mHasValidData = hvd; } void setHasValidData(const bool hvd) { mHasValidData = hvd; }
friend class LLAudioEngine; // Severe laziness, bad. friend class LLAudioEngine; // Severe laziness, bad.
@@ -419,9 +421,10 @@ public:
protected: protected:
LLUUID mID; LLUUID mID;
LLAudioBuffer *mBufferp; // If this data is being used by the audio system, a pointer to the buffer will be set here. LLAudioBuffer *mBufferp; // If this data is being used by the audio system, a pointer to the buffer will be set here.
bool mHasLocalData; bool mHasLocalData; // Set true if the sound asset file is available locally
bool mHasDecodedData; bool mHasDecodedData; // Set true if the sound file has been decoded
bool mHasValidData; bool mHasCompletedDecode; // Set true when the sound is decoded
bool mHasValidData; // Set false if decoding failed, meaning the sound asset is bad
}; };

View File

@@ -105,10 +105,6 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
U32 version; U32 version;
FMOD_RESULT result; FMOD_RESULT result;
int numdrivers;
FMOD_SPEAKERMODE speakermode;
FMOD_CAPS caps;
char name[256];
LL_DEBUGS("AppInit") << "LLAudioEngine_FMODEX::init() initializing FMOD" << LL_ENDL; LL_DEBUGS("AppInit") << "LLAudioEngine_FMODEX::init() initializing FMOD" << LL_ENDL;
@@ -124,11 +120,16 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
if (version < FMOD_VERSION) if (version < FMOD_VERSION)
{ {
LL_WARNS("AppInit") << "Error : You are using the wrong FMOD version (" << version LL_WARNS("AppInit") << "Error : You are using the wrong FMOD Ex version (" << version
<< ")! You should be using FMOD " << FMOD_VERSION << LL_ENDL; << ")! You should be using FMOD Ex" << FMOD_VERSION << LL_ENDL;
} }
#if LL_WINDOWS #if LL_WINDOWS
int numdrivers;
FMOD_SPEAKERMODE speakermode;
FMOD_CAPS caps;
char name[256];
//Is this block applicable to linux? //Is this block applicable to linux?
{ {
result = mSystem->getNumDrivers(&numdrivers); result = mSystem->getNumDrivers(&numdrivers);
@@ -181,64 +182,36 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
fmod_flags |= FMOD_INIT_ENABLE_PROFILE; fmod_flags |= FMOD_INIT_ENABLE_PROFILE;
#if LL_LINUX #if LL_LINUX
// If we don't set an output method, Linux FMOD always
// decides on OSS and fails otherwise. So we'll manually
// try ESD, then OSS, then ALSA.
// Why this order? See SL-13250, but in short, OSS emulated
// on top of ALSA is ironically more reliable than raw ALSA.
// Ack, and ESD has more reliable failure modes - but has worse
// latency - than all of them, so wins for now.
bool audio_ok = false; bool audio_ok = false;
if (!audio_ok) if (!audio_ok)
{ {
if (NULL == getenv("LL_BAD_FMODEX_ESD")) /*Flawfinder: ignore*/ if (NULL == getenv("LL_BAD_FMOD_PULSEAUDIO")) /*Flawfinder: ignore*/
{ {
LL_DEBUGS("AppInit") << "Trying ESD audio output..." << LL_ENDL; LL_DEBUGS("AppInit") << "Trying PulseAudio audio output..." << LL_ENDL;
if(mSystem->SetOutput(FMOD_OUTPUTTYPE_ESD) == FMOD_OK && if(mSystem->setOutput(FMOD_OUTPUTTYPE_PULSEAUDIO) == FMOD_OK &&
(result = mSystem->init(num_channels, fmod_flags, 0)) == FMOD_OK) (result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
{ {
LL_DEBUGS("AppInit") << "ESD audio output initialized OKAY" << LL_ENDL; LL_DEBUGS("AppInit") << "PulseAudio output initialized OKAY" << LL_ENDL;
audio_ok = true; audio_ok = true;
} }
else else
{ {
Check_FMOD_Error(result, "ESD audio output FAILED to initialize"); Check_FMOD_Error(result, "PulseAudio audio output FAILED to initialize");
} }
} }
else else
{ {
LL_DEBUGS("AppInit") << "ESD audio output SKIPPED" << LL_ENDL; LL_DEBUGS("AppInit") << "PulseAudio audio output SKIPPED" << LL_ENDL;
} }
} }
if (!audio_ok) if (!audio_ok)
{ {
if (NULL == getenv("LL_BAD_FMODEX_OSS")) /*Flawfinder: ignore*/ if (NULL == getenv("LL_BAD_FMOD_ALSA")) /*Flawfinder: ignore*/
{
LL_DEBUGS("AppInit") << "Trying OSS audio output..." << LL_ENDL;
if(mSystem->SetOutput(FMOD_OUTPUTTYPE_OSS) == FMOD_OK &&
(result = mSystem->init(num_channels, fmod_flags, 0)) == FMOD_OK)
{
LL_DEBUGS("AppInit") << "OSS audio output initialized OKAY" << LL_ENDL;
audio_ok = true;
}
else
{
Check_FMOD_Error(result, "OSS audio output FAILED to initialize" << LL_ENDL;
}
}
else
{
LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
}
}
if (!audio_ok)
{
if (NULL == getenv("LL_BAD_FMODEX_ALSA")) /*Flawfinder: ignore*/
{ {
LL_DEBUGS("AppInit") << "Trying ALSA audio output..." << LL_ENDL; LL_DEBUGS("AppInit") << "Trying ALSA audio output..." << LL_ENDL;
if(mSystem->SetOutput(FMOD_OUTPUTTYPE_ALSA) && if(mSystem->setOutput(FMOD_OUTPUTTYPE_ALSA) == FMOD_OK &&
(result = mSystem->init(num_channels, fmod_flags, 0)) == FMOD_OK) (result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
{ {
LL_DEBUGS("AppInit") << "ALSA audio output initialized OKAY" << LL_ENDL; LL_DEBUGS("AppInit") << "ALSA audio output initialized OKAY" << LL_ENDL;
audio_ok = true; audio_ok = true;
@@ -247,7 +220,29 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
{ {
Check_FMOD_Error(result, "ALSA audio output FAILED to initialize"); Check_FMOD_Error(result, "ALSA audio output FAILED to initialize");
} }
} else }
else
{
LL_DEBUGS("AppInit") << "ALSA audio output SKIPPED" << LL_ENDL;
}
}
if (!audio_ok)
{
if (NULL == getenv("LL_BAD_FMOD_OSS")) /*Flawfinder: ignore*/
{
LL_DEBUGS("AppInit") << "Trying OSS audio output..." << LL_ENDL;
if(mSystem->setOutput(FMOD_OUTPUTTYPE_OSS) == FMOD_OK &&
(result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
{
LL_DEBUGS("AppInit") << "OSS audio output initialized OKAY" << LL_ENDL;
audio_ok = true;
}
else
{
Check_FMOD_Error(result, "OSS audio output FAILED to initialize");
}
}
else
{ {
LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL; LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
} }
@@ -258,25 +253,20 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
return false; return false;
} }
// On Linux, FMOD causes a SIGPIPE for some netstream error
// conditions (an FMOD bug); ignore SIGPIPE so it doesn't crash us.
// NOW FIXED in FMOD 3.x since 2006-10-01.
//signal(SIGPIPE, SIG_IGN);
// We're interested in logging which output method we // We're interested in logging which output method we
// ended up with, for QA purposes. // ended up with, for QA purposes.
FMOD_OUTPUTTYPE output_type; FMOD_OUTPUTTYPE output_type;
mSystem->getOutput(output_type); mSystem->getOutput(&output_type);
switch (output_type) switch (output_type)
{ {
case FSOUND_OUTPUT_NOSOUND: case FMOD_OUTPUTTYPE_NOSOUND:
LL_DEBUGS("AppInit") << "Audio output: NoSound" << LL_ENDL; break; LL_INFOS("AppInit") << "Audio output: NoSound" << LL_ENDL; break;
case FSOUND_OUTPUT_OSS: case FMOD_OUTPUTTYPE_PULSEAUDIO:
LL_DEBUGS("AppInit") << "Audio output: OSS" << LL_ENDL; break; LL_INFOS("AppInit") << "Audio output: PulseAudio" << LL_ENDL; break;
case FSOUND_OUTPUT_ESD: case FMOD_OUTPUTTYPE_ALSA:
LL_DEBUGS("AppInit") << "Audio output: ESD" << LL_ENDL; break; LL_INFOS("AppInit") << "Audio output: ALSA" << LL_ENDL; break;
case FSOUND_OUTPUT_ALSA: case FMOD_OUTPUTTYPE_OSS:
LL_DEBUGS("AppInit") << "Audio output: ALSA" << LL_ENDL; break; LL_INFOS("AppInit") << "Audio output: OSS" << LL_ENDL; break;
default: default:
LL_INFOS("AppInit") << "Audio output: Unknown!" << LL_ENDL; break; LL_INFOS("AppInit") << "Audio output: Unknown!" << LL_ENDL; break;
}; };
@@ -297,7 +287,7 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
*/ */
result = mSystem->init( num_channels + 2, fmod_flags, 0); result = mSystem->init( num_channels + 2, fmod_flags, 0);
} }
if(Check_FMOD_Error(result, "Error initializing FMOD")) if(Check_FMOD_Error(result, "Error initializing FMOD Ex"))
return false; return false;
#endif #endif
@@ -305,7 +295,7 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
if (!getStreamingAudioImpl()) // no existing implementation added if (!getStreamingAudioImpl()) // no existing implementation added
setStreamingAudioImpl(new LLStreamingAudio_FMODEX(mSystem)); setStreamingAudioImpl(new LLStreamingAudio_FMODEX(mSystem));
LL_DEBUGS("AppInit") << "LLAudioEngine_FMODEX::init() FMOD initialized correctly" << LL_ENDL; LL_INFOS("AppInit") << "LLAudioEngine_FMODEX::init() FMOD Ex initialized correctly" << LL_ENDL;
mInited = true; mInited = true;
@@ -321,10 +311,10 @@ std::string LLAudioEngine_FMODEX::getDriverName(bool verbose)
U32 version; U32 version;
if(!Check_FMOD_Error(mSystem->getVersion(&version), "FMOD::System::getVersion")) if(!Check_FMOD_Error(mSystem->getVersion(&version), "FMOD::System::getVersion"))
{ {
return llformat("FMOD version %1x.%02x.%02x", version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF); return llformat("FMOD Ex %1x.%02x.%02x", version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF);
} }
} }
return "FMOD"; return "FMODEx";
} }
@@ -342,12 +332,13 @@ void LLAudioEngine_FMODEX::shutdown()
{ {
stopInternetStream(); stopInternetStream();
llinfos << "About to LLAudioEngine::shutdown()" << llendl;
LLAudioEngine::shutdown(); LLAudioEngine::shutdown();
llinfos << "LLAudioEngine_FMODEX::shutdown() closing FMOD" << llendl; llinfos << "LLAudioEngine_FMODEX::shutdown() closing FMOD Ex" << llendl;
mSystem->close(); mSystem->close();
mSystem->release(); mSystem->release();
llinfos << "LLAudioEngine_FMODEX::shutdown() done closing FMOD" << llendl; llinfos << "LLAudioEngine_FMODEX::shutdown() done closing FMOD Ex" << llendl;
delete mListenerp; delete mListenerp;
mListenerp = NULL; mListenerp = NULL;

View File

@@ -35,6 +35,8 @@
#if LL_WINDOWS #if LL_WINDOWS
#include <windows.h> #include <windows.h>
#else
#include <unistd.h>
#endif #endif
#include "linden_common.h" #include "linden_common.h"

View File

@@ -42,6 +42,7 @@
#if LL_DARWIN || LL_LINUX #if LL_DARWIN || LL_LINUX
// not required or present on Win32 // not required or present on Win32
#include <sys/wait.h> #include <sys/wait.h>
#include <unistd.h>
#endif #endif
LLProcessLauncher::LLProcessLauncher() LLProcessLauncher::LLProcessLauncher()

View File

@@ -416,7 +416,7 @@ public:
{ //we have data { //we have data
mData.erase(data); mData.erase(data);
mElementCount = mData.size(); mElementCount = mData.size();
notifyRemoval(data); this->notifyRemoval(data);
checkAlive(); checkAlive();
return true; return true;
} }
@@ -454,7 +454,7 @@ public:
{ {
mData.erase(data); mData.erase(data);
mElementCount = mData.size(); mElementCount = mData.size();
notifyRemoval(data); this->notifyRemoval(data);
llwarns << "FOUND!" << llendl; llwarns << "FOUND!" << llendl;
checkAlive(); checkAlive();
return; return;
@@ -663,7 +663,7 @@ public:
//(don't notify listeners of addition) //(don't notify listeners of addition)
for (U32 i = 0; i < child->getChildCount(); i++) for (U32 i = 0; i < child->getChildCount(); i++)
{ {
addChild(child->getChild(i), TRUE); this->addChild(child->getChild(i), TRUE);
} }
//destroy child //destroy child
@@ -707,10 +707,10 @@ public:
return false; return false;
} }
if (this->getSize()[0] > data->getBinRadius() && isInside(data->getPositionGroup())) if (this->getSize()[0] > data->getBinRadius() && this->isInside(data->getPositionGroup()))
{ {
//we got it, just act like a branch //we got it, just act like a branch
oct_node* node = getNodeAt(data); oct_node* node = this->getNodeAt(data);
if (node == this) if (node == this)
{ {
LLOctreeNode<T>::insert(data); LLOctreeNode<T>::insert(data);
@@ -723,7 +723,7 @@ public:
else if (this->getChildCount() == 0) else if (this->getChildCount() == 0)
{ {
//first object being added, just wrap it up //first object being added, just wrap it up
while (!(this->getSize()[0] > data->getBinRadius() && isInside(data->getPositionGroup()))) while (!(this->getSize()[0] > data->getBinRadius() && this->isInside(data->getPositionGroup())))
{ {
LLVector4a center, size; LLVector4a center, size;
center = this->getCenter(); center = this->getCenter();
@@ -738,7 +738,7 @@ public:
} }
else else
{ {
while (!(this->getSize()[0] > data->getBinRadius() && isInside(data->getPositionGroup()))) while (!(this->getSize()[0] > data->getBinRadius() && this->isInside(data->getPositionGroup())))
{ {
//the data is outside the root node, we need to grow //the data is outside the root node, we need to grow
LLVector4a center(this->getCenter()); LLVector4a center(this->getCenter());
@@ -764,7 +764,7 @@ public:
//clear our children and add the root copy //clear our children and add the root copy
this->clearChildren(); this->clearChildren();
addChild(newnode); this->addChild(newnode);
} }
//insert the data //insert the data

View File

@@ -704,9 +704,9 @@ BOOL LLColor4::parseColor(const std::string& buf, LLColor4* color)
{ {
color->set(LLColor4::orange6); color->set(LLColor4::orange6);
} }
else if ( "clear" == color_name ) else if ( "clear" == color_name || "transparent" == color_name )
{ {
color->set(0.f, 0.f, 0.f, 0.f); color->set(LLColor4::transparent);
} }
else else
{ {

View File

@@ -202,8 +202,8 @@ void LLCurl::Responder::completedHeader(U32 status, const std::string& reason, c
} }
namespace boost //namespace boost
{ //{
void intrusive_ptr_add_ref(LLCurl::Responder* p) void intrusive_ptr_add_ref(LLCurl::Responder* p)
{ {
++p->mReferenceCount; ++p->mReferenceCount;
@@ -216,7 +216,7 @@ namespace boost
delete p; delete p;
} }
} }
}; //};
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////

View File

@@ -378,11 +378,11 @@ private:
void cleanupMulti(LLCurl::Multi* multi) ; void cleanupMulti(LLCurl::Multi* multi) ;
} ; } ;
namespace boost //namespace boost
{ //{
void intrusive_ptr_add_ref(LLCurl::Responder* p); void intrusive_ptr_add_ref(LLCurl::Responder* p);
void intrusive_ptr_release(LLCurl::Responder* p); void intrusive_ptr_release(LLCurl::Responder* p);
}; //};
class LLCurlRequest class LLCurlRequest

View File

@@ -55,11 +55,11 @@ void pump_debug(const char *file, S32 line);
/** /**
* intrusive pointer support * intrusive pointer support
*/ */
namespace boost //namespace boost
{ //{
void intrusive_ptr_add_ref(LLIOPipe* p); void intrusive_ptr_add_ref(LLIOPipe* p);
void intrusive_ptr_release(LLIOPipe* p); void intrusive_ptr_release(LLIOPipe* p);
}; //};
/** /**
* @class LLIOPipe * @class LLIOPipe
@@ -250,13 +250,13 @@ protected:
LLPumpIO* pump) = 0; LLPumpIO* pump) = 0;
private: private:
friend void boost::intrusive_ptr_add_ref(LLIOPipe* p); friend void /*boost::*/intrusive_ptr_add_ref(LLIOPipe* p);
friend void boost::intrusive_ptr_release(LLIOPipe* p); friend void /*boost::*/intrusive_ptr_release(LLIOPipe* p);
U32 mReferenceCount; U32 mReferenceCount;
}; };
namespace boost //namespace boost
{ //{
inline void intrusive_ptr_add_ref(LLIOPipe* p) inline void intrusive_ptr_add_ref(LLIOPipe* p)
{ {
++p->mReferenceCount; ++p->mReferenceCount;
@@ -268,7 +268,7 @@ namespace boost
delete p; delete p;
} }
} }
}; //};
#if 0 #if 0

View File

@@ -32,8 +32,8 @@
#include "net.h" #include "net.h"
#include "message.h" #include "message.h"
namespace boost //namespace boost
{ //{
void intrusive_ptr_add_ref(LLRegionPresenceVerifier::Response* p) void intrusive_ptr_add_ref(LLRegionPresenceVerifier::Response* p)
{ {
++p->mReferenceCount; ++p->mReferenceCount;
@@ -46,7 +46,7 @@ namespace boost
delete p; delete p;
} }
} }
}; //};
LLRegionPresenceVerifier::Response::~Response() LLRegionPresenceVerifier::Response::~Response()
{ {

View File

@@ -89,10 +89,10 @@ public:
}; };
}; };
namespace boost //namespace boost
{ //{
void intrusive_ptr_add_ref(LLRegionPresenceVerifier::Response* p); void intrusive_ptr_add_ref(LLRegionPresenceVerifier::Response* p);
void intrusive_ptr_release(LLRegionPresenceVerifier::Response* p); void intrusive_ptr_release(LLRegionPresenceVerifier::Response* p);
}; //};
#endif //LL_LLREGIONPRESENCEVERIFIER_H #endif //LL_LLREGIONPRESENCEVERIFIER_H

View File

@@ -36,6 +36,7 @@
#include <winsock2.h> #include <winsock2.h>
#include <windows.h> #include <windows.h>
#else #else
#include <unistd.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <netinet/in.h> #include <netinet/in.h>

View File

@@ -77,8 +77,8 @@ void LLCurl::Responder::result(LLSD const&)
{ {
} }
namespace boost //namespace boost
{ //{
void intrusive_ptr_add_ref(LLCurl::Responder* p) void intrusive_ptr_add_ref(LLCurl::Responder* p)
{ {
++p->mReferenceCount; ++p->mReferenceCount;
@@ -91,5 +91,5 @@ namespace boost
delete p; delete p;
} }
} }
}; //};

View File

@@ -90,6 +90,7 @@ class LLGLFence
public: public:
virtual void placeFence() = 0; virtual void placeFence() = 0;
virtual void wait() = 0; virtual void wait() = 0;
virtual ~LLGLFence() {}
}; };
//============================================================================ //============================================================================

View File

@@ -7,6 +7,7 @@ class LLDeleteJob
{ {
public: public:
virtual BOOL work(U32& completed); virtual BOOL work(U32& completed);
virtual ~LLDeleteJob() {}
}; };
class LLViewDeleteJob : public LLDeleteJob class LLViewDeleteJob : public LLDeleteJob
{ {

View File

@@ -2372,7 +2372,7 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
if (mCanSelect) if (mCanSelect)
{ {
// Ignore capslock // Ignore capslock
mask = mask; //mask = mask; //Why was this here?
if (mask == MASK_NONE) if (mask == MASK_NONE)
{ {

View File

@@ -54,6 +54,7 @@ static bool isProcessAlive(U32 pid)
} }
#else //Everyone Else #else //Everyone Else
#include <unistd.h>
static U32 getPID() { static U32 getPID() {
return getpid(); return getpid();

View File

@@ -2621,8 +2621,9 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
if (sortpat) if (sortpat)
{ {
// Sort the list of system fonts from most-to-least-desirable. // Sort the list of system fonts from most-to-least-desirable.
FcResult fresult;
fs = FcFontSort(NULL, sortpat, elide_unicode_coverage, fs = FcFontSort(NULL, sortpat, elide_unicode_coverage,
NULL, NULL); NULL, &fresult);
FcPatternDestroy(sortpat); FcPatternDestroy(sortpat);
} }

View File

@@ -838,7 +838,7 @@ namespace LLInitParam
BaseBlock::addParam(block_descriptor, param_descriptor, name); BaseBlock::addParam(block_descriptor, param_descriptor, name);
} }
setValue(value); this->setValue(value);
} }
bool isProvided() const { return Param::anyProvided(); } bool isProvided() const { return Param::anyProvided(); }
@@ -926,7 +926,7 @@ namespace LLInitParam
void set(value_assignment_t val, bool flag_as_provided = true) void set(value_assignment_t val, bool flag_as_provided = true)
{ {
param_value_t::clearValueName(); param_value_t::clearValueName();
setValue(val); this->setValue(val);
setProvided(flag_as_provided); setProvided(flag_as_provided);
} }
@@ -1068,7 +1068,7 @@ namespace LLInitParam
// assign block contents to this param-that-is-a-block // assign block contents to this param-that-is-a-block
void set(value_assignment_t val, bool flag_as_provided = true) void set(value_assignment_t val, bool flag_as_provided = true)
{ {
setValue(val); this->setValue(val);
param_value_t::clearValueName(); param_value_t::clearValueName();
// force revalidation of block // force revalidation of block
// next call to isProvided() will update provision status based on validity // next call to isProvided() will update provision status based on validity
@@ -1723,7 +1723,7 @@ namespace LLInitParam
Optional& operator =(value_assignment_t val) Optional& operator =(value_assignment_t val)
{ {
set(val); this->set(val);
return *this; return *this;
} }
@@ -1752,7 +1752,7 @@ namespace LLInitParam
Mandatory& operator =(value_assignment_t val) Mandatory& operator =(value_assignment_t val)
{ {
set(val); this->set(val);
return *this; return *this;
} }

View File

@@ -487,10 +487,34 @@ void LLScriptLibrary::init()
addFunction(10.f, 0.f, dummy_func, "llSetContentType", NULL, "ki"); addFunction(10.f, 0.f, dummy_func, "llSetContentType", NULL, "ki");
addFunction(10.f, 0.f, dummy_func, "llLinkSitTarget", NULL, "ivr"); addFunction(10.f, 0.f, dummy_func, "llLinkSitTarget", NULL, "ivr");
addFunction(10.f, 0.f, dummy_func, "llAvatarOnLinkSitTarget", "k", "i"); addFunction(10.f, 0.f, dummy_func, "llAvatarOnLinkSitTarget", "k", "i");
/* No info on these new functions yet.... addFunction(10.f, 0.f, dummy_func, "llGetMassMKS", "f", NULL);
* addFunction(10.f, 0.f, dummy_func, "llSetVelocity", "", ""); addFunction(10.f, 0.f, dummy_func, "llGetMemoryLimit", "i", NULL);
* addFunction(10.f, 0.f, dummy_func, "llSetRotationalVelocity", "", ""); addFunction(10.f, 0.f, dummy_func, "llGetParcelMusicURL", "s", NULL);
*/ addFunction(10.f, 0.f, dummy_func, "llGetPhysicsMaterial", "l", NULL);
addFunction(10.f, 0.f, dummy_func, "llManageEstateAccess", "i", "ik");
addFunction(10.f, 0.f, dummy_func, "llSetAngularVelocity", NULL, "vi");
addFunction(10.f, 0.f, dummy_func, "llSetKeyframedMotion", NULL, "ll");
addFunction(10.f, 0.f, dummy_func, "llSetPhysicsMaterial", NULL, "iffff");
addFunction(10.f, 0.f, dummy_func, "llSetRegionPos", "i", "v");
addFunction(10.f, 0.f, dummy_func, "llSetVelocity", NULL, "vi");
addFunction(10.f, 0.f, dummy_func, "llTransferLindenDollars", "k", "ki");
//Pathfinder functions. Current state: alpha, thus subject to change.
//This and the preceding line are to be removed in future revisions of this file.
addFunction(10.f, 0.f, dummy_func, "llCreateCharacter", NULL, "l");
addFunction(10.f, 0.f, dummy_func, "llDeleteCharacter", NULL, NULL);
addFunction(10.f, 0.f, dummy_func, "llEvade", NULL, "kl");
addFunction(10.f, 0.f, dummy_func, "llExecCharacterCmd", NULL, "il");
addFunction(10.f, 0.f, dummy_func, "llGetClosestNavPoint", "l", "vl");
addFunction(10.f, 0.f, dummy_func, "llFleeFrom", NULL, "vfl");
addFunction(10.f, 0.f, dummy_func, "llNavigateTo", NULL, "vl");
addFunction(10.f, 0.f, dummy_func, "llPatrolPoints", NULL, "ll");
addFunction(10.f, 0.f, dummy_func, "llPursue", NULL, "kl");
addFunction(10.f, 0.f, dummy_func, "llUpdateCharacter", NULL, "l");
addFunction(10.f, 0.f, dummy_func, "llWanderWithin", NULL, "vfl");
// REGARDING OSSL FUNCTIONS // REGARDING OSSL FUNCTIONS
// These additions should be posted underneath the llFunctions // These additions should be posted underneath the llFunctions
@@ -624,6 +648,16 @@ void LLScriptLibrary::init()
addFunction(10.f, 0.f, dummy_func, "osNpcGetPos", "v", "k"); addFunction(10.f, 0.f, dummy_func, "osNpcGetPos", "v", "k");
addFunction(10.f, 0.f, dummy_func, "osNpcStopMoveToTarget", NULL, "k"); addFunction(10.f, 0.f, dummy_func, "osNpcStopMoveToTarget", NULL, "k");
addFunction(10.f, 0.f, dummy_func, "osIsNpc", "i", "k");
addFunction(10.f, 0.f, dummy_func, "osNpcGetOwner", "k", "k");
addFunction(10.f, 0.f, dummy_func, "osGetGridCustom", "s", "s");
addFunction(10.f, 0.f, dummy_func, "osGetGridHomeURI", "s", NULL);
addFunction(10.f, 0.f, dummy_func, "osNpcPlayAnimation", NULL, "ks");
addFunction(10.f, 0.f, dummy_func, "osNpcSit", NULL, "kki");
addFunction(10.f, 0.f, dummy_func, "osNpcStand", NULL, "k");
addFunction(10.f, 0.f, dummy_func, "osNpcStopAnimation", NULL, "ks");
addFunction(10.f, 0.f, dummy_func, "osSetRot", NULL, "kq");
} }
LLScriptLibraryFunction::LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only) LLScriptLibraryFunction::LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only)

View File

@@ -1361,32 +1361,33 @@ if (FMOD OR FMODEX)
set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD") set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD")
endif (FMOD) endif (FMOD)
if (NOT WINDOWS) if (DARWIN)
set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp) set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp)
add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES}) add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES})
if(FMOD AND FMODEX)
set(fmodwrapper_needed_LIBRARIES "${FMODEX_LIBRARY} ${FMOD_LIBRARY}")
else(FMOD AND FMODEX)
if (FMODEX) if (FMODEX)
set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY}) set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY})
endif (FMODEX) endif (FMODEX)
if (FMOD) if (FMOD)
set(fmodwrapper_needed_LIBRARIES "${FMOD_LIBRARY}") set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY})
endif (FMOD) endif (FMOD)
endif(FMOD AND FMODEX)
if (DARWIN)
list(APPEND fmodwrapper_needed_LIBRARIES ${CARBON_LIBRARY})
set_target_properties( set_target_properties(
fmodwrapper fmodwrapper
PROPERTIES PROPERTIES
BUILD_WITH_INSTALL_RPATH 1 BUILD_WITH_INSTALL_RPATH 1
INSTALL_NAME_DIR "@executable_path/../Resources" INSTALL_NAME_DIR "@executable_path/../Resources"
LINK_FLAGS "-unexported_symbols_list \"${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp\"" LINK_FLAGS "-unexported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp"
) )
endif (DARWIN)
set(FMODWRAPPER_LIBRARY fmodwrapper) set(FMODWRAPPER_LIBRARY fmodwrapper)
target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES}) target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES})
endif (NOT WINDOWS) else (DARWIN)
# fmodwrapper unnecessary on linux or windows, for fmod and fmodex
if (FMODEX)
set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY})
endif (FMODEX)
if (FMOD)
set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY})
endif (FMOD)
endif (DARWIN)
endif (FMOD OR FMODEX) endif (FMOD OR FMODEX)
set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}") set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")

View File

@@ -51,6 +51,8 @@ changed changed( integer change ):Triggered various event change the task:(tes
remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY) remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY)
http_response http_response(key request_id, integer status, list metadata, string body):Triggered when task receives a response to one of its llHTTPRequests http_response http_response(key request_id, integer status, list metadata, string body):Triggered when task receives a response to one of its llHTTPRequests
http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL
transaction_result transaction_result(key id, integer success, string data):Triggered when task receives asynchronous data.
path_update path_update(integer type, list reserved):Triggered when the state of a pathfinder character changes. Note; "list reserved" is not currently used
# integer constants # integer constants
[word .1, .1, .5] [word .1, .1, .5]
@@ -605,6 +607,121 @@ WL_CLOUD_SCROLL_Y_LOCK Windlight Cloud Scroll Y Lock
WL_CLOUD_SCROLL_X_LOCK Windlight Cloud Scroll X Lock WL_CLOUD_SCROLL_X_LOCK Windlight Cloud Scroll X Lock
WL_DRAW_CLASSIC_CLOUDS Windlight Draw Classic Clouds WL_DRAW_CLASSIC_CLOUDS Windlight Draw Classic Clouds
# OSSL constants
STATS_TIME_DILATION
STATS_SIM_FPS
STATS_PHYSICS_FPS
STATS_AGENT_UPDATES
STATS_ROOT_AGENTS
STATS_CHILD_AGENTS
STATS_TOTAL_PRIMS
STATS_ACTIVE_PRIMS
STATS_FRAME_MS
STATS_NET_MS
STATS_PHYSICS_MS
STATS_IMAGE_MS
STATS_OTHER_MS
STATS_IN_PACKETS_PER_SECOND
STATS_OUT_PACKETS_PER_SECOND
STATS_UNACKED_BYTES
STATS_AGENT_MS
STATS_PENDING_DOWNLOADS
STATS_PENDING_UPLOADS
STATS_ACTIVE_SCRIPTS
STATS_SCRIPT_LPS
## Constants for osNpc* functions
NPC
OS_NPC_CREATOR_OWNED
OS_NPC_NOT_OWNED
OS_NPC_SENSE_AS_AGENT
OS_NPC_FLY
OS_NPC_NO_FLY
OS_NPC_LAND_AT_TARGET
OS_NPC_SIT_NOW
## Missing LSL constants (from http://wiki.secondlife.com/wiki/Category:LSL_Constants)
## Adding now, sorting later
ATTACH_HUD_BOTTOM
ATTACH_HUD_BOTTOM_LEFT
ATTACH_HUD_BOTTOM_RIGHT
ATTACH_HUD_CENTER_1
ATTACH_HUD_CENTER_2
ATTACH_HUD_TOP_CENTER
ATTACH_HUD_TOP_LEFT
ATTACH_HUD_TOP_RIGHT
ATTACH_LEFT_PEC
ATTACH_RIGHT_PEC
HTTP_VERBOSE_THROTTLE
OBJECT_PRIM_EQUIVALENCE
PARCEL_MEDIA_COMMAND_LOOP_SET
PRIM_LINK_TARGET
PRIM_OMEGA
PRIM_PHYSICS_MATERIAL
PRIM_PHYSICS_SHAPE_TYPE
PRIM_POS_LOCAL
PRIM_ROT_LOCAL
PROFILE_NONE
PROFILE_SCRIPT_MEMORY
RCERR_CAST_TIME_EXCEEDED
RCERR_SIM_PERF_LOW
RCERR_UNKNOWN
RC_DATA_FLAGS
RC_DETECT_PHANTOM
RC_GET_LINK_NUM
RC_GET_NORMAL
RC_GET_ROOT_KEY
RC_MAX_HITS
RC_REJECT_AGENTS
RC_REJECT_LAND
RC_REJECT_NONPHYSICAL
RC_REJECT_PHYSICAL
RC_REJECT_TYPES
STATUS_BLOCK_GRAB_OBJECT
#Even more missing constants, thanks to Justin Clark Casey for pointing me into the right direction
CAMERA_FOCUS_OFFSET_X
CAMERA_FOCUS_OFFSET_Y
CAMERA_FOCUS_OFFSET_Z
CAMERA_FOCUS_X
CAMERA_FOCUS_Y
CAMERA_FOCUS_Z
CAMERA_POSITION_X
CAMERA_POSITION_Y
CAMERA_POSITION_Z
CHANGED_ANIMATION
CHANGED_REGION_RESTART
DATA_SIM_RELEASE
ESTATE_ACCESS_ALLOWED_AGENT_ADD
ESTATE_ACCESS_ALLOWED_AGENT_REMOVE
ESTATE_ACCESS_ALLOWED_GROUP_ADD
ESTATE_ACCESS_ALLOWED_GROUP_REMOVE
ESTATE_ACCESS_BANNED_AGENT_ADD
ESTATE_ACCESS_BANNED_AGENT_REMOVE
LIST_STAT_HARMONIC_MEAN
PARCEL_DETAILS_CLAIMDATE
PERMISSION_CHANGE_JOINTS
PERMISSION_CHANGE_PERMISSIONS
PERMISSION_RELEASE_OWNERSHIP
PERMISSION_REMAP_CONTROLS
VEHICLE_FLAG_LOCK_HOVER_HEIGHT
VEHICLE_FLAG_LOCK_ROTATION
VEHICLE_FLAG_NO_DEFLECTION
VEHICLE_FLAG_NO_X
VEHICLE_FLAG_NO_Y
VEHICLE_FLAG_NO_Z
VEHICLE_RANGE_BLOCK
VEHICLE_ROLL_FRAME
LSL_STATUS_BOUNDS_ERROR
LSL_STATUS_INTERNAL_ERROR
LSL_STATUS_MALFORMED_PARAMS
LSL_STATUS_NOT_FOUND
LSL_STATUS_NOT_SUPPORTED
LSL_STATUS_OK
LSL_STATUS_TYPE_MISMATCH
LSL_STATUS_WHITELIST_FAILED
# string constants # string constants
[word .1, .3, .5] [word .1, .3, .5]
NULL_KEY Indicates an empty key NULL_KEY Indicates an empty key

View File

@@ -5115,6 +5115,17 @@
<key>Value</key> <key>Value</key>
<integer>1</integer> <integer>1</integer>
</map> </map>
<key>EnableGestureSoundsSelf</key>
<map>
<key>Comment</key>
<string>Play sounds from your gestures when EnableGestureSounds is false. (Useless otherewise)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>EnableMouselook</key> <key>EnableMouselook</key>
<map> <map>
<key>Comment</key> <key>Comment</key>
@@ -7234,6 +7245,39 @@
<key>Value</key> <key>Value</key>
<real>1.0</real> <real>1.0</real>
</map> </map>
<key>InventoryOutboxMaxFolderCount</key>
<map>
<key>Comment</key>
<string>Maximum number of subfolders allowed in a listing in the merchant outbox.</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>21</integer>
</map>
<key>InventoryOutboxMaxFolderDepth</key>
<map>
<key>Comment</key>
<string>Maximum number of nested levels of subfolders allowed in a listing in the merchant outbox.</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>4</integer>
</map>
<key>InventoryOutboxMaxItemCount</key>
<map>
<key>Comment</key>
<string>Maximum number of items allowed in a listing in the merchant outbox.</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>200</integer>
</map>
<key>InventorySortOrder</key> <key>InventorySortOrder</key>
<map> <map>
<key>Comment</key> <key>Comment</key>
@@ -8284,17 +8328,6 @@
<key>Value</key> <key>Value</key>
<real>0</real> <real>0</real>
</map> </map>
<key>MeshUploadTimeOut</key>
<map>
<key>Comment</key>
<string>Maximum time in seconds for llcurl to execute a mesh uploading request</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<real>600</real>
</map>
<key>MeshUploadFakeErrors</key> <key>MeshUploadFakeErrors</key>
<map> <map>
<key>Comment</key> <key>Comment</key>
@@ -8306,7 +8339,17 @@
<key>Value</key> <key>Value</key>
<real>0</real> <real>0</real>
</map> </map>
<key>MeshUploadTimeOut</key>
<map>
<key>Comment</key>
<string>Maximum time in seconds for llcurl to execute a mesh uploading request</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<real>600</real>
</map>
<key>MigrateCacheDirectory</key> <key>MigrateCacheDirectory</key>
<map> <map>
<key>Comment</key> <key>Comment</key>
@@ -10380,7 +10423,6 @@
<key>Value</key> <key>Value</key>
<real>0.01</real> <real>0.01</real>
</map> </map>
<key>RenderShadowBiasError</key> <key>RenderShadowBiasError</key>
<map> <map>
<key>Comment</key> <key>Comment</key>

View File

@@ -6,15 +6,20 @@
## - Avoids using any OpenAL audio driver. ## - Avoids using any OpenAL audio driver.
#export LL_BAD_OPENAL_DRIVER=x #export LL_BAD_OPENAL_DRIVER=x
## - Avoids using any FMOD Ex audio driver.
#export LL_BAD_FMODEX_DRIVER=x
## - Avoids using any FMOD audio driver. ## - Avoids using any FMOD audio driver.
#export LL_BAD_FMOD_DRIVER=x #export LL_BAD_FMOD_DRIVER=x
## - Avoids using the FMOD ESD audio driver. ## - Avoids using the FMOD Ex PulseAudio audio driver.
#export LL_BAD_FMOD_ESD=x #export LL_BAD_FMOD_PULSEAUDIO=x
## - Avoids using the FMOD OSS audio driver. ## - Avoids using the FMOD or FMOD Ex ALSA audio driver.
#export LL_BAD_FMOD_OSS=x
## - Avoids using the FMOD ALSA audio driver.
#export LL_BAD_FMOD_ALSA=x #export LL_BAD_FMOD_ALSA=x
## - Avoids using the FMOD or FMOD Ex OSS audio driver.
#export LL_BAD_FMOD_OSS=x
## - Avoids using the FMOD or FMOD Ex ESD audio driver.
#export LL_BAD_FMOD_ESD=x
## - Avoids the optional OpenGL extensions which have proven most problematic ## - Avoids the optional OpenGL extensions which have proven most problematic
## on some hardware. Disabling this option may cause BETTER PERFORMANCE but ## on some hardware. Disabling this option may cause BETTER PERFORMANCE but

View File

@@ -4001,7 +4001,7 @@ void LLAgent::sendAgentSetAppearance()
llinfos << "Avatar XML num VisualParams transmitted = " << transmitted_params << llendl; llinfos << "Avatar XML num VisualParams transmitted = " << transmitted_params << llendl;
if(transmitted_params < 218) { if(transmitted_params < 218) {
LLNotificationsUtil::add("SGIncompleteAppearence"); LLNotificationsUtil::add("SGIncompleteAppearance");
} }
sendReliableMessage(); sendReliableMessage();
} }

View File

@@ -1791,7 +1791,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
(glow << 24); (glow << 24);
U32 vec[4]; U32 vec[4];
vec[0] = vec[1] = vec[2] = vec[3] = glow32; std::fill_n(vec,4,glow32);
src.loadua((F32*) vec); src.loadua((F32*) vec);

View File

@@ -178,6 +178,7 @@ class AIFilePicker;
class LLInventoryFVBridgeBuilder class LLInventoryFVBridgeBuilder
{ {
public: public:
LLInventoryFVBridgeBuilder() {}
virtual ~LLInventoryFVBridgeBuilder() {} virtual ~LLInventoryFVBridgeBuilder() {}
virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type, virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
LLAssetType::EType actual_asset_type, LLAssetType::EType actual_asset_type,
@@ -627,6 +628,7 @@ public:
class LLRecentInventoryBridgeBuilder : public LLInventoryFVBridgeBuilder class LLRecentInventoryBridgeBuilder : public LLInventoryFVBridgeBuilder
{ {
public: public:
LLRecentInventoryBridgeBuilder(): LLInventoryFVBridgeBuilder() {}
// Overrides FolderBridge for Recent Inventory Panel. // Overrides FolderBridge for Recent Inventory Panel.
// It use base functionality for bridges other than FolderBridge. // It use base functionality for bridges other than FolderBridge.
virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type, virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type,

View File

@@ -1435,10 +1435,10 @@ bool idle_startup()
{ {
case LLUserAuth::E_OK: case LLUserAuth::E_OK:
response = LLUserAuth::getInstance()->getResponse(); response = LLUserAuth::getInstance()->getResponse();
login_response = response["login"]; login_response = response["login"].asString();
reason_response = response["reason"]; reason_response = response["reason"].asString();
message_response = response["message"]; message_response = response["message"].asString();
message_id = response["message_id"]; message_id = response["message_id"].asString();
if(login_response == "true") if(login_response == "true")
{ {
@@ -4293,45 +4293,45 @@ bool process_login_success_response(std::string& password)
// Override grid info with anything sent in the login response // Override grid info with anything sent in the login response
std::string tmp = response["gridname"]; std::string tmp = response["gridname"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setGridName(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setGridName(tmp);
tmp = response["loginuri"]; tmp = response["loginuri"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginUri(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginUri(tmp);
tmp = response["welcome"]; tmp = response["welcome"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginPage(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginPage(tmp);
tmp = response["loginpage"]; tmp = response["loginpage"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginPage(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setLoginPage(tmp);
tmp = response["economy"]; tmp = response["economy"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setHelperUri(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setHelperUri(tmp);
tmp = response["helperuri"]; tmp = response["helperuri"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setHelperUri(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setHelperUri(tmp);
tmp = response["about"]; tmp = response["about"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setWebSite(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setWebSite(tmp);
tmp = response["website"]; tmp = response["website"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setWebSite(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setWebSite(tmp);
tmp = response["help"]; tmp = response["help"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSupportUrl(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSupportUrl(tmp);
tmp = response["support"]; tmp = response["support"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSupportUrl(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSupportUrl(tmp);
tmp = response["register"]; tmp = response["register"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRegisterUrl(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRegisterUrl(tmp);
tmp = response["account"]; tmp = response["account"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRegisterUrl(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRegisterUrl(tmp);
tmp = response["password"]; tmp = response["password"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setPasswordUrl(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setPasswordUrl(tmp);
tmp = response["search"]; tmp = response["search"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setSearchUrl(tmp);
tmp = response["currency"]; tmp = response["currency"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setCurrencySymbol(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setCurrencySymbol(tmp);
tmp = response["real_currency"]; tmp = response["real_currency"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRealCurrencySymbol(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setRealCurrencySymbol(tmp);
tmp = response["directory_fee"]; tmp = response["directory_fee"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setDirectoryFee(atoi(tmp.c_str())); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setDirectoryFee(atoi(tmp.c_str()));
tmp = response["max_groups"]; tmp = response["max_groups"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str())); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str()));
tmp = response["max-agent-groups"]; tmp = response["max-agent-groups"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str())); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str()));
tmp = response["VoiceConnector"]; tmp = response["VoiceConnector"].asString();
if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setVoiceConnector(tmp); if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setVoiceConnector(tmp);
gHippoGridManager->saveFile(); gHippoGridManager->saveFile();
gHippoLimits->setLimits(); gHippoLimits->setLimits();

View File

@@ -236,8 +236,8 @@ void LLSurfacePatch::eval(const U32 x, const U32 y, const U32 stride, LLVector3
const F32 xyScaleInv = (1.f / xyScale)*(0.2222222222f); const F32 xyScaleInv = (1.f / xyScale)*(0.2222222222f);
F32 vec[3] = { F32 vec[3] = {
fmod((F32)(mOriginGlobal.mdV[0] + x)*xyScaleInv, 256.f), (F32)fmod((mOriginGlobal.mdV[0] + x)*xyScaleInv, 256.f),
fmod((F32)(mOriginGlobal.mdV[1] + y)*xyScaleInv, 256.f), (F32)fmod((mOriginGlobal.mdV[1] + y)*xyScaleInv, 256.f),
0.f 0.f
}; };
F32 rand_val = llclamp(noise2(vec)* 0.75f + 0.5f, 0.f, 1.f); F32 rand_val = llclamp(noise2(vec)* 0.75f + 0.5f, 0.f, 1.f);

View File

@@ -9064,7 +9064,7 @@ class LLEditTakeOff : public view_listener_t
&& (gAgentWearables.getWearableCount(type) > 0)) && (gAgentWearables.getWearableCount(type) > 0))
{ {
// MULTI-WEARABLES: assuming user wanted to remove top shirt. // MULTI-WEARABLES: assuming user wanted to remove top shirt.
U32 wearable_index = gAgentWearables.getWearableCount(type) - 1; S32 wearable_index = gAgentWearables.getWearableCount(type) - 1;
// [RLVa:KB] - Checked: 2010-06-09 (RLVa-1.2.0g) | Added: RLVa-1.2.0g // [RLVa:KB] - Checked: 2010-06-09 (RLVa-1.2.0g) | Added: RLVa-1.2.0g
if ( (rlv_handler_t::isEnabled()) && (gRlvWearableLocks.hasLockedWearable(type)) ) if ( (rlv_handler_t::isEnabled()) && (gRlvWearableLocks.hasLockedWearable(type)) )

View File

@@ -4873,6 +4873,8 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
// Don't play sounds from gestures if they are not enabled. // Don't play sounds from gestures if they are not enabled.
if (object_id == owner_id && !gSavedSettings.getBOOL("EnableGestureSounds")) if (object_id == owner_id && !gSavedSettings.getBOOL("EnableGestureSounds"))
{ {
// Don't mute own gestures, if they're not muted.
if(owner_id != gAgent.getID() || !gSavedSettings.getBOOL("EnableGestureSoundsSelf"))
return; return;
} }

View File

@@ -1107,7 +1107,7 @@ public:
} }
else if( i != you_index) else if( i != you_index)
{ {
U32 loc = x << 16 | y << 8 | z; loc = loc; //U32 loc = x << 16 | y << 8 | z; //Unused variable, why did this exist?
U32 pos = 0x0; U32 pos = 0x0;
pos |= x; pos |= x;
pos <<= 8; pos <<= 8;

View File

@@ -89,7 +89,7 @@ const StatAttributes STAT_INFO[LLViewerStats::ST_COUNT] =
// ST_VERSION // ST_VERSION
StatAttributes("Version", TRUE, FALSE), StatAttributes("Version", TRUE, FALSE),
// ST_AVATAR_EDIT_SECONDS // ST_AVATAR_EDIT_SECONDS
StatAttributes("Seconds in Edit Appearence", FALSE, TRUE), StatAttributes("Seconds in Edit Appearance", FALSE, TRUE),
// ST_TOOLBOX_SECONDS // ST_TOOLBOX_SECONDS
StatAttributes("Seconds using Toolbox", FALSE, TRUE), StatAttributes("Seconds using Toolbox", FALSE, TRUE),
// ST_CHAT_COUNT // ST_CHAT_COUNT

View File

@@ -842,7 +842,7 @@ void SHClientTagMgr::updateAvatarTag(LLVOAvatar* pAvatar)
std::map<LLUUID, LLSD>::iterator it = mAvatarTags.find(id); std::map<LLUUID, LLSD>::iterator it = mAvatarTags.find(id);
LLSD new_tag = generateClientTag(pAvatar); LLSD new_tag = generateClientTag(pAvatar);
LLSD& old_tag = (it != mAvatarTags.end()) ? it->second : LLSD(); LLSD old_tag = (it != mAvatarTags.end()) ? it->second : LLSD();
bool dirty = old_tag.size() != new_tag.size() || !llsd_equals(new_tag,old_tag); bool dirty = old_tag.size() != new_tag.size() || !llsd_equals(new_tag,old_tag);
if(dirty) if(dirty)

View File

@@ -469,7 +469,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
case CURLE_SSL_CACERT: case CURLE_SSL_CACERT:
case CURLE_SSL_CONNECT_ERROR: case CURLE_SSL_CONNECT_ERROR:
message = message =
"Often this means that your computer\'s clock is set incorrectly.\n" "Often this means that your computer's clock is set incorrectly.\n"
"Please go to Control Panels and make sure the time and date\n" "Please go to Control Panels and make sure the time and date\n"
"are set correctly.\n" "are set correctly.\n"
"\n" "\n"

View File

@@ -22,7 +22,7 @@
follows="top|left" follows="top|left"
font="SansSerif" font="SansSerif"
height="343" height="343"
bg_readonly_color="Transparent" bg_readonly_color="transparent"
left="1" left="1"
max_length="65536" max_length="65536"
name="support_editor" name="support_editor"
@@ -49,7 +49,7 @@
<text_editor <text_editor
enabled="false" enabled="false"
follows="left|top" follows="left|top"
bg_readonly_color="Transparent" bg_readonly_color="transparent"
left="1" left="1"
text_color="LtGray" text_color="LtGray"
max_length="65536" max_length="65536"

View File

@@ -911,7 +911,7 @@ Only large parcels can be listed in search.
height="16" height="16"
left="10" left="10"
length="1" length="1"
name="at URL:" name="at URL2:"
type="string" type="string"
width="65"> width="65">
Current URL: Current URL:

View File

@@ -19,10 +19,10 @@
<button height="20" bottom_delta="-28" label="Save" font="SansSerif" left="20" name="save_btn" tool_tip="Save your new Display Name" width="113" /> <button height="20" bottom_delta="-28" label="Save" font="SansSerif" left="20" name="save_btn" tool_tip="Save your new Display Name" width="113" />
<button height="20" bottom_delta="0" label="Reset" font="SansSerif" left_delta="123" name="reset_btn" tool_tip="Make Display Name the same as Username" width="113" /> <button height="20" bottom_delta="0" label="Reset" font="SansSerif" left_delta="123" name="reset_btn" tool_tip="Make Display Name the same as Username" width="113" />
<button height="20" bottom_delta="0" label="Cancel" font="SansSerif" left_delta="123" name="cancel_btn" tool_tip="Cancel and close this Dialog" width="113" /> <button height="20" bottom_delta="0" label="Cancel" font="SansSerif" left_delta="123" name="cancel_btn" tool_tip="Cancel and close this Dialog" width="113" />
<text left="20" bottom_delta="-25" width="360" height="18" font="SansSerif" name="name_confirm_label"> <text left="20" bottom_delta="-25" width="360" height="18" font="SansSerif" name="name_confirm_label2">
The name you give your avatar is called yours Display Name. The name you give your avatar is called yours Display Name.
</text> </text>
<text left="20" bottom_delta="-18" width="360" height="18" font="SansSerif" name="name_confirm_label"> <text left="20" bottom_delta="-18" width="360" height="18" font="SansSerif" name="name_confirm_label3">
You can change it once a week. You can change it once a week.
</text> </text>
</floater> </floater>

View File

@@ -538,6 +538,20 @@ Add this Ability to &apos;[ROLE_NAME]&apos;?
yestext="Yes"/> yestext="Yes"/>
</notification> </notification>
<notification
icon="alertmodal.tga"
name="AttachmentDrop"
type="alertmodal">
You are about to drop your attachment.
Are you sure you want to continue?
<tag>confirm</tag>
<usetemplate
ignoretext="Confirm before dropping attachments"
name="okcancelignore"
notext="No"
yestext="Yes"/>
</notification>
<notification <notification
icon="alertmodal.tga" icon="alertmodal.tga"
name="ClickPublishHelpLand" name="ClickPublishHelpLand"
@@ -7214,9 +7228,9 @@ Click 'Wear' to attach the Physics Wearable, or click 'Cancel' if you wish to ma
<notification <notification
icon="alert.tga" icon="alert.tga"
name="SGIncompleteAppearence" name="SGIncompleteAppearance"
type="alert"> type="alert">
Sending incomplete appearence. You may appear to others as a cloud. Sending incomplete appearance. You may appear to others as a cloud.
Your shape, skin, hair or eyes might be defect. Your shape, skin, hair or eyes might be defect.
<usetemplate <usetemplate

View File

@@ -16,7 +16,7 @@
<view_border bevel_style="none" border_thickness="1" bottom_delta="0" follows="top|left" height="75" <view_border bevel_style="none" border_thickness="1" bottom_delta="0" follows="top|left" height="75"
left="235" name="CmdDivisor" width="0"/> left="235" name="CmdDivisor" width="0"/>
--> -->
<text bottom="-15" left="250" name="objects_link_text_box" width="300">Chat:</text> <text bottom="-15" left="250" name="objects_link_text_box2" width="300">Chat:</text>
<check_box bottom_delta="-25" left_delta="-5" follows="left|top" control_name="PlayTypingSound" initial_value="true" <check_box bottom_delta="-25" left_delta="-5" follows="left|top" control_name="PlayTypingSound" initial_value="true"
label="Play the typing sound for local chat" tool_tip="Silences the chatting type sound, making it quieter for things like performances." name="play_typing_sound_check"/> label="Play the typing sound for local chat" tool_tip="Silences the chatting type sound, making it quieter for things like performances." name="play_typing_sound_check"/>
<check_box bottom_delta="-20" follows="left|top" control_name="HideNotificationsInChat" initial_value="false" <check_box bottom_delta="-20" follows="left|top" control_name="HideNotificationsInChat" initial_value="false"
@@ -25,7 +25,7 @@
label="Allow MU pose method." tool_tip="Allows the use of both /me and : to perform emotes." name="allow_mu_pose_check"/> label="Allow MU pose method." tool_tip="Allows the use of both /me and : to perform emotes." name="allow_mu_pose_check"/>
<check_box bottom_delta="-20" follows="left|top" control_name="AscentAutoCloseOOC" <check_box bottom_delta="-20" follows="left|top" control_name="AscentAutoCloseOOC"
label="Auto-close OOC comments." tool_tip="Will automatically append '))' to any message starting with '((', or visa versa." name="close_ooc_check"/> label="Auto-close OOC comments." tool_tip="Will automatically append '))' to any message starting with '((', or visa versa." name="close_ooc_check"/>
<text bottom_delta="-15" follows="left|top" name="objects_link_text_box">Show links on chatting object names in chat history for:</text> <text bottom_delta="-15" follows="left|top" name="objects_link_text_box3">Show links on chatting object names in chat history for:</text>
<radio_group bottom_delta="-26" control_name="LinksForChattingObjects" tool_tip="Enables a link to show you the owner of the speaking object." <radio_group bottom_delta="-26" control_name="LinksForChattingObjects" tool_tip="Enables a link to show you the owner of the speaking object."
follows="top" height="20" left="20" name="objects_link" width="350"> follows="top" height="20" left="20" name="objects_link" width="350">
<radio_item bottom_delta="0" left_delta="5" name="no_object" width="48">No object</radio_item> <radio_item bottom_delta="0" left_delta="5" name="no_object" width="48">No object</radio_item>
@@ -58,7 +58,7 @@
<check_box bottom_delta="-20" follows="left|top" initial_value="false" label="Send an item along with the response" name="AscentInstantMessageResponseItem" tool_tip="You can include an inventory item to send along with your auto response by dragging it from your inventory to the location below"/> <check_box bottom_delta="-20" follows="left|top" initial_value="false" label="Send an item along with the response" name="AscentInstantMessageResponseItem" tool_tip="You can include an inventory item to send along with your auto response by dragging it from your inventory to the location below"/>
<text bottom_delta="120" left_delta="245" follows="left|top" height="18" name="text_box1">Response Text:</text> <text bottom_delta="120" left_delta="245" follows="left|top" height="18" name="text_box1">Response Text:</text>
<text_editor bottom_delta="-110" follows="left|top" height="110" max_length="1100" name="im_response" width="230" word_wrap="true" spell_check="true"/> <text_editor bottom_delta="-110" follows="left|top" height="110" max_length="1100" name="im_response" width="230" word_wrap="true" spell_check="true"/>
<text bottom_delta="-25" follows="left|top" height="18" name="text_box1"> <text bottom_delta="-25" follows="left|top" height="18" name="text_box2">
#f for user's first name, #l for last name, #f for user's first name, #l for last name,
#t for timestamp, #r for SLURL to you, #t for timestamp, #r for SLURL to you,
#i for your idle time. (e.g. "5 mins") #i for your idle time. (e.g. "5 mins")

View File

@@ -24,7 +24,7 @@
<text bottom_delta="-26" follows="top" height="10" left="12" name="socks5_host_label">Socks 5 Host:</text> <text bottom_delta="-26" follows="top" height="10" left="12" name="socks5_host_label">Socks 5 Host:</text>
<line_editor bottom_delta="-6" follows="top" font="SansSerif" height="20" left="90" name="socks5_proxy_host" tool_tip="The name or IP address of the SOCKS5 proxy you would like to use" width="311"/> <line_editor bottom_delta="-6" follows="top" font="SansSerif" height="20" left="90" name="socks5_proxy_host" tool_tip="The name or IP address of the SOCKS5 proxy you would like to use" width="311"/>
<spinner bottom_delta="-30" decimal_digits="0" follows="top" height="16" increment="1" initial_val="80" label="Port Number:" label_width="75" max_val="65535" min_val="0" name="socks5_proxy_port" width="140"/> <spinner bottom_delta="-30" decimal_digits="0" follows="top" height="16" increment="1" initial_val="80" label="Port Number:" label_width="75" max_val="65535" min_val="0" name="socks5_proxy_port" width="140"/>
<text bottom_delta="-20" follows="top" height="10" left="12" name="socks5_auth_label">Socks5 Authentication:</text> <text bottom_delta="-20" follows="top" height="10" left="12" name="socks5_auth_label2">Socks5 Authentication:</text>
<radio_group bottom_delta="-6" draw_border="false" follows="top" height="20" name="socks5_auth" width="420"> <radio_group bottom_delta="-6" draw_border="false" follows="top" height="20" name="socks5_auth" width="420">
<radio_item bottom="0" height="20" left_delta="80" name="None" tool_tip="No authentication">None</radio_item> <radio_item bottom="0" height="20" left_delta="80" name="None" tool_tip="No authentication">None</radio_item>
<radio_item bottom="0" height="20" left_delta="50" name="UserPass" tool_tip="Username / Password authentication">Username/Password</radio_item> <radio_item bottom="0" height="20" left_delta="50" name="UserPass" tool_tip="Username / Password authentication">Username/Password</radio_item>

View File

@@ -2527,4 +2527,144 @@ Sets value of param property for plugin module.
(OpenSim only.) (OpenSim only.)
</string> </string>
<string name="Unnamed">(Unnamed)</string> <string name="Unnamed">(Unnamed)</string>
<string name="LSLTipText_llGetMassMKS">
float llGetMassMKS()
Returns a float that is the mass (in
Kilograms) of the object that the
script is attached to.
</string>
<string name="LSLTipText_llGetMemoryLimit">
integer llGetMemoryLimit()
Get the maximum memory a script can use.
</string>
<string name="LSLTipText_llGetParcelMusicURL">
string llGetParcelMusicURL()
Returns a string containing the parcel streaming audio URL.
The object owner must also be the land owner.
</string>
<string name="LSLTipText_llGetPhysicsMaterial">
list llGetPhysicsMaterial()
Used to get the physical characteristics of an object.
Returns a list in the form [ float gravity_multiplier, float restitution, float friction, float density ]
</string>
<string name="LSLTipText_llManageEstateAccess">
integer llManageEstateAccess(integer action, key avatar)
Used to add or remove agents from the estate's agent access or ban lists or groups from the estate's group access list.
</string>
<string name="LSLTipText_llSetAngularVelocity">
llSetAngularVelocity(vector force, integer local)
Applies rotational velocity to object.
</string>
<string name="LSLTipText_llSetKeyframedMotion">
llSetKeyframedMotion(list keyframes, list options)
Specify a list of times, positions, and orientations to be followed by an object. The object will be smoothly moved between keyframes by the simulator.
</string>
<string name="LSLTipText_llSetPhysicsMaterial">
llSetPhysicsMaterial(integer material, float gravity,
float restitution, float friction, float density)
Used for setting the physical characteristics of an object.
</string>
<string name="LSLTipText_llSetRegionPos">
integer llSetRegionPos(vector position)
Tries to move the entire object so that the root prim is within 0.1m of position
</string>
<string name="LSLTipText_llSetVelocity">
llSetVelocity(vector force, integer local)
Applies velocity to an object
</string>
<string name="LSLTipText_llTransferLindenDollars">
key llTransferLindenDollars(key destination, integer amount)
Transfer amount of L$ money from script owner to destination avatar.
</string>
<!-- Pathfinder functions. Current state: alpha -->
<string name="LSLTipText_llCreateCharacter">
llCreateCharacter(list options)
Creates a pathfinding entity, known as a "character" from the object containing the script.
</string>
<string name="LSLTipText_llDeleteCharacter">
llDeleteCharacter()
Convert the current linkset back to a standard object, removing all pathfinding properties.
</string>
<string name="LSLTipText_llEvade">
llEvade(key target, list options)
Characters will try to hide from their pursuers if there is a good hiding spot along their fleeing path.
</string>
<string name="LSLTipText_llExecCharacterCmd">
llExecCharacterCmd(integer command, list options)
Send a command to the pathing system.
</string>
<string name="LSLTipText_llGetClosestNavPoint">
list llGetClosestNavPoint(vector point, list options)
Finds the closest navpoint and returns a list with a single vector if succesful. Returns empty list when no navpoints found.
</string>
<string name="LSLTipText_llFleeFrom">
llFleeFrom(vector source, float distance, list options)
Tells an object to keep away from a defined position in the region or adjacent regions.
</string>
<string name="LSLTipText_llNavigateTo">
llNavigateTo(vector pos, list options)
Tells an object to travel to a defined position in the region or adjacent regions.
</string>
<string name="LSLTipText_llPatrolPoints">
llPatrolPoints(list patrolPoints, list options)
Sets the object patrolling between the points specified in patrolPoints.
</string>
<string name="LSLTipText_llPursue">
llPursue(key target, list options)
Causes the object to pursue a target.
</string>
<string name="LSLTipText_llUpdateCharacter">
llUpdateCharacter(list options)
Updates settings for a character.
</string>
<string name="LSLTipText_llWanderWithin">
llWanderWithin(vector origin, float dist, list options)
Sets a character to wander about a central spot within a specified radius.
</string>
<string name="LSLTipText_osIsNpc">
integer osIsNpc(key npc)
Returns TRUE if the given key is an NPC, false otherwise.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcGetOwner">
key osNpcGetOwner(key npc)
Return the owner key of the given NPC. If the NPC is unowned or the input key does not belong to an NPC then it returns NULL_KEY.
(OpenSim only.)
</string>
<string name="LSLTipText_osGetGridCustom">
string osGetGridCustom(string key)
Reads configuration strings from the [GridInfo] setion in OpenSim.ini.
(OpenSim only.)
</string>
<string name="LSLTipText_osGetGridHomeURI">
string osGetGridHomeURI()
Returns the hypergrid URI of the grid where the user logged in.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcPlayAnimation">
osNpcPlayAnimation(key npc, string animation)
Get an NPC to play an animation. The animation can either be a key or the name of an animation in the same object as the script.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcSit">
osNpcSit(key npc, key target, integer options)
Sit an NPC on a prim target. No options have been implemented yet, so always input 0.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcStand">
osNpcStand(key npc)
Make an NPC stand up.
(OpenSim only.)
</string>
<string name="LSLTipText_osNpcStopAnimation">
osNpcStopAnimation(key npc, string animation)
Get an NPC to stop playing an animation. The animation can either be a key or the name of an animation in the same inventory as the script.
(OpenSim only.)
</string>
<string name="LSLTipText_osSetRot">
osSetRot(key target, quaternion rotation)
Rotates an object or avatar.
(OpenSim only.)
</string>
</strings> </strings>

View File

@@ -40,6 +40,9 @@
#include "volume_catcher.h" #include "volume_catcher.h"
#ifndef LL_WINDOWS
#include <unistd.h>
#endif
extern "C" { extern "C" {
#include <glib.h> #include <glib.h>