merge
commit
8decd5a4e6
|
|
@ -232,27 +232,16 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& fa
|
|||
domPRef p = tri->getP();
|
||||
domListOfUInts& idx = p->getValue();
|
||||
|
||||
domListOfFloats v;
|
||||
domListOfFloats tc;
|
||||
domListOfFloats n;
|
||||
domListOfFloats dummy ;
|
||||
domListOfFloats& v = pos_source ? pos_source->getFloat_array()->getValue() : dummy ;
|
||||
domListOfFloats& tc = tc_source ? tc_source->getFloat_array()->getValue() : dummy ;
|
||||
domListOfFloats& n = norm_source ? norm_source->getFloat_array()->getValue() : dummy ;
|
||||
|
||||
if (pos_source)
|
||||
{
|
||||
v = pos_source->getFloat_array()->getValue();
|
||||
face.mExtents[0].set(v[0], v[1], v[2]);
|
||||
face.mExtents[1].set(v[0], v[1], v[2]);
|
||||
}
|
||||
|
||||
if (tc_source)
|
||||
{
|
||||
tc = tc_source->getFloat_array()->getValue();
|
||||
}
|
||||
|
||||
if (norm_source)
|
||||
{
|
||||
n = norm_source->getFloat_array()->getValue();
|
||||
}
|
||||
|
||||
|
||||
LLVolumeFace::VertexMapData::PointMap point_map;
|
||||
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@
|
|||
//static
|
||||
S32 LLFloaterModelPreview::sUploadAmount = 10;
|
||||
LLFloaterModelPreview* LLFloaterModelPreview::sInstance = NULL;
|
||||
std::list<LLModelLoader*> LLModelLoader::sActiveLoaderList;
|
||||
|
||||
const S32 PREVIEW_BORDER_WIDTH = 2;
|
||||
const S32 PREVIEW_RESIZE_HANDLE_SIZE = S32(RESIZE_HANDLE_WIDTH * OO_SQRT2) + PREVIEW_BORDER_WIDTH;
|
||||
|
|
@ -1087,6 +1088,15 @@ LLModelLoader::LLModelLoader( std::string filename, S32 lod, LLModelPreview* pre
|
|||
{
|
||||
mTrySLM = false;
|
||||
}
|
||||
|
||||
assert_main_thread();
|
||||
sActiveLoaderList.push_back(this) ;
|
||||
}
|
||||
|
||||
LLModelLoader::~LLModelLoader()
|
||||
{
|
||||
assert_main_thread();
|
||||
sActiveLoaderList.remove(this);
|
||||
}
|
||||
|
||||
void stretch_extents(LLModel* model, LLMatrix4a& mat, LLVector4a& min, LLVector4a& max, BOOL& first_transform)
|
||||
|
|
@ -1872,8 +1882,24 @@ bool LLModelLoader::loadFromSLM(const std::string& filename)
|
|||
return true;
|
||||
}
|
||||
|
||||
//static
|
||||
bool LLModelLoader::isAlive(LLModelLoader* loader)
|
||||
{
|
||||
if(!loader)
|
||||
{
|
||||
return false ;
|
||||
}
|
||||
|
||||
std::list<LLModelLoader*>::iterator iter = sActiveLoaderList.begin() ;
|
||||
for(; iter != sActiveLoaderList.end() && (*iter) != loader; ++iter) ;
|
||||
|
||||
return *iter == loader ;
|
||||
}
|
||||
|
||||
void LLModelLoader::loadModelCallback()
|
||||
{
|
||||
assert_main_thread();
|
||||
|
||||
if (mPreview)
|
||||
{
|
||||
mPreview->loadModelCallback(mLod);
|
||||
|
|
@ -1884,6 +1910,12 @@ void LLModelLoader::loadModelCallback()
|
|||
apr_sleep(100);
|
||||
}
|
||||
|
||||
//doubel check if "this" is valid before deleting it, in case it is aborted during running.
|
||||
if(!isAlive(this))
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
//cleanup model loader
|
||||
if (mPreview)
|
||||
{
|
||||
|
|
@ -2693,7 +2725,7 @@ LLModelPreview::~LLModelPreview()
|
|||
if (mModelLoader)
|
||||
{
|
||||
delete mModelLoader;
|
||||
mModelLoader->mPreview = NULL;
|
||||
mModelLoader = NULL;
|
||||
}
|
||||
//*HACK : *TODO : turn this back on when we understand why this crashes
|
||||
//glodShutdown();
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ public:
|
|||
BOOL mFirstTransform;
|
||||
LLVector3 mExtents[2];
|
||||
bool mTrySLM;
|
||||
|
||||
|
||||
std::map<daeElement*, LLPointer<LLModel> > mModel;
|
||||
|
||||
typedef std::vector<LLPointer<LLModel> > model_list;
|
||||
|
|
@ -99,6 +99,8 @@ public:
|
|||
|
||||
LLModelLoader( std::string filename, S32 lod, LLModelPreview* preview, JointTransformMap& jointMap,
|
||||
std::deque<std::string>& jointsFromNodes );
|
||||
~LLModelLoader() ;
|
||||
|
||||
virtual void run();
|
||||
bool doLoadModel();
|
||||
bool loadFromSLM(const std::string& filename);
|
||||
|
|
@ -131,6 +133,10 @@ public:
|
|||
std::map<std::string, std::string> mJointMap;
|
||||
JointTransformMap& mJointList;
|
||||
std::deque<std::string>& mJointsFromNode;
|
||||
|
||||
private:
|
||||
static std::list<LLModelLoader*> sActiveLoaderList;
|
||||
static bool isAlive(LLModelLoader* loader) ;
|
||||
};
|
||||
|
||||
class LLFloaterModelPreview : public LLFloater
|
||||
|
|
@ -331,8 +337,8 @@ public:
|
|||
|
||||
void setLoadState( U32 state ) { mLoadState = state; }
|
||||
U32 getLoadState() { return mLoadState; }
|
||||
|
||||
void setResetJointFlag( bool state ) { mResetJoints = state; }
|
||||
//setRestJointFlag: If an asset comes through that changes the joints, we want the reset to persist
|
||||
void setResetJointFlag( bool state ) { if ( !mResetJoints ) mResetJoints = state; }
|
||||
bool getResetJointFlag( void ) { return mResetJoints; }
|
||||
|
||||
LLVector3 getTranslationForJointOffset( std::string joint );
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#include "llmd5.h"
|
||||
#include "llsecondlifeurls.h"
|
||||
#include "v4color.h"
|
||||
#include "llversionviewer.h"
|
||||
|
||||
#include "llappviewer.h"
|
||||
#include "llbutton.h"
|
||||
|
|
@ -861,12 +862,20 @@ void LLPanelLogin::loadLoginPage()
|
|||
LLVersionInfo::getShortVersion().c_str(),
|
||||
LLVersionInfo::getBuild());
|
||||
|
||||
char* curl_channel = curl_escape(LLVersionInfo::getChannel().c_str(), 0);
|
||||
char* curl_channel ;
|
||||
char* curl_version = curl_escape(version.c_str(), 0);
|
||||
|
||||
if(strcmp(LLVersionInfo::getChannel().c_str(), LL_CHANNEL))
|
||||
{
|
||||
curl_channel = curl_escape(LLVersionInfo::getChannel().c_str(), 0);
|
||||
}
|
||||
else //if LL_CHANNEL, direct it to "Second Life Beta Viewer".
|
||||
{
|
||||
curl_channel = curl_escape("Second Life Beta Viewer", 0);
|
||||
}
|
||||
oStr << "&channel=" << curl_channel;
|
||||
oStr << "&version=" << curl_version;
|
||||
|
||||
|
||||
curl_free(curl_channel);
|
||||
curl_free(curl_version);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue