Alchemerge
Applies the following alchemy patches: 28fe46209ea5: Don't spam setPaused in fmod studio audio stream code eb12ff41434a: Fix single click to walk triggering on huds 31955a7826b9: Fix double click to walk being triggered by huds and touchable objects Fix double click to walk triggering while sitting and flying Fix double click to walk behavior being inconsistent with single click to walk Fix double click teleport being affected by transparent objects Properly fixes MAINT-957 Compile stuff updates: Adds VCRedist to package, should fix failure to launch reported by Nomade Zhao. Updates package_description to better suit Singularity Turns secondlife-bin in places to singularity-bin Updates the following libraries: Curl (7.47.0), gperftools (0.0.2), openssl (1.0.2f), SLVoice on Linux64,
This commit is contained in:
114
autobuild.xml
114
autobuild.xml
@@ -438,11 +438,11 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6e443a01d85367e1f058fbfb378cf80e</string>
|
||||
<string>edeb99f22363e6c7dde1ade2d2810246</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows/lib-vc14/curl-7.46.0-windows-201601151153.tar.bz2</string>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows/lib-vc14/curl-7.47.0-windows-201601291530.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
@@ -452,18 +452,18 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>9aca8339f269df5f42484f4bfafbf430</string>
|
||||
<string>c822bf688eaaa9524d821c8a9d72e1d7</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows64/lib-vc14/curl-7.46.0-windows64-201512122022.tar.bz2</string>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows64/lib-vc14/curl-7.47.0-windows64-201601291527.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>7.46.0</string>
|
||||
<string>7.47.0</string>
|
||||
</map>
|
||||
<key>dbus-glib</key>
|
||||
<map>
|
||||
@@ -1137,18 +1137,6 @@
|
||||
<string>gperftools</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>0137e450bf24cff7e78634bb9a1c85e4</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-perftools_3p-update-google-perftools/rev/297263/arch/Darwin/installer/gperftools-2.0.297263-darwin-297263.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
@@ -1166,9 +1154,21 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>2946f9bbf227dee8881af43856ebb3a1</string>
|
||||
<string>e81d9e4526ceac49f1532d6518085985</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-perftools_3p-update-google-perftools/rev/297263/arch/CYGWIN/installer/gperftools-2.0.297263-windows-297263.tar.bz2</string>
|
||||
<string>https://bitbucket.org/alchemyviewer/publiclibs/downloads/gperftools-2.1-windows-20140120.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
<key>windows64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>da6ec7472ed69fe3231eb95432a789d9</string>
|
||||
<key>url</key>
|
||||
<string>https://bitbucket.org/alchemyviewer/publiclibs/downloads/gperftools-2.2-windows64-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
@@ -1249,7 +1249,7 @@
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>0.0</string>
|
||||
<string>0.0.2</string>
|
||||
</map>
|
||||
<key>jpeglib</key>
|
||||
<map>
|
||||
@@ -2232,11 +2232,11 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>213e62795373d12621282636fc760f20</string>
|
||||
<string>835a1e2a994acd82a51d99e382de1549</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows/lib-vc14/openssl-1.0.2e-windows-201601151130.tar.bz2</string>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows/lib-vc14/openssl-1.0.2f-windows-201601291508.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
@@ -2246,18 +2246,18 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>44f5553704a5fc74f23342ac1216175b</string>
|
||||
<string>5aae87070da31ed959585ca641ba3ad9</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows64/lib-vc14/openssl-1.0.2e-windows64-201512121953.tar.bz2</string>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows64/lib-vc14/openssl-1.0.2f-windows64-201601291450.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>1.0.2e</string>
|
||||
<string>1.0.2f</string>
|
||||
</map>
|
||||
<key>quicktime</key>
|
||||
<map>
|
||||
@@ -2324,9 +2324,9 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>48ed7ddcf93fa3c751d677f5eb5f9367</string>
|
||||
<string>9f60e56aba35ec90b3045e9d049ac284</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/slvoice_3p-update-slvoice/rev/298329/arch/Linux/installer/slvoice-3.2.0002.10426.298329-linux-298329.tar.bz2</string>
|
||||
<string>http://depot.alchemyviewer.org/pub/linux/lib/slvoice-4.5.0009.17865-linux-20141214.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
@@ -2493,6 +2493,52 @@
|
||||
<key>version</key>
|
||||
<string>0.8.4</string>
|
||||
</map>
|
||||
<key>vcredist</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) Microsoft Corporation. All rights reserved.</string>
|
||||
<key>description</key>
|
||||
<string>The Visual Studio C and C++ runtime redistributable</string>
|
||||
<key>license</key>
|
||||
<string>Proprietary</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/vcredist.txt</string>
|
||||
<key>name</key>
|
||||
<string>vcredist</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>960953da9ab7c335a0f4f97e9bf8341c</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows/lib-vc14/vcredist-14.0.23506.0-windows-201601191536.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
<key>windows64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>918588215463f36836eeefd9d3891868</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://depot.alchemyviewer.org/pub/windows64/lib-vc14/vcredist-14.0.23506.0-windows64-201601191536.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>14.0.23506.0</string>
|
||||
</map>
|
||||
<key>xmlrpc-epi</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
@@ -2667,15 +2713,15 @@
|
||||
<key>package_description</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2014, Linden Research, Inc.</string>
|
||||
<string>Copyright (c) 2010-2016, Singularity Viewer Team</string>
|
||||
<key>description</key>
|
||||
<string>Second Life Viewer</string>
|
||||
<string>Singularity Viewer</string>
|
||||
<key>license</key>
|
||||
<string>LGPL</string>
|
||||
<key>license_file</key>
|
||||
<string>docs/LICENSE-source.txt</string>
|
||||
<key>name</key>
|
||||
<string>Second Life Viewer</string>
|
||||
<string>Singularity Viewer</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>common</key>
|
||||
@@ -2940,7 +2986,7 @@
|
||||
<string>--config</string>
|
||||
<string>RelWithDebInfo</string>
|
||||
<string>--startup</string>
|
||||
<string>secondlife-bin</string>
|
||||
<string>singularity-bin</string>
|
||||
</array>
|
||||
<key>options</key>
|
||||
<array>
|
||||
@@ -2987,7 +3033,7 @@
|
||||
<string>--config</string>
|
||||
<string>Release</string>
|
||||
<string>--startup</string>
|
||||
<string>secondlife-bin</string>
|
||||
<string>singularity-bin</string>
|
||||
</array>
|
||||
<key>options</key>
|
||||
<array>
|
||||
@@ -3042,7 +3088,7 @@
|
||||
<string>--config</string>
|
||||
<string>RelWithDebInfo</string>
|
||||
<string>--startup</string>
|
||||
<string>secondlife-bin</string>
|
||||
<string>singularity-bin</string>
|
||||
</array>
|
||||
<key>options</key>
|
||||
<array>
|
||||
@@ -3090,7 +3136,7 @@
|
||||
<string>--config</string>
|
||||
<string>Release</string>
|
||||
<string>--startup</string>
|
||||
<string>secondlife-bin</string>
|
||||
<string>singularity-bin</string>
|
||||
</array>
|
||||
<key>options</key>
|
||||
<array>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
#include "llstreamingaudio_fmodstudio.h"
|
||||
|
||||
#include "llmath.h"
|
||||
#include "llthread.h"
|
||||
@@ -38,8 +39,6 @@
|
||||
#include "fmod.hpp"
|
||||
#include "fmod_errors.h"
|
||||
|
||||
#include "llstreamingaudio_fmodstudio.h"
|
||||
|
||||
inline bool Check_FMOD_Error(FMOD_RESULT result, const char *string)
|
||||
{
|
||||
if (result == FMOD_OK)
|
||||
@@ -61,9 +60,9 @@ public:
|
||||
FMOD_RESULT getOpenState(FMOD_OPENSTATE& openstate, unsigned int* percentbuffered = NULL, bool* starving = NULL, bool* diskbusy = NULL);
|
||||
protected:
|
||||
FMOD::System* mSystem;
|
||||
FMOD::ChannelGroup* mChannelGroup;
|
||||
FMOD::Channel* mStreamChannel;
|
||||
FMOD::Sound* mInternetStream;
|
||||
FMOD::ChannelGroup* mChannelGroup;
|
||||
bool mReady;
|
||||
|
||||
std::string mInternetStreamURL;
|
||||
@@ -119,11 +118,11 @@ FMOD_RESULT F_CALLBACK waveDataCallback(FMOD_DSP_STATE *dsp_state, float *inbuff
|
||||
LLStreamingAudio_FMODSTUDIO::LLStreamingAudio_FMODSTUDIO(FMOD::System *system) :
|
||||
mSystem(system),
|
||||
mCurrentInternetStreamp(NULL),
|
||||
mStreamDSP(NULL),
|
||||
mStreamGroup(NULL),
|
||||
mFMODInternetStreamChannelp(NULL),
|
||||
mGain(1.0f),
|
||||
mMetaData(NULL),
|
||||
mStreamGroup(NULL),
|
||||
mStreamDSP(NULL)
|
||||
mMetaData(NULL)
|
||||
{
|
||||
FMOD_RESULT result;
|
||||
|
||||
@@ -142,10 +141,9 @@ LLStreamingAudio_FMODSTUDIO::LLStreamingAudio_FMODSTUDIO(FMOD::System *system) :
|
||||
// Leave the net buffer properties at the default.
|
||||
//FSOUND_Stream_Net_SetBufferProperties(20000, 40, 80);
|
||||
|
||||
Check_FMOD_Error(mSystem->createChannelGroup("stream", &mStreamGroup), "FMOD::System::createChannelGroup");
|
||||
Check_FMOD_Error(system->createChannelGroup("stream", &mStreamGroup), "FMOD::System::createChannelGroup");
|
||||
|
||||
FMOD_DSP_DESCRIPTION dspdesc;
|
||||
memset(&dspdesc, 0, sizeof(FMOD_DSP_DESCRIPTION)); //Zero out everything
|
||||
FMOD_DSP_DESCRIPTION dspdesc = {0};
|
||||
dspdesc.pluginsdkversion = FMOD_PLUGIN_SDK_VERSION;
|
||||
strncpy(dspdesc.name, "Waveform", sizeof(dspdesc.name));
|
||||
dspdesc.numoutputbuffers = 1;
|
||||
@@ -154,7 +152,6 @@ LLStreamingAudio_FMODSTUDIO::LLStreamingAudio_FMODSTUDIO(FMOD::System *system) :
|
||||
Check_FMOD_Error(system->createDSP(&dspdesc, &mStreamDSP), "FMOD::System::createDSP");
|
||||
}
|
||||
|
||||
|
||||
LLStreamingAudio_FMODSTUDIO::~LLStreamingAudio_FMODSTUDIO()
|
||||
{
|
||||
stop();
|
||||
@@ -168,7 +165,6 @@ LLStreamingAudio_FMODSTUDIO::~LLStreamingAudio_FMODSTUDIO()
|
||||
cleanupWaveData();
|
||||
}
|
||||
|
||||
|
||||
void LLStreamingAudio_FMODSTUDIO::start(const std::string& url)
|
||||
{
|
||||
//if (!mInited)
|
||||
@@ -209,7 +205,7 @@ enum utf_endian_type_t
|
||||
UTF16
|
||||
};
|
||||
|
||||
std::string utf16input_to_utf8(char* input, U32 len, utf_endian_type_t type)
|
||||
std::string utf16input_to_utf8(unsigned char* input, U32 len, utf_endian_type_t type)
|
||||
{
|
||||
if (type == UTF16)
|
||||
{
|
||||
@@ -226,7 +222,7 @@ std::string utf16input_to_utf8(char* input, U32 len, utf_endian_type_t type)
|
||||
}
|
||||
}
|
||||
}
|
||||
llutf16string out_16((utf16strtype*)input, len / 2);
|
||||
llutf16string out_16((llutf16string::value_type*)input, len / 2);
|
||||
if (len % 2)
|
||||
{
|
||||
out_16.push_back((input)[len - 1] << 8);
|
||||
@@ -254,7 +250,7 @@ void LLStreamingAudio_FMODSTUDIO::update()
|
||||
{
|
||||
llassert_always(mCurrentInternetStreamp == NULL);
|
||||
LL_INFOS() << "Starting internet stream: " << mPendingURL << LL_ENDL;
|
||||
mCurrentInternetStreamp = new LLAudioStreamManagerFMODSTUDIO(mSystem,mStreamGroup, mPendingURL);
|
||||
mCurrentInternetStreamp = new LLAudioStreamManagerFMODSTUDIO(mSystem, mStreamGroup, mPendingURL);
|
||||
mURL = mPendingURL;
|
||||
mMetaData = new LLSD;
|
||||
mPendingURL.clear();
|
||||
@@ -315,6 +311,7 @@ void LLStreamingAudio_FMODSTUDIO::update()
|
||||
{
|
||||
if(sound->getTag(NULL, i, &tag)!=FMOD_OK)
|
||||
continue;
|
||||
|
||||
std::string name = tag.name;
|
||||
switch(tag.type) //Crappy tag translate table.
|
||||
{
|
||||
@@ -373,7 +370,7 @@ void LLStreamingAudio_FMODSTUDIO::update()
|
||||
break;
|
||||
case(FMOD_TAGDATATYPE_STRING_UTF16):
|
||||
{
|
||||
std::string out = utf16input_to_utf8((char*)tag.data, tag.datalen, UTF16);
|
||||
std::string out = utf16input_to_utf8((unsigned char*)tag.data, tag.datalen, UTF16);
|
||||
if (out.length() && out[out.size() - 1] == 0)
|
||||
out.erase(out.size() - 1);
|
||||
(*mMetaData)[name] = out;
|
||||
@@ -382,7 +379,7 @@ void LLStreamingAudio_FMODSTUDIO::update()
|
||||
break;
|
||||
case(FMOD_TAGDATATYPE_STRING_UTF16BE):
|
||||
{
|
||||
std::string out = utf16input_to_utf8((char*)tag.data, tag.datalen, UTF16BE);
|
||||
std::string out = utf16input_to_utf8((unsigned char*)tag.data, tag.datalen, UTF16BE);
|
||||
if (out.length() && out[out.size() - 1] == 0)
|
||||
out.erase(out.size() - 1);
|
||||
(*mMetaData)[name] = out;
|
||||
@@ -393,6 +390,7 @@ void LLStreamingAudio_FMODSTUDIO::update()
|
||||
}
|
||||
}
|
||||
}
|
||||
static bool was_starved = false;
|
||||
if(starving)
|
||||
{
|
||||
bool paused = false;
|
||||
@@ -403,9 +401,11 @@ void LLStreamingAudio_FMODSTUDIO::update()
|
||||
LL_INFOS() << " (progress="<<progress<<")" << LL_ENDL;
|
||||
Check_FMOD_Error(mFMODInternetStreamChannelp->setPaused(true), "FMOD::Channel::setPaused");
|
||||
}
|
||||
was_starved = true;
|
||||
}
|
||||
else if(progress > 80)
|
||||
else if(progress > 80 && was_starved)
|
||||
{
|
||||
was_starved = false;
|
||||
Check_FMOD_Error(mFMODInternetStreamChannelp->setPaused(false), "FMOD::Channel::setPaused");
|
||||
}
|
||||
}
|
||||
@@ -446,7 +446,6 @@ void LLStreamingAudio_FMODSTUDIO::stop()
|
||||
mDeadStreams.push_back(mCurrentInternetStreamp);
|
||||
}
|
||||
mCurrentInternetStreamp = NULL;
|
||||
//mURL.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -514,7 +513,8 @@ void LLStreamingAudio_FMODSTUDIO::setGain(F32 vol)
|
||||
}
|
||||
}
|
||||
|
||||
/*virtual*/ bool LLStreamingAudio_FMODSTUDIO::getWaveData(float* arr, S32 count, S32 stride/*=1*/)
|
||||
/* virtual */
|
||||
bool LLStreamingAudio_FMODSTUDIO::getWaveData(float* arr, S32 count, S32 stride/*=1*/)
|
||||
{
|
||||
if (count > (WAVE_BUFFER_SIZE / 2))
|
||||
LL_ERRS("AudioImpl") << "Count=" << count << " exceeds WAVE_BUFFER_SIZE/2=" << WAVE_BUFFER_SIZE << LL_ENDL;
|
||||
@@ -547,9 +547,9 @@ void LLStreamingAudio_FMODSTUDIO::setGain(F32 vol)
|
||||
|
||||
LLAudioStreamManagerFMODSTUDIO::LLAudioStreamManagerFMODSTUDIO(FMOD::System *system, FMOD::ChannelGroup *group, const std::string& url) :
|
||||
mSystem(system),
|
||||
mChannelGroup(group),
|
||||
mStreamChannel(NULL),
|
||||
mInternetStream(NULL),
|
||||
mChannelGroup(group),
|
||||
mReady(false)
|
||||
{
|
||||
mInternetStreamURL = url;
|
||||
@@ -632,8 +632,7 @@ FMOD_RESULT LLAudioStreamManagerFMODSTUDIO::getOpenState(FMOD_OPENSTATE& state,
|
||||
void LLStreamingAudio_FMODSTUDIO::setBufferSizes(U32 streambuffertime, U32 decodebuffertime)
|
||||
{
|
||||
Check_FMOD_Error(mSystem->setStreamBufferSize(streambuffertime / 1000 * 128 * 128, FMOD_TIMEUNIT_RAWBYTES), "FMOD::System::setStreamBufferSize");
|
||||
FMOD_ADVANCEDSETTINGS settings;
|
||||
memset(&settings,0,sizeof(settings));
|
||||
FMOD_ADVANCEDSETTINGS settings = {0};
|
||||
settings.cbSize=sizeof(settings);
|
||||
settings.defaultDecodeBufferSize = decodebuffertime;//ms
|
||||
Check_FMOD_Error(mSystem->setAdvancedSettings(&settings), "FMOD::System::setAdvancedSettings");
|
||||
@@ -672,4 +671,4 @@ void LLStreamingAudio_FMODSTUDIO::cleanupWaveData()
|
||||
if(mStreamDSP)
|
||||
Check_FMOD_Error(mStreamDSP->release(), "FMOD::DSP::release");
|
||||
mStreamDSP = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,11 +183,11 @@ HRESULT GetVideoMemoryViaWMI( WCHAR* strInputDeviceID, DWORD* pdwAdapterRam )
|
||||
SAFE_RELEASE( pVideoControllers[iController] );
|
||||
}
|
||||
}
|
||||
SAFE_RELEASE(pEnumVideoControllers);
|
||||
}
|
||||
|
||||
if( pClassName )
|
||||
SysFreeString( pClassName );
|
||||
SAFE_RELEASE( pEnumVideoControllers );
|
||||
}
|
||||
|
||||
if( pNamespace )
|
||||
@@ -206,7 +206,7 @@ HRESULT GetVideoMemoryViaWMI( WCHAR* strInputDeviceID, DWORD* pdwAdapterRam )
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
void get_wstring(IDxDiagContainer* containerp, WCHAR* wszPropName, WCHAR* wszPropValue, int outputSize)
|
||||
void get_wstring(IDxDiagContainer* containerp, const WCHAR* wszPropName, WCHAR* wszPropValue, int outputSize)
|
||||
{
|
||||
HRESULT hr;
|
||||
VARIANT var;
|
||||
@@ -219,10 +219,10 @@ void get_wstring(IDxDiagContainer* containerp, WCHAR* wszPropName, WCHAR* wszPro
|
||||
switch( var.vt )
|
||||
{
|
||||
case VT_UI4:
|
||||
swprintf( wszPropValue, L"%d", var.ulVal ); /* Flawfinder: ignore */
|
||||
swprintf(wszPropValue, outputSize, L"%d", var.ulVal); /* Flawfinder: ignore */
|
||||
break;
|
||||
case VT_I4:
|
||||
swprintf( wszPropValue, L"%d", var.lVal ); /* Flawfinder: ignore */
|
||||
swprintf(wszPropValue, outputSize, L"%d", var.lVal); /* Flawfinder: ignore */
|
||||
break;
|
||||
case VT_BOOL:
|
||||
wcscpy( wszPropValue, (var.boolVal) ? L"true" : L"false" ); /* Flawfinder: ignore */
|
||||
@@ -237,7 +237,7 @@ void get_wstring(IDxDiagContainer* containerp, WCHAR* wszPropName, WCHAR* wszPro
|
||||
VariantClear( &var );
|
||||
}
|
||||
|
||||
std::string get_string(IDxDiagContainer *containerp, WCHAR *wszPropName)
|
||||
std::string get_string(IDxDiagContainer *containerp, const WCHAR *wszPropName)
|
||||
{
|
||||
WCHAR wszPropValue[256];
|
||||
get_wstring(containerp, wszPropName, wszPropValue, 256);
|
||||
@@ -452,9 +452,9 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
|
||||
hr = CoInitialize(NULL);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
LL_WARNS("AppInit") << "COM library initialization failed!" << LL_ENDL;
|
||||
gWriteDebug("COM library initialization failed!\n");
|
||||
return FALSE;
|
||||
LL_WARNS() << "COM initialization failure!" << LL_ENDL;
|
||||
gWriteDebug("COM initialization failure!\n");
|
||||
return ok;
|
||||
}
|
||||
|
||||
IDxDiagProvider *dx_diag_providerp = NULL;
|
||||
@@ -507,8 +507,6 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
|
||||
goto LCleanup;
|
||||
}
|
||||
|
||||
HRESULT hr;
|
||||
|
||||
// Get display driver information
|
||||
LL_DEBUGS("AppInit") << "dx_diag_rootp->GetChildContainer" << LL_ENDL;
|
||||
hr = dx_diag_rootp->GetChildContainer(L"DxDiag_DisplayDevices", &devices_containerp);
|
||||
@@ -718,8 +716,8 @@ LLSD LLDXHardware::getDisplayInfo()
|
||||
hr = CoInitialize(NULL);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
LL_WARNS("AppInit") << "COM library initialization failed!" << LL_ENDL;
|
||||
gWriteDebug("COM library initialization failed!\n");
|
||||
LL_WARNS() << "COM initialization failure!" << LL_ENDL;
|
||||
gWriteDebug("COM initialization failure!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -772,8 +770,6 @@ LLSD LLDXHardware::getDisplayInfo()
|
||||
goto LCleanup;
|
||||
}
|
||||
|
||||
HRESULT hr;
|
||||
|
||||
// Get display driver information
|
||||
LL_INFOS() << "dx_diag_rootp->GetChildContainer" << LL_ENDL;
|
||||
hr = dx_diag_rootp->GetChildContainer(L"DxDiag_DisplayDevices", &devices_containerp);
|
||||
|
||||
@@ -42,6 +42,10 @@ include(ViewerMiscLibs)
|
||||
include(WinManifest)
|
||||
include(ZLIB)
|
||||
|
||||
if (MSVC)
|
||||
use_prebuilt_binary(vcredist)
|
||||
endif (MSVC)
|
||||
|
||||
include_directories(
|
||||
${STATEMACHINE_INCLUDE_DIRS}
|
||||
${DBUSGLIB_INCLUDE_DIRS}
|
||||
@@ -64,7 +68,6 @@ include_directories(
|
||||
${LLWINDOW_INCLUDE_DIRS}
|
||||
${LLXML_INCLUDE_DIRS}
|
||||
${HUNSPELL_INCLUDE_DIR}
|
||||
|
||||
${LLAPPEARANCE_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
@@ -593,8 +596,7 @@ set(viewer_SOURCE_FILES
|
||||
wlfPanel_AdvSettings.cpp
|
||||
)
|
||||
|
||||
# This gets renamed in the packaging step
|
||||
set(VIEWER_BINARY_NAME "secondlife-bin" CACHE STRING
|
||||
set(VIEWER_BINARY_NAME "singularity-bin" CACHE STRING
|
||||
"The name of the viewer executable to create.")
|
||||
|
||||
set(viewer_HEADER_FILES
|
||||
@@ -1628,7 +1630,6 @@ target_link_libraries(${VIEWER_BINARY_NAME}
|
||||
${LLVFS_LIBRARIES}
|
||||
${LLWINDOW_LIBRARIES}
|
||||
${LLXML_LIBRARIES}
|
||||
# ${LSCRIPT_LIBRARIES}
|
||||
${LLMATH_LIBRARIES}
|
||||
${LLCOMMON_LIBRARIES}
|
||||
${NDOF_LIBRARY}
|
||||
@@ -1671,7 +1672,7 @@ if (LINUX)
|
||||
add_dependencies(${VIEWER_BINARY_NAME} generate_viewer_version)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${product}.tar.bz2
|
||||
OUTPUT ${product}.tar.xz
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
ARGS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
|
||||
@@ -1733,7 +1734,7 @@ if (DARWIN)
|
||||
set(MACOSX_BUNDLE_BUNDLE_NAME "${VIEWER_BRANDING_NAME}")
|
||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VIEWER_SHORT_VERSION}")
|
||||
set(MACOSX_BUNDLE_BUNDLE_VERSION "${${ROOT_PROJECT_NAME}_VERSION}")
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2013 Siana Gearz")
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2010-2016 Siana Gearz")
|
||||
|
||||
set_target_properties(
|
||||
${VIEWER_BINARY_NAME}
|
||||
@@ -1804,7 +1805,6 @@ if (INSTALL)
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/ViewerInstall.cmake)
|
||||
endif (INSTALL)
|
||||
|
||||
|
||||
if (PACKAGE)
|
||||
set(SYMBOL_NAME ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${VIEWER_BRANDING_NAME_CAMELCASE}-${${ROOT_PROJECT_NAME}_VERSION}-symbols)
|
||||
set(SYMBOL_SEARCH_DIRS "")
|
||||
|
||||
@@ -423,11 +423,11 @@ Section "Viewer"
|
||||
;This placeholder is replaced by the complete list of all the files in the installer, by viewer_manifest.py
|
||||
%%INSTALL_FILES%%
|
||||
|
||||
;!ifdef WIN64_BIN_BUILD
|
||||
; ExecWait '"$INSTDIR\redist\vc_redist.x64.exe" /passive'
|
||||
;!else
|
||||
; ExecWait '"$INSTDIR\redist\vc_redist.x86.exe" /passive'
|
||||
;!endif
|
||||
!ifdef WIN64_BIN_BUILD
|
||||
ExecWait '"$INSTDIR\redist\vc_redist.x64.exe" /passive /norestart'
|
||||
!else
|
||||
ExecWait '"$INSTDIR\redist\vc_redist.x86.exe" /passive /norestart'
|
||||
!endif
|
||||
|
||||
;Pass the installer's language to the client to use as a default
|
||||
StrCpy $SHORTCUT_LANG_PARAM "--set InstallLanguage $(LanguageCode)"
|
||||
@@ -482,7 +482,7 @@ Section "Viewer"
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "NoRepair" 1
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "Publisher" "${VENDORSTR}"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "URLInfoAbout" "http://www.singularityviewer.org"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "URLUpdateInfo" "http://www.singularityviewer.org"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "URLUpdateInfo" "http://www.singularityviewer.org/downloads"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "UninstallString" "$\"$INSTDIR\uninst.exe$\""
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "QuietUninstallString" "$\"$INSTDIR\uninst.exe$\" /S"
|
||||
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
||||
|
||||
@@ -108,7 +108,7 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
mMouseDownX = x;
|
||||
mMouseDownY = y;
|
||||
|
||||
//left mouse down always picks transparent
|
||||
//left mouse down always picks transparent (but see handleMouseUp)
|
||||
mPick = gViewerWindow->pickImmediate(x, y, TRUE);
|
||||
mPick.mKeyMask = mask;
|
||||
|
||||
@@ -605,6 +605,7 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
|
||||
if (handleMediaHover(mHoverPick))
|
||||
{
|
||||
// cursor set by media object
|
||||
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
|
||||
}
|
||||
else if (!mMouseOutsideSlop
|
||||
&& mMouseButtonDown
|
||||
@@ -640,6 +641,7 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
ECursorType cursor = cursorFromObject(click_action_object);
|
||||
gViewerWindow->setCursor(cursor);
|
||||
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
|
||||
}
|
||||
// [RLVa:KB] - Checked: 2010-03-11 (RLVa-1.2.0e) | Added: RLVa-1.1.0l
|
||||
else if ( (object) && (rlv_handler_t::isEnabled()) && (!gRlvHandler.canTouch(object)) )
|
||||
@@ -652,22 +654,23 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
|
||||
|| (parent && !parent->isAvatar() && parent->flagUsePhysics()))
|
||||
{
|
||||
gViewerWindow->setCursor(UI_CURSOR_TOOLGRAB);
|
||||
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
|
||||
}
|
||||
else if ( (object && object->flagHandleTouch())
|
||||
|| (parent && parent->flagHandleTouch()))
|
||||
{
|
||||
gViewerWindow->setCursor(UI_CURSOR_HAND);
|
||||
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
gViewerWindow->setCursor(UI_CURSOR_ARROW);
|
||||
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
if(!object)
|
||||
{
|
||||
//gViewerWindow->setCursor(UI_CURSOR_ARROW);
|
||||
// We need to clear media hover flag
|
||||
LLViewerMediaFocus::getInstance()->clearHover();
|
||||
}
|
||||
|
||||
@@ -693,29 +696,51 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
|
||||
&& gAgentAvatarp
|
||||
&& !gAgentAvatarp->isSitting()
|
||||
&& !mBlockClickToWalk // another behavior hasn't cancelled click to walk
|
||||
&& !mPick.mPosGlobal.isExactlyZero() // valid coordinates for pick
|
||||
&& (mPick.mPickType == LLPickInfo::PICK_LAND // we clicked on land
|
||||
|| mPick.mObjectID.notNull())) // or on an object
|
||||
)
|
||||
{
|
||||
// handle special cases of steering picks
|
||||
LLViewerObject* avatar_object = mPick.getObject();
|
||||
// We may be doing click to walk, but we don't want to use a target on
|
||||
// a transparent object because the user thought they were clicking on
|
||||
// whatever they were seeing through it, so recompute what was clicked on
|
||||
// ignoring transparent objects
|
||||
LLPickInfo savedPick = mPick;
|
||||
mPick = gViewerWindow->pickImmediate(savedPick.mMousePt.mX, savedPick.mMousePt.mY,
|
||||
FALSE /* ignore transparent *//*,
|
||||
FALSE*/ /* ignore particles */); // Singu TODO: Particle picking
|
||||
|
||||
// get pointer to avatar
|
||||
while (avatar_object && !avatar_object->isAvatar())
|
||||
{
|
||||
avatar_object = (LLViewerObject*)avatar_object->getParent();
|
||||
LLViewerObject* objp = mPick.getObject();
|
||||
bool is_in_world = mPick.mObjectID.notNull() && objp && !objp->isHUDAttachment(); // We clicked on a non-hud object
|
||||
bool is_land = mPick.mPickType == LLPickInfo::PICK_LAND; // or on land
|
||||
bool pos_non_zero = !mPick.mPosGlobal.isExactlyZero(); // valid coordinates for pick
|
||||
if (pos_non_zero && (is_land || is_in_world))
|
||||
{
|
||||
// get pointer to avatar
|
||||
while (objp && !objp->isAvatar())
|
||||
{
|
||||
objp = (LLViewerObject*) objp->getParent();
|
||||
}
|
||||
|
||||
if (objp && ((LLVOAvatar*) objp)->isSelf())
|
||||
{
|
||||
const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
|
||||
// pretend we picked some point a bit in front of avatar
|
||||
mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
|
||||
}
|
||||
gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
|
||||
walkToClickedLocation();
|
||||
//LLFirstUse::notMoving(false);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf())
|
||||
{
|
||||
const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
|
||||
// pretend we picked some point a bit in front of avatar
|
||||
mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
|
||||
}
|
||||
gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
|
||||
walkToClickedLocation();
|
||||
|
||||
return TRUE;
|
||||
else
|
||||
{
|
||||
LL_DEBUGS("maint5901") << "walk target was "
|
||||
<< (mPick.mPosGlobal.isExactlyZero() ? "zero" : "not zero")
|
||||
<< ", pick type was " << (mPick.mPickType == LLPickInfo::PICK_LAND ? "land" : "not land")
|
||||
<< ", pick object was " << mPick.mObjectID
|
||||
<< LL_ENDL;
|
||||
// we didn't click to walk, so restore the original target
|
||||
mPick = savedPick;
|
||||
}
|
||||
}
|
||||
gViewerWindow->setCursor(UI_CURSOR_ARROW);
|
||||
if (hasMouseCapture())
|
||||
@@ -754,17 +779,22 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
|
||||
{
|
||||
if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
|
||||
(mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero()))
|
||||
{
|
||||
walkToClickedLocation();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (gSavedSettings.getBOOL("DoubleClickTeleport"))
|
||||
bool dbl_click_autoplt = gSavedSettings.getBOOL("DoubleClickAutoPilot");
|
||||
bool dbl_click_teleport = gSavedSettings.getBOOL("DoubleClickTeleport");
|
||||
|
||||
if (dbl_click_autoplt || dbl_click_teleport)
|
||||
{
|
||||
// Save the original pick
|
||||
LLPickInfo savedPick = mPick;
|
||||
|
||||
// We may be doing double click to walk or a double click teleport, but
|
||||
// we don't want to use a target on a transparent object because the user
|
||||
// thought they were clicking on whatever they were seeing through it, so
|
||||
// recompute what was clicked on ignoring transparent objects
|
||||
mPick = gViewerWindow->pickImmediate(savedPick.mMousePt.mX, savedPick.mMousePt.mY,
|
||||
FALSE /* ignore transparent *//*,
|
||||
FALSE*/ /* ignore particles */); // Singu TODO: Particle picking
|
||||
|
||||
LLViewerObject* objp = mPick.getObject();
|
||||
LLViewerObject* parentp = objp ? objp->getRootEdit() : NULL;
|
||||
|
||||
@@ -772,15 +802,43 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
bool is_land = mPick.mPickType == LLPickInfo::PICK_LAND;
|
||||
bool pos_non_zero = !mPick.mPosGlobal.isExactlyZero();
|
||||
bool has_touch_handler = (objp && objp->flagHandleTouch()) || (parentp && parentp->flagHandleTouch());
|
||||
bool has_click_action = final_click_action(objp);
|
||||
|
||||
if (pos_non_zero && (is_land || (is_in_world && !has_touch_handler && !has_click_action)))
|
||||
bool no_click_action = final_click_action(objp) == CLICK_ACTION_NONE;
|
||||
if (pos_non_zero && (is_land || (is_in_world && !has_touch_handler && no_click_action)))
|
||||
{
|
||||
LLVector3d pos = mPick.mPosGlobal;
|
||||
pos.mdV[VZ] += gAgentAvatarp->getPelvisToFoot();
|
||||
gAgent.teleportViaLocationLookAt(pos);
|
||||
return TRUE;
|
||||
if (dbl_click_autoplt
|
||||
&& !gAgent.getFlying() // don't auto-navigate while flying until that works
|
||||
&& isAgentAvatarValid()
|
||||
&& !gAgentAvatarp->isSitting()
|
||||
)
|
||||
{
|
||||
// get pointer to avatar
|
||||
while (objp && !objp->isAvatar())
|
||||
{
|
||||
objp = (LLViewerObject*) objp->getParent();
|
||||
}
|
||||
|
||||
if (objp && ((LLVOAvatar*) objp)->isSelf())
|
||||
{
|
||||
const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
|
||||
// pretend we picked some point a bit in front of avatar
|
||||
mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
|
||||
}
|
||||
gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
|
||||
walkToClickedLocation();
|
||||
//LLFirstUse::notMoving(false);
|
||||
return TRUE;
|
||||
}
|
||||
else if (dbl_click_teleport)
|
||||
{
|
||||
LLVector3d pos = mPick.mPosGlobal;
|
||||
pos.mdV[VZ] += gAgentAvatarp->getPelvisToFoot();
|
||||
gAgent.teleportViaLocationLookAt(pos);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// restore the original pick for any other purpose
|
||||
mPick = savedPick;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@@ -1271,12 +1329,10 @@ BOOL LLToolPie::handleRightClickPick()
|
||||
|
||||
void LLToolPie::showVisualContextMenuEffect()
|
||||
{
|
||||
// <edit>
|
||||
if (gSavedSettings.getBOOL("DisablePointAtAndBeam"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// </edit>
|
||||
|
||||
// VEFFECT: ShowPie
|
||||
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_SPHERE, TRUE);
|
||||
@@ -1322,6 +1378,7 @@ bool intersect_ray_with_sphere( const LLVector3& ray_pt, const LLVector3& ray_di
|
||||
|
||||
void LLToolPie::startCameraSteering()
|
||||
{
|
||||
//LLFirstUse::notMoving(false);
|
||||
mMouseOutsideSlop = true;
|
||||
mBlockClickToWalk = true;
|
||||
|
||||
@@ -1429,7 +1486,7 @@ void LLToolPie::steerCameraWithMouse(S32 x, S32 y)
|
||||
{
|
||||
old_yaw_angle = F_PI_BY_TWO + asinf(pick_distance_from_rotation_center / camera_distance_from_rotation_center);
|
||||
|
||||
if (mouse_ray * rotation_frame.getLeftAxis() < 0.f)
|
||||
if (old_mouse_ray * rotation_frame.getLeftAxis() < 0.f)
|
||||
{
|
||||
old_yaw_angle *= -1.f;
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ class ViewerManifest(LLManifest):
|
||||
# ... and the entire windlight directory
|
||||
self.path("windlight")
|
||||
|
||||
# ... and the hunspell dictionaries
|
||||
# ... and the included spell checking dictionaries
|
||||
self.path("dictionaries")
|
||||
|
||||
# include the extracted packages information (see BuildPackagesInfo.cmake)
|
||||
@@ -243,6 +243,51 @@ class WindowsManifest(ViewerManifest):
|
||||
def final_exe(self):
|
||||
return self.app_name_oneword()+"Viewer.exe"
|
||||
|
||||
def test_msvcrt_and_copy_action(self, src, dst):
|
||||
# This is used to test a dll manifest.
|
||||
# It is used as a temporary override during the construct method
|
||||
from test_win32_manifest import test_assembly_binding
|
||||
if src and (os.path.exists(src) or os.path.islink(src)):
|
||||
# ensure that destination path exists
|
||||
self.cmakedirs(os.path.dirname(dst))
|
||||
self.created_paths.append(dst)
|
||||
if not os.path.isdir(src):
|
||||
if(self.args['configuration'].lower() == 'debug'):
|
||||
test_assembly_binding(src, "Microsoft.VC80.DebugCRT", "8.0.50727.4053")
|
||||
else:
|
||||
test_assembly_binding(src, "Microsoft.VC80.CRT", "8.0.50727.4053")
|
||||
self.ccopy(src,dst)
|
||||
else:
|
||||
raise Exception("Directories are not supported by test_CRT_and_copy_action()")
|
||||
else:
|
||||
print "Doesn't exist:", src
|
||||
|
||||
def test_for_no_msvcrt_manifest_and_copy_action(self, src, dst):
|
||||
# This is used to test that no manifest for the msvcrt exists.
|
||||
# It is used as a temporary override during the construct method
|
||||
from test_win32_manifest import test_assembly_binding
|
||||
from test_win32_manifest import NoManifestException, NoMatchingAssemblyException
|
||||
if src and (os.path.exists(src) or os.path.islink(src)):
|
||||
# ensure that destination path exists
|
||||
self.cmakedirs(os.path.dirname(dst))
|
||||
self.created_paths.append(dst)
|
||||
if not os.path.isdir(src):
|
||||
try:
|
||||
if(self.args['configuration'].lower() == 'debug'):
|
||||
test_assembly_binding(src, "Microsoft.VC80.DebugCRT", "")
|
||||
else:
|
||||
test_assembly_binding(src, "Microsoft.VC80.CRT", "")
|
||||
raise Exception("Unknown condition")
|
||||
except NoManifestException, err:
|
||||
pass
|
||||
except NoMatchingAssemblyException, err:
|
||||
pass
|
||||
|
||||
self.ccopy(src,dst)
|
||||
else:
|
||||
raise Exception("Directories are not supported by test_CRT_and_copy_action()")
|
||||
else:
|
||||
print "Doesn't exist:", src
|
||||
|
||||
def construct(self):
|
||||
super(WindowsManifest, self).construct()
|
||||
@@ -252,8 +297,8 @@ class WindowsManifest(ViewerManifest):
|
||||
debpkgdir = os.path.join(pkgdir, "lib", "debug")
|
||||
|
||||
if self.is_packaging_viewer():
|
||||
# Find secondlife-bin.exe in the 'configuration' dir, then rename it to the result of final_exe.
|
||||
self.path(src='%s/secondlife-bin.exe' % self.args['configuration'], dst=self.final_exe())
|
||||
# Find singularity-bin.exe in the 'configuration' dir, then rename it to the result of final_exe.
|
||||
self.path(src='%s/singularity-bin.exe' % self.args['configuration'], dst=self.final_exe())
|
||||
|
||||
# Plugin host application
|
||||
self.path2basename(os.path.join(os.pardir,
|
||||
@@ -582,6 +627,11 @@ class Windows_i686_Manifest(WindowsManifest):
|
||||
self.path("fmod.dll")
|
||||
except:
|
||||
print "Skipping fmodstudio audio library(assuming other audio engine)"
|
||||
|
||||
self.end_prefix()
|
||||
|
||||
if self.prefix(src=os.path.join(self.args['build'], os.pardir, 'packages', 'bin'), dst="redist"):
|
||||
self.path("vc_redist.x86.exe")
|
||||
self.end_prefix()
|
||||
|
||||
|
||||
@@ -601,8 +651,14 @@ class Windows_x86_64_Manifest(WindowsManifest):
|
||||
self.path("fmod64.dll")
|
||||
except:
|
||||
print "Skipping fmodstudio audio library(assuming other audio engine)"
|
||||
|
||||
self.end_prefix()
|
||||
|
||||
if self.prefix(src=os.path.join(self.args['build'], os.pardir, 'packages', 'bin'), dst="redist"):
|
||||
self.path("vc_redist.x64.exe")
|
||||
self.end_prefix()
|
||||
|
||||
|
||||
class DarwinManifest(ViewerManifest):
|
||||
def construct(self):
|
||||
# copy over the build result (this is a no-op if run within the xcode script)
|
||||
@@ -893,7 +949,7 @@ class LinuxManifest(ViewerManifest):
|
||||
# self.put_in_file(self.flags_list(), 'gridargs.dat')
|
||||
|
||||
if self.prefix(src="", dst="bin"):
|
||||
self.path("secondlife-bin","do-not-directly-run-singularity-bin")
|
||||
self.path("singularity-bin","do-not-directly-run-singularity-bin")
|
||||
self.path2basename("../llplugin/slplugin", "SLPlugin")
|
||||
self.end_prefix("bin")
|
||||
|
||||
@@ -1043,13 +1099,13 @@ class Linux_x86_64_Manifest(LinuxManifest):
|
||||
except:
|
||||
print "Skipping libfmod.so - not found"
|
||||
pass
|
||||
|
||||
self.end_prefix("lib64")
|
||||
|
||||
# Vivox runtimes
|
||||
if self.prefix(src=relpkgdir, dst="bin"):
|
||||
self.path("SLVoice")
|
||||
self.end_prefix("bin")
|
||||
|
||||
if self.prefix(src=relpkgdir, dst="lib32"):
|
||||
self.path("libortp.so")
|
||||
self.path("libsndfile.so.1")
|
||||
@@ -1083,4 +1139,3 @@ def symlinkf(src, dst):
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user