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

Conflicts:
	indra/newview/lldynamictexture.cpp
This commit is contained in:
Siana Gearz
2012-03-31 01:54:53 +02:00
17 changed files with 752 additions and 757 deletions

View File

@@ -645,7 +645,7 @@ void LLMultisampleBuffer::release()
if (mTex.size() > 0)
{
sBytesAllocated -= mResX*mResY*4*mResX*mResY*4*mTex.size();
sBytesAllocated -= mResX*mResY*4*mTex.size();
glDeleteRenderbuffers(mTex.size(), (GLuint *) &mTex[0]);
mTex.clear();

View File

@@ -396,8 +396,8 @@
<attachment_point
id="39"
group="9"
pie_slice="1"
group="6"
pie_slice="0"
name="Neck"
joint="mNeck"
position="0 0 0"
@@ -406,8 +406,8 @@
<attachment_point
id="40"
group="9"
pie_slice="2"
group="6"
pie_slice="4"
name="Root"
joint="mRoot"
position="0 0 0"

View File

@@ -2,31 +2,25 @@
* @file llclassifiedinfo.cpp
* @brief LLClassifiedInfo class definition
*
* $LicenseInfo:firstyear=2005&license=viewergpl$
*
* Copyright (c) 2005-2009, Linden Research, Inc.
*
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
* Copyright (C) 2010, Linden Research, Inc.
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
* 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.
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
* 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.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* 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$
*/
@@ -38,35 +32,19 @@
LLClassifiedInfo::cat_map LLClassifiedInfo::sCategories;
// static
void LLClassifiedInfo::loadCategories(LLUserAuth::options_t classified_options)
void LLClassifiedInfo::loadCategories(const LLSD& options)
{
LLUserAuth::options_t::iterator resp_it;
for (resp_it = classified_options.begin();
resp_it != classified_options.end();
++resp_it)
for(LLSD::array_const_iterator resp_it = options.beginArray(),
end = options.endArray(); resp_it != end; ++resp_it)
{
const LLUserAuth::response_t& response = *resp_it;
LLUserAuth::response_t::const_iterator option_it;
S32 cat_id = 0;
option_it = response.find("category_id");
if (option_it != response.end())
LLSD name = (*resp_it)["category_name"];
if(name.isDefined())
{
cat_id = atoi(option_it->second.c_str());
LLSD id = (*resp_it)["category_id"];
if(id.isDefined())
{
LLClassifiedInfo::sCategories[id.asInteger()] = name.asString();
}
}
else
{
continue;
}
// Add the category id/name pair
option_it = response.find("category_name");
if (option_it != response.end())
{
LLClassifiedInfo::sCategories[cat_id] = option_it->second;
}
}
}

View File

@@ -2,31 +2,25 @@
* @file llclassifiedinfo.h
* @brief LLClassifiedInfo class definition
*
* $LicenseInfo:firstyear=2005&license=viewergpl$
*
* Copyright (c) 2005-2009, Linden Research, Inc.
*
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
* Copyright (C) 2010, Linden Research, Inc.
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
* 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.
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
* 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.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* 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$
*/
@@ -37,7 +31,6 @@
#include "v3dmath.h"
#include "lluuid.h"
#include "lluserauth.h"
class LLMessageSystem;
@@ -46,7 +39,7 @@ class LLClassifiedInfo
public:
LLClassifiedInfo() {}
static void loadCategories(LLUserAuth::options_t event_options);
static void loadCategories(const LLSD& options);
typedef std::map<U32, std::string> cat_map;
static cat_map sCategories;

View File

@@ -152,8 +152,8 @@ void LLViewerDynamicTexture::preRender(BOOL clear_depth)
mOrigin.mY += window_pos.mY;
mOrigin.mY = llmax(mOrigin.mY, 0) ;
}
}
}
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
// Set up camera
LLViewerCamera* camera = LLViewerCamera::getInstance();
@@ -221,7 +221,6 @@ BOOL LLViewerDynamicTexture::updateAllInstances()
}
bool use_fbo = gGLManager.mHasFramebufferObject && gPipeline.mWaterDis.isComplete();
if (use_fbo)
{
gPipeline.mWaterDis.bindTarget();

View File

@@ -101,35 +101,19 @@ void LLEventInfo::unpack(LLMessageSystem *msg)
}
// static
void LLEventInfo::loadCategories(LLUserAuth::options_t event_options)
void LLEventInfo::loadCategories(LLSD& event_options)
{
LLUserAuth::options_t::iterator resp_it;
for (resp_it = event_options.begin();
resp_it != event_options.end();
++resp_it)
for(LLSD::array_const_iterator resp_it = event_options.beginArray(),
end = event_options.endArray(); resp_it != end; ++resp_it)
{
const LLUserAuth::response_t& response = *resp_it;
LLUserAuth::response_t::const_iterator option_it;
S32 cat_id = 0;
option_it = response.find("category_id");
if (option_it != response.end())
LLSD name = (*resp_it)["category_name"];
if(name.isDefined())
{
cat_id = atoi(option_it->second.c_str());
LLSD id = (*resp_it)["category_id"];
if(id.isDefined())
{
LLEventInfo::sCategories[id.asInteger()] = name.asString();
}
}
else
{
continue;
}
// Add the category id/name pair
option_it = response.find("category_name");
if (option_it != response.end())
{
LLEventInfo::sCategories[cat_id] = option_it->second;
}
}
}

View File

@@ -48,7 +48,7 @@ public:
void unpack(LLMessageSystem *msg);
static void loadCategories(LLUserAuth::options_t event_options);
static void loadCategories(LLSD& event_options);
public:
std::string mName;

View File

@@ -115,15 +115,12 @@ bool LLEventNotifier::handleResponse(U32 eventId, LLVector3d eventPos, const LLS
return true;
}
void LLEventNotifier::load(const LLUserAuth::options_t& event_options)
void LLEventNotifier::load(const LLSD& event_options)
{
LLUserAuth::options_t::const_iterator resp_it;
for (resp_it = event_options.begin();
resp_it != event_options.end();
++resp_it)
for(LLSD::array_const_iterator resp_it = event_options.beginArray(),
end = event_options.endArray(); resp_it != end; ++resp_it)
{
const LLUserAuth::response_t& response = *resp_it;
LLSD response = *resp_it;
LLEventNotification *new_enp = new LLEventNotification();
if (!new_enp->load(response))
@@ -134,6 +131,7 @@ void LLEventNotifier::load(const LLUserAuth::options_t& event_options)
mEventNotifications[new_enp->getEventID()] = new_enp;
}
}
void LLEventNotifier::add(U32 eventId)
@@ -216,48 +214,47 @@ LLEventNotification::~LLEventNotification()
}
BOOL LLEventNotification::load(const LLUserAuth::response_t &response)
BOOL LLEventNotification::load(const LLSD& response)
{
LLUserAuth::response_t::const_iterator option_it;
BOOL event_ok = TRUE;
option_it = response.find("event_id");
if (option_it != response.end())
LLSD event_id = response["event_id"];
if (event_id.isDefined())
{
mEventID = atoi(option_it->second.c_str());
mEventID = event_id.asInteger();
}
else
{
event_ok = FALSE;
}
option_it = response.find("event_name");
if (option_it != response.end())
LLSD event_name = response["event_name"];
if (event_name.isDefined())
{
llinfos << "Event: " << option_it->second << llendl;
mEventName = option_it->second;
mEventName = event_name.asString();
llinfos << "Event: " << mEventName << llendl;
}
else
{
event_ok = FALSE;
}
/*
option_it = response.find("event_date");
if (option_it != response.end())
LLSD event_date = response["event_date"];
if (event_date.isDefined())
{
llinfos << "EventDate: " << option_it->second << llendl;
mEventDateStr = option_it->second;
mEventDate = event_date.asString();
llinfos << "EventDate: " << mEventDate << llendl;
}
else
{
event_ok = FALSE;
}
*/
option_it = response.find("event_date_ut");
if (option_it != response.end())
LLSD event_date_ut = response["event_date_ut"];
if (event_date_ut.isDefined())
{
llinfos << "EventDate: " << option_it->second << llendl;
mEventDate = strtoul(option_it->second.c_str(), NULL, 10);
std::string date = event_date_ut.asString();
llinfos << "EventDate: " << date << llendl;
mEventDate = strtoul(date.c_str(), NULL, 10);
// Convert to Pacific, based on server's opinion of whether
// it's daylight savings time there.
@@ -282,44 +279,44 @@ BOOL LLEventNotification::load(const LLUserAuth::response_t &response)
S32 x_region = 0;
S32 y_region = 0;
option_it = response.find("grid_x");
if (option_it != response.end())
LLSD grid_x_sd = response["grid_x"];
if (grid_x_sd.isDefined())
{
llinfos << "GridX: " << option_it->second << llendl;
grid_x= atoi(option_it->second.c_str());
grid_x= grid_x_sd.asInteger();
llinfos << "GridX: " << grid_x << llendl;
}
else
{
event_ok = FALSE;
}
option_it = response.find("grid_y");
if (option_it != response.end())
LLSD grid_y_sd = response["grid_y"];
if (grid_y_sd.isDefined())
{
llinfos << "GridY: " << option_it->second << llendl;
grid_y = atoi(option_it->second.c_str());
grid_y= grid_y_sd.asInteger();
llinfos << "GridY: " << grid_y << llendl;
}
else
{
event_ok = FALSE;
}
option_it = response.find("x_region");
if (option_it != response.end())
{
llinfos << "RegionX: " << option_it->second << llendl;
x_region = atoi(option_it->second.c_str());
LLSD x_region_sd = response["x_region"];
if (x_region_sd.isDefined())
{
x_region = x_region_sd.asInteger();
llinfos << "RegionX: " << x_region << llendl;
}
else
{
event_ok = FALSE;
}
option_it = response.find("y_region");
if (option_it != response.end())
LLSD y_region_sd = response["y_region"];
if (y_region_sd.isDefined())
{
llinfos << "RegionY: " << option_it->second << llendl;
y_region = atoi(option_it->second.c_str());
y_region = y_region_sd.asInteger();
llinfos << "RegionY: " << y_region << llendl;
}
else
{

View File

@@ -52,7 +52,7 @@ public:
void add(LLEventInfo &event_info); // Add a new notification for an event
void add(U32 eventId);
void load(const LLUserAuth::options_t& event_options); // In the format that it comes in from LLUserAuth
void load(const LLSD& event_options); // In the format that it comes in from login
void remove(U32 event_id);
BOOL hasNotification(const U32 event_id);
@@ -73,7 +73,7 @@ public:
LLEventNotification();
virtual ~LLEventNotification();
BOOL load(const LLUserAuth::response_t &en); // In the format it comes in from LLUserAuth
BOOL load(const LLSD& en); // In the format it comes in from LLUserAuth
BOOL load(const LLEventInfo &event_info); // From existing event_info on the viewer.
//void setEventID(const U32 event_id);
//void setEventName(std::string &event_name);

File diff suppressed because it is too large Load Diff

View File

@@ -44,6 +44,7 @@
#include "llviewercontrol.h"
#include "llxmlrpctransaction.h"
#include "llsdutil.h"
#include "stringize.h"
// NOTE: MUST include these after otherincludes since queue gets redefined!?!!
#include <curl/curl.h>
@@ -86,7 +87,6 @@ void LLUserAuth::reset()
delete mTransaction;
mTransaction = NULL;
mResponses.clear();
mOptions.clear();
mResult.clear();
}
@@ -319,51 +319,6 @@ LLUserAuth::UserAuthcode LLUserAuth::authResponse()
return mAuthResponse;
}
static void parseOptionInto(
const std::string& id, XMLRPC_VALUE option, LLUserAuth::options_t& options)
{
std::string key;
std::string val;
XMLRPC_VALUE_TYPE_EASY type;
XMLRPC_VALUE row = XMLRPC_VectorRewind(option);
while(row)
{
XMLRPC_VALUE opt = XMLRPC_VectorRewind(row);
LLUserAuth::response_t responses;
while(opt)
{
key.assign(XMLRPC_GetValueID(opt));
//llinfos << "option key: " << key << llendl;
type = XMLRPC_GetValueTypeEasy(opt);
if(xmlrpc_type_string == type)
{
val.assign(XMLRPC_GetValueString(opt));
//llinfos << "string val: " << val << llendl;
}
else if(xmlrpc_type_int == type)
{
val = llformat("%d", XMLRPC_GetValueInt(opt));
//llinfos << "int val: " << val << llendl;
}
else if(xmlrpc_type_double == type)
{
val = llformat("%g", XMLRPC_GetValueDouble(opt));
//llinfos << "double val: " << val << llendl;
}
else
{ // Can't understand the type
val = "???";
//llinfos << "unknown value type: " << type << llendl;
}
responses.insert(LLUserAuth::response_t::value_type(key, val));
opt = XMLRPC_VectorNext(row);
}
options.push_back(responses);
row = XMLRPC_VectorNext(option);
}
}
LLUserAuth::UserAuthcode LLUserAuth::parseResponse()
{
// The job of this function is to parse sCurlDownloadArea and
@@ -376,78 +331,90 @@ LLUserAuth::UserAuthcode LLUserAuth::parseResponse()
// clear out any old parsing
mResponses.clear();
mOptions.clear();
// Now, parse everything
std::string key;
std::string val;
XMLRPC_VALUE param = NULL;
XMLRPC_VALUE current = NULL;
XMLRPC_VALUE_TYPE_EASY type;
param = XMLRPC_RequestGetData(response);
if(!param) goto exit;
current = XMLRPC_VectorRewind(param);
while(current)
XMLRPC_VALUE param = XMLRPC_RequestGetData(response);
if (! param)
{
key.assign(XMLRPC_GetValueID(current));
lldebugs << "key: " << key << llendl;
type = XMLRPC_GetValueTypeEasy(current);
if(xmlrpc_type_string == type)
{
val.assign(XMLRPC_GetValueString(current));
lldebugs << "val: " << val << llendl;
mResponses.insert(response_t::value_type(key, val));
}
else if(xmlrpc_type_int == type)
{
val = llformat( "%d", XMLRPC_GetValueInt(current));
lldebugs << "val: " << val << llendl;
mResponses.insert(response_t::value_type(key, val));
}
else if(xmlrpc_type_array == type)
{
options_t options;
parseOptionInto(key, current, options);
mOptions.insert(all_options_t::value_type(key, options));
}
else
{
// whoops - bad response
llwarns << "Unhandled xmlrpc type, key, value: " << type << " "
<< key << " " << val << "." << llendl;
rv = E_UNHANDLED_ERROR;
break;
}
current = XMLRPC_VectorNext(param);
rv = E_OK;
lldebugs << "Response contains no data" << LL_ENDL;
return rv;
}
exit:
// Now, parse everything
mResponses = parseValues(rv, "", param);
return rv;
}
const std::string& LLUserAuth::getResponse(const std::string& key) const
LLSD LLUserAuth::parseValues(UserAuthcode &auth_code, const std::string& key_pfx, XMLRPC_VALUE param)
{
response_t::const_iterator it = mResponses.find(key);
if(it != mResponses.end())
auth_code = E_OK;
LLSD responses;
for(XMLRPC_VALUE current = XMLRPC_VectorRewind(param); current;
current = XMLRPC_VectorNext(param))
{
return((*it).second);
}
return LLStringUtil::null;
}
BOOL LLUserAuth::getOptions(const std::string& key, options_t& options) const
{
all_options_t::const_iterator it = mOptions.find(key);
if(it != mOptions.end())
{
// found the option set, copy them onto the container.
std::back_insert_iterator<options_t> ii(options);
std::copy((*it).second.begin(), (*it).second.end(), ii);
return TRUE;
}
return FALSE;
std::string key(XMLRPC_GetValueID(current));
lldebugs << "key: " << key_pfx << key << llendl;
XMLRPC_VALUE_TYPE_EASY type = XMLRPC_GetValueTypeEasy(current);
if(xmlrpc_type_string == type)
{
LLSD::String val(XMLRPC_GetValueString(current));
lldebugs << "val: " << val << llendl;
responses.insert(key,val);
}
else if(xmlrpc_type_int == type)
{
LLSD::Integer val(XMLRPC_GetValueInt(current));
lldebugs << "val: " << val << llendl;
responses.insert(key,val);
}
else if (xmlrpc_type_double == type)
{
LLSD::Real val(XMLRPC_GetValueDouble(current));
lldebugs << "val: " << val << llendl;
responses.insert(key,val);
}
else if(xmlrpc_type_array == type)
{
// We expect this to be an array of submaps. Walk the array,
// recursively parsing each submap and collecting them.
LLSD array;
int i = 0; // for descriptive purposes
for (XMLRPC_VALUE row = XMLRPC_VectorRewind(current); row;
row = XMLRPC_VectorNext(current), ++i)
{
// Recursive call. For the lower-level key_pfx, if 'key'
// is "foo", pass "foo[0]:", then "foo[1]:", etc. In the
// nested call, a subkey "bar" will then be logged as
// "foo[0]:bar", and so forth.
// Parse the scalar subkey/value pairs from this array
// entry into a temp submap. Collect such submaps in 'array'.
std::string key_prefix = key_pfx;
array.append(parseValues(auth_code,
STRINGIZE(key_pfx << key << '[' << i << "]:"),
row));
}
// Having collected an 'array' of 'submap's, insert that whole
// 'array' as the value of this 'key'.
responses.insert(key, array);
}
else if (xmlrpc_type_struct == type)
{
LLSD submap = parseValues(auth_code,
STRINGIZE(key_pfx << key << ':'),
current);
responses.insert(key, submap);
}
else
{
// whoops - unrecognized type
llwarns << "Unhandled xmlrpc type " << type << " for key "
<< key_pfx << key << LL_ENDL;
responses.insert(key, STRINGIZE("<bad XMLRPC type " << type << '>'));
auth_code = E_UNHANDLED_ERROR;
}
}
return responses;
}

View File

@@ -90,10 +90,6 @@ public:
E_LAST // never use!
} UserAuthcode;
// used for holding options
typedef std::map<std::string, std::string> response_t;
typedef std::vector<response_t> options_t;
// viewer auth version
void authenticate(
const std::string& auth_uri,
@@ -140,8 +136,8 @@ public:
// function to get a direct reponse from the login api by
// name. returns NULL if the named response was not found.
const std::string& getResponse(const std::string& name) const;
BOOL getOptions(const std::string& name, options_t& options) const;
LLSD getResponse() const { return mResponses; }
LLSD getResponse(const std::string& entry) const { return mResponses[entry]; }
F64 getLastTransferRateBPS() const { return mLastTransferRateBPS; }
@@ -152,12 +148,12 @@ private:
std::string mErrorMessage;
// dealing with the XML
typedef std::map<std::string, options_t> all_options_t;
response_t mResponses;
all_options_t mOptions;
LLSD mResponses;
UserAuthcode parseResponse();
LLSD parseValues(UserAuthcode &auth_code, const std::string& key_pfx, XMLRPC_VALUE param);
F64 mLastTransferRateBPS; // bits per second, only valid after a big transfer like inventory
};

View File

@@ -362,7 +362,7 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
// rotateMat.setFwdRow( boneX );
// rotateMat.setLeftRow( boneY );
// rotateMat.setUpRow( boneZ );
// gGL.multMAtrix( &rotateMat.mMatrix[0][0] );
// gGL.multMatrix( &rotateMat.mMatrix[0][0] );
// // render the bone
// gGL.color3f( 0.5f, 0.5f, 0.0f );

View File

@@ -777,7 +777,7 @@ void LLViewerJointMesh::updateGeometry(LLFace *mFace, LLPolyMesh *mMesh)
LLStrider<LLVector3> o_normals;
//get vertex and normal striders
LLVertexBuffer *buffer = mFace->getVertexBuffer();
LLVertexBuffer* buffer = mFace->getVertexBuffer();
buffer->getVertexStrider(o_vertices, 0);
buffer->getNormalStrider(o_normals, 0);

View File

@@ -2,31 +2,25 @@
* @file llviewertextureanim.cpp
* @brief LLViewerTextureAnim class implementation
*
* $LicenseInfo:firstyear=2003&license=viewergpl$
*
* Copyright (c) 2003-2009, Linden Research, Inc.
*
* $LicenseInfo:firstyear=2003&license=viewerlgpl$
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
* Copyright (C) 2010, Linden Research, Inc.
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
* 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.
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
* 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.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* 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$
*/

View File

@@ -2,31 +2,25 @@
* @file llviewertextureanim.h
* @brief LLViewerTextureAnim class header file
*
* $LicenseInfo:firstyear=2003&license=viewergpl$
*
* Copyright (c) 2003-2009, Linden Research, Inc.
*
* $LicenseInfo:firstyear=2003&license=viewerlgpl$
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
* Copyright (C) 2010, Linden Research, Inc.
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
* 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.
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
* 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.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* 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$
*/

View File

@@ -6887,6 +6887,94 @@ The URL you clicked cannot be opened from this web browser.
Could not get region capability &apos;[CAPABILITY]&apos;.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
Avatar '[NAME]' declouded after [TIME] seconds.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezSelfBakedDoneNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
You finished baking your outfit after [TIME] seconds.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezSelfBakedUpdateNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
You sent out an update of your appearance after [TIME] seconds.
[STATUS]
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezCloudNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
Avatar '[NAME]' became cloud.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezArrivedNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
Avatar '[NAME]' appeared.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezLeftCloudNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
Avatar '[NAME]' left after [TIME] seconds as cloud.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezEnteredAppearanceNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
Avatar '[NAME]' entered appearance mode.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezLeftAppearanceNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
Avatar '[NAME]' left appearance mode.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezLeftNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
Avatar '[NAME]' left as fully loaded.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezSelfBakedTextureUploadNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
You uploaded a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] seconds.
</notification>
<notification
icon="notifytip.tga"
name="AvatarRezSelfBakedTextureUpdateNotification"
type="notifytip">
( [EXISTENCE] seconds alive )
You locally updated a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] seconds.
</notification>
<global name="UnsupportedCPU">
- Your CPU speed does not meet the minimum requirements.
</global>