Skip to content
Snippets Groups Projects
Commit ca4cc2ab authored by Rye Mutt's avatar Rye Mutt :bread:
Browse files

Merge branch 'master' into linux64

parents 63fd765e b4624837
Branches
Tags
No related merge requests found
Showing
with 260 additions and 221 deletions
...@@ -168,9 +168,9 @@ ...@@ -168,9 +168,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>c68630bd937509573df87a41452bc464</string> <string>3cc73623c9a976b4f8346a3837f7a916</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56315/526789/boost-1.72-darwin64-539869.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64088/601256/boost-1.72-darwin64-545361.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
...@@ -206,9 +206,9 @@ ...@@ -206,9 +206,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>097d04c5b064c4be4bc9edb885509a94</string> <string>7d4b2511976449e9a4ec7be41dc8310f</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56321/526797/boost-1.72-windows-539869.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64092/601270/boost-1.72-windows-545361.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
...@@ -218,9 +218,9 @@ ...@@ -218,9 +218,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>748c4d47cced7ba2b210eb6d0ed33497</string> <string>4ad8df0700745201cddf6b71d7b0949f</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56320/526777/boost-1.72-windows64-539869.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64091/601265/boost-1.72-windows64-545361.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows64</string> <string>windows64</string>
...@@ -312,9 +312,9 @@ ...@@ -312,9 +312,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>76e70d1f024e089bcd1afa6748d67a62</string> <string>02e6a8207dcdaf243dcb6da19b8c3534</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56409/527191/colladadom-2.3.539922-darwin64-539922.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64099/601302/colladadom-2.3.545362-darwin64-545362.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
...@@ -350,9 +350,9 @@ ...@@ -350,9 +350,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>3d6ab0e5e08a7f03088232e5676a861e</string> <string>8a02a10fc69c8f504dc5335644db184a</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56415/527297/colladadom-2.3.539922-windows-539922.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64104/601313/colladadom-2.3.545362-windows-545362.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
...@@ -362,9 +362,9 @@ ...@@ -362,9 +362,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>5a31c4d50a04d255e84903f16597d4ed</string> <string>742180324fca7ab92b6a61a36aab4f9d</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56408/527200/colladadom-2.3.539922-windows64-539922.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64103/601314/colladadom-2.3.545362-windows64-545362.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows64</string> <string>windows64</string>
...@@ -404,9 +404,9 @@ ...@@ -404,9 +404,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>decf3d5bd930e9ac6113cf96c61ff230</string> <string>f5ae57117a6518d11f49ccfbfbe0969d</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56342/526921/curl-7.54.1.539883-darwin64-539883.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64131/601402/curl-7.54.1.545369-darwin64-545369.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
...@@ -442,11 +442,11 @@ ...@@ -442,11 +442,11 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>ebd24261499e458da253d2bc1d95057a</string> <string>2796ae7b09e730a55ac03f74ed669520</string>
<key>hash_algorithm</key> <key>hash_algorithm</key>
<string>md5</string> <string>md5</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56361/526996/curl-7.54.1.539883-windows-539883.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64130/601396/curl-7.54.1.545369-windows-545369.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
...@@ -456,9 +456,9 @@ ...@@ -456,9 +456,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>9eadfc1885c59ebc750f75adf4c20925</string> <string>a8f96e5cdb8128b23d49ff4c3f2233a4</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56360/526989/curl-7.54.1.539883-windows64-539883.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64129/601382/curl-7.54.1.545369-windows64-545369.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows64</string> <string>windows64</string>
...@@ -877,72 +877,6 @@ ...@@ -877,72 +877,6 @@
<key>version</key> <key>version</key>
<string>2.10.2.202202106</string> <string>2.10.2.202202106</string>
</map> </map>
<key>glext</key>
<map>
<key>copyright</key>
<string>Copyright (c) 2007-2010 The Khronos Group Inc.</string>
<key>description</key>
<string>glext headers define function prototypes and constants for OpenGL extensions</string>
<key>license</key>
<string>Copyright (c) 2007-2010 The Khronos Group Inc.</string>
<key>license_file</key>
<string>LICENSES/glext.txt</string>
<key>name</key>
<string>glext</string>
<key>platforms</key>
<map>
<key>darwin64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>1bd3214ac23474ea4c869e386970a1be</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54835/510029/glext-68-darwin64-538965.tar.bz2</string>
</map>
<key>name</key>
<string>darwin64</string>
</map>
<key>linux64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>5f3c9d61b620f949b199ebd8885218ed</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/Linux/installer/glext-68-linux64-314200.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>
</map>
<key>windows</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>6a311615bce59b01cf73ee65012a9b38</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54951/511711/glext-68-windows-538965.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
</map>
<key>windows64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>daf619dab1cf7518af6532b18800c4b0</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54924/511490/glext-68-windows64-538965.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
</map>
<key>version</key>
<string>68</string>
</map>
<key>glh_linear</key> <key>glh_linear</key>
<map> <map>
<key>copyright</key> <key>copyright</key>
...@@ -1545,6 +1479,54 @@ ...@@ -1545,6 +1479,54 @@
<key>version</key> <key>version</key>
<string>7.10.4.539108</string> <string>7.10.4.539108</string>
</map> </map>
<key>libepoxy</key>
<map>
<key>canonical_repo</key>
<string>https://git.alchemyviewer.org/alchemy/thirdparty/3p-libepoxy</string>
<key>copyright</key>
<string>Copyright © 2013-2014 Intel Corporation</string>
<key>description</key>
<string>Epoxy is a library for handling OpenGL function pointer management for you.</string>
<key>license</key>
<string>MIT</string>
<key>license_file</key>
<string>LICENSES/libepoxy.txt</string>
<key>name</key>
<string>libepoxy</string>
<key>platforms</key>
<map>
<key>linux64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>a29210ee9af6221bd5d8d8bfc7c31b95</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/libepoxy/linux64/debian10/libepoxy-1.5.4.202340827-linux64-202340827.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>
</map>
<key>windows64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>254605ce88497d55ac4f935ab6ee5646</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/libepoxy/windows64/libepoxy-1.5.4.202292318-windows64-202292318.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
</map>
<key>version</key>
<string>1.5.4.202340827</string>
</map>
<key>libhunspell</key> <key>libhunspell</key>
<map> <map>
<key>copyright</key> <key>copyright</key>
...@@ -2037,16 +2019,16 @@ ...@@ -2037,16 +2019,16 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>3d2122c39abb8bc6f46c0ddc0838ab2a</string> <string>8501cbaa7e0f254614694da784a9c61c</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58176/544556/llca-202004280657.541101-common-541101.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64944/606925/llca-202008010216.546021-common-546021.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>common</string> <string>common</string>
</map> </map>
</map> </map>
<key>version</key> <key>version</key>
<string>202004280657.541101</string> <string>202008010216.546021</string>
</map> </map>
<key>llphysicsextensions_source</key> <key>llphysicsextensions_source</key>
<map> <map>
...@@ -2262,9 +2244,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> ...@@ -2262,9 +2244,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>95b69e37b9b4435698682f4ff702cca5</string> <string>937ce1a2158c0cfff37f5989f5b24aba</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54855/510169/nghttp2-1.25.0.538985-darwin64-538985.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64066/601156/nghttp2-1.40.0.545354-darwin64-545354.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
...@@ -2300,9 +2282,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> ...@@ -2300,9 +2282,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>246dd8445be87c698aa7fa318bcdd7e5</string> <string>138b881bdf37dff4e626e022a50dd11f</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55035/511985/nghttp2-1.25.0.538985-windows-538985.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64069/601181/nghttp2-1.40.0.545354-windows-545354.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
...@@ -2312,9 +2294,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> ...@@ -2312,9 +2294,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>f2fd2dbe8704ec63ab433cbe8e03f7c4</string> <string>c23c6480c7cbea60a2bd26e257adc0a7</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55031/511978/nghttp2-1.25.0.538985-windows64-538985.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64068/601177/nghttp2-1.40.0.545354-windows64-545354.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows64</string> <string>windows64</string>
......
...@@ -1088,6 +1088,8 @@ Nicky Dasmijn ...@@ -1088,6 +1088,8 @@ Nicky Dasmijn
SL-10293 SL-10293
SL-11061 SL-11061
SL-11072 SL-11072
SL-13141
SL-13642
Nicky Perian Nicky Perian
OPEN-1 OPEN-1
STORM-1087 STORM-1087
......
...@@ -21,6 +21,7 @@ set(cmake_SOURCE_FILES ...@@ -21,6 +21,7 @@ set(cmake_SOURCE_FILES
DBusGlib.cmake DBusGlib.cmake
DeploySharedLibs.cmake DeploySharedLibs.cmake
DragDrop.cmake DragDrop.cmake
Epoxy.cmake
EXPAT.cmake EXPAT.cmake
FindAPR.cmake FindAPR.cmake
FindAutobuild.cmake FindAutobuild.cmake
......
...@@ -61,6 +61,7 @@ if(WINDOWS) ...@@ -61,6 +61,7 @@ if(WINDOWS)
nghttp2.dll nghttp2.dll
glod.dll glod.dll
libhunspell.dll libhunspell.dll
epoxy-0.dll
) )
# Filenames are different for 32/64 bit BugSplat file and we don't # Filenames are different for 32/64 bit BugSplat file and we don't
...@@ -108,7 +109,7 @@ elseif(DARWIN) ...@@ -108,7 +109,7 @@ elseif(DARWIN)
libndofdev.dylib libndofdev.dylib
libnghttp2.dylib libnghttp2.dylib
libnghttp2.14.dylib libnghttp2.14.dylib
libnghttp2.14.14.0.dylib libnghttp2.14.19.0.dylib
) )
if (USE_FMODSTUDIO) if (USE_FMODSTUDIO)
......
# -*- cmake -*-
include(Prebuilt)
if (USESYSTEMLIBS)
include(FindPkgConfig)
pkg_check_modules(EPOXY REQUIRED epoxy)
else (USESYSTEMLIBS)
use_prebuilt_binary(libepoxy)
set(EPOXY_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/)
set(EPOXY_LIBRARIES epoxy)
endif (USESYSTEMLIBS)
\ No newline at end of file
...@@ -2,9 +2,6 @@ ...@@ -2,9 +2,6 @@
include(Prebuilt) include(Prebuilt)
if (NOT USESYSTEMLIBS) if (NOT USESYSTEMLIBS)
if (WINDOWS OR LINUX)
use_prebuilt_binary(glext)
endif (WINDOWS OR LINUX)
use_prebuilt_binary(glh_linear) use_prebuilt_binary(glh_linear)
set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include) set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
endif (NOT USESYSTEMLIBS) endif (NOT USESYSTEMLIBS)
# -*- cmake -*- # -*- cmake -*-
include(Variables) include(Variables)
include(Epoxy)
include(GLEXT) include(GLEXT)
include(Prebuilt) include(Prebuilt)
...@@ -28,6 +29,7 @@ endif (SDL_FOUND) ...@@ -28,6 +29,7 @@ endif (SDL_FOUND)
set(LLWINDOW_INCLUDE_DIRS set(LLWINDOW_INCLUDE_DIRS
${GLEXT_INCLUDE_DIR} ${GLEXT_INCLUDE_DIR}
${EPOXY_INCLUDE_DIRS}
${LIBS_OPEN_DIR}/llwindow ${LIBS_OPEN_DIR}/llwindow
) )
......
...@@ -240,6 +240,64 @@ void _ll_apr_assert_status(apr_status_t status, const char* file, int line) ...@@ -240,6 +240,64 @@ void _ll_apr_assert_status(apr_status_t status, const char* file, int line)
llassert(! _ll_apr_warn_status(status, file, line)); llassert(! _ll_apr_warn_status(status, file, line));
} }
//---------------------------------------------------------------------
//
// Scope based pool access
//
//---------------------------------------------------------------------
class LLAPRFilePoolScope
{
public:
LLAPRFilePoolScope() : pPool(NULL), mInitialized(false) {}
LLAPRFilePoolScope(LLVolatileAPRPool* poolp) : mInitialized(false)
{
setFilePool(poolp);
}
~LLAPRFilePoolScope()
{
reset();
}
apr_pool_t* getVolatileAPRPool(LLVolatileAPRPool* poolp = NULL)
{
if (!pPool)
{
setFilePool(poolp);
}
if (mInitialized)
{
// We need one clear per one get
// At the moment no need to support multiple calls
LL_ERRS() << "LLAPRFilePoolScope is not supposed to be initialized twice" << LL_ENDL;
}
mInitialized = true;
return pPool->getVolatileAPRPool();
}
void reset()
{
if (mInitialized)
{
pPool->clearVolatileAPRPool();
}
}
private:
void setFilePool(LLVolatileAPRPool* poolp = NULL)
{
if (poolp)
{
pPool = poolp;
}
else
{
pPool = LLAPRFile::sAPRFilePoolp;
}
}
LLVolatileAPRPool *pPool;
bool mInitialized;
};
//--------------------------------------------------------------------- //---------------------------------------------------------------------
// //
// LLAPRFile functions // LLAPRFile functions
...@@ -288,8 +346,9 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLV ...@@ -288,8 +346,9 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLV
llassert_always(!mFile) ; llassert_always(!mFile) ;
llassert_always(!mCurrentFilePoolp) ; llassert_always(!mCurrentFilePoolp) ;
apr_pool_t* apr_pool = pool ? pool->getVolatileAPRPool() : NULL ; mCurrentFilePoolp = pool ? pool : sAPRFilePoolp;
s = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, getAPRFilePool(apr_pool)); apr_pool_t* apr_pool = mCurrentFilePoolp->getVolatileAPRPool(); //paired with clear in close()
s = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, apr_pool);
if (s != APR_SUCCESS || !mFile) if (s != APR_SUCCESS || !mFile)
{ {
...@@ -314,15 +373,11 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLV ...@@ -314,15 +373,11 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLV
*sizep = file_size; *sizep = file_size;
} }
if(!mCurrentFilePoolp)
{
mCurrentFilePoolp = pool ;
if (!mFile) if (!mFile)
{ {
// It will clean pool
close() ; close() ;
} }
}
return s ; return s ;
} }
...@@ -348,17 +403,6 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, BOO ...@@ -348,17 +403,6 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, BOO
return s; return s;
} }
apr_pool_t* LLAPRFile::getAPRFilePool(apr_pool_t* pool)
{
if(!pool)
{
mCurrentFilePoolp = sAPRFilePoolp ;
return mCurrentFilePoolp->getVolatileAPRPool() ;
}
return pool ;
}
// File I/O // File I/O
S32 LLAPRFile::read(void *buf, S32 nbytes) S32 LLAPRFile::read(void *buf, S32 nbytes)
{ {
...@@ -415,7 +459,7 @@ S32 LLAPRFile::seek(apr_seek_where_t where, S32 offset) ...@@ -415,7 +459,7 @@ S32 LLAPRFile::seek(apr_seek_where_t where, S32 offset)
// //
//static //static
apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool) apr_status_t LLAPRFile::close(apr_file_t* file_handle)
{ {
apr_status_t ret = APR_SUCCESS ; apr_status_t ret = APR_SUCCESS ;
if(file_handle) if(file_handle)
...@@ -424,29 +468,23 @@ apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool) ...@@ -424,29 +468,23 @@ apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool)
file_handle = NULL ; file_handle = NULL ;
} }
if(pool)
{
pool->clearVolatileAPRPool() ;
}
return ret ; return ret ;
} }
//static //static
apr_file_t* LLAPRFile::open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags) apr_file_t* LLAPRFile::open(const std::string& filename, apr_pool_t* apr_pool, apr_int32_t flags)
{ {
apr_status_t s; apr_status_t s;
apr_file_t* file_handle ; apr_file_t* file_handle ;
pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool()); s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, apr_pool);
if (s != APR_SUCCESS || !file_handle) if (s != APR_SUCCESS || !file_handle)
{ {
ll_apr_warn_status(s); ll_apr_warn_status(s);
LL_WARNS("APR") << " Attempting to open filename: " << filename << LL_ENDL; LL_WARNS("APR") << " Attempting to open filename: " << filename << LL_ENDL;
file_handle = NULL ; file_handle = NULL ;
close(file_handle, pool) ; close(file_handle) ;
return NULL; return NULL;
} }
...@@ -489,7 +527,8 @@ S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset) ...@@ -489,7 +527,8 @@ S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset)
S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool) S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool)
{ {
//***************************************** //*****************************************
apr_file_t* file_handle = open(filename, pool, APR_READ|APR_BINARY); LLAPRFilePoolScope scope(pool);
apr_file_t* file_handle = open(filename, scope.getVolatileAPRPool(), APR_READ|APR_BINARY);
//***************************************** //*****************************************
if (!file_handle) if (!file_handle)
{ {
...@@ -523,7 +562,7 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb ...@@ -523,7 +562,7 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb
} }
//***************************************** //*****************************************
close(file_handle, pool) ; close(file_handle) ;
//***************************************** //*****************************************
return (S32)bytes_read; return (S32)bytes_read;
} }
...@@ -539,7 +578,8 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n ...@@ -539,7 +578,8 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
} }
//***************************************** //*****************************************
apr_file_t* file_handle = open(filename, pool, flags); LLAPRFilePoolScope scope(pool);
apr_file_t* file_handle = open(filename, scope.getVolatileAPRPool(), flags);
//***************************************** //*****************************************
if (!file_handle) if (!file_handle)
{ {
...@@ -573,7 +613,7 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n ...@@ -573,7 +613,7 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
} }
//***************************************** //*****************************************
LLAPRFile::close(file_handle, pool); LLAPRFile::close(file_handle);
//***************************************** //*****************************************
return (S32)bytes_written; return (S32)bytes_written;
...@@ -584,9 +624,8 @@ bool LLAPRFile::remove(const std::string& filename, LLVolatileAPRPool* pool) ...@@ -584,9 +624,8 @@ bool LLAPRFile::remove(const std::string& filename, LLVolatileAPRPool* pool)
{ {
apr_status_t s; apr_status_t s;
pool = pool ? pool : LLAPRFile::sAPRFilePoolp ; LLAPRFilePoolScope scope(pool);
s = apr_file_remove(filename.c_str(), pool->getVolatileAPRPool()); s = apr_file_remove(filename.c_str(), scope.getVolatileAPRPool());
pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS) if (s != APR_SUCCESS)
{ {
...@@ -602,9 +641,8 @@ bool LLAPRFile::rename(const std::string& filename, const std::string& newname, ...@@ -602,9 +641,8 @@ bool LLAPRFile::rename(const std::string& filename, const std::string& newname,
{ {
apr_status_t s; apr_status_t s;
pool = pool ? pool : LLAPRFile::sAPRFilePoolp ; LLAPRFilePoolScope scope(pool);
s = apr_file_rename(filename.c_str(), newname.c_str(), pool->getVolatileAPRPool()); s = apr_file_rename(filename.c_str(), newname.c_str(), scope.getVolatileAPRPool());
pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS) if (s != APR_SUCCESS)
{ {
...@@ -621,18 +659,16 @@ bool LLAPRFile::isExist(const std::string& filename, LLVolatileAPRPool* pool, ap ...@@ -621,18 +659,16 @@ bool LLAPRFile::isExist(const std::string& filename, LLVolatileAPRPool* pool, ap
apr_file_t* apr_file; apr_file_t* apr_file;
apr_status_t s; apr_status_t s;
pool = pool ? pool : LLAPRFile::sAPRFilePoolp ; LLAPRFilePoolScope scope(pool);
s = apr_file_open(&apr_file, filename.c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool()); s = apr_file_open(&apr_file, filename.c_str(), flags, APR_OS_DEFAULT, scope.getVolatileAPRPool());
if (s != APR_SUCCESS || !apr_file) if (s != APR_SUCCESS || !apr_file)
{ {
pool->clearVolatileAPRPool() ;
return false; return false;
} }
else else
{ {
apr_file_close(apr_file) ; apr_file_close(apr_file) ;
pool->clearVolatileAPRPool() ;
return true; return true;
} }
} }
...@@ -644,13 +680,11 @@ S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool) ...@@ -644,13 +680,11 @@ S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool)
apr_finfo_t info; apr_finfo_t info;
apr_status_t s; apr_status_t s;
pool = pool ? pool : LLAPRFile::sAPRFilePoolp ; LLAPRFilePoolScope scope(pool);
s = apr_file_open(&apr_file, filename.c_str(), APR_READ, APR_OS_DEFAULT, pool->getVolatileAPRPool()); s = apr_file_open(&apr_file, filename.c_str(), APR_READ, APR_OS_DEFAULT, scope.getVolatileAPRPool());
if (s != APR_SUCCESS || !apr_file) if (s != APR_SUCCESS || !apr_file)
{ {
pool->clearVolatileAPRPool() ;
return 0; return 0;
} }
else else
...@@ -658,7 +692,6 @@ S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool) ...@@ -658,7 +692,6 @@ S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool)
apr_status_t s = apr_file_info_get(&info, APR_FINFO_SIZE, apr_file); apr_status_t s = apr_file_info_get(&info, APR_FINFO_SIZE, apr_file);
apr_file_close(apr_file) ; apr_file_close(apr_file) ;
pool->clearVolatileAPRPool() ;
if (s == APR_SUCCESS) if (s == APR_SUCCESS)
{ {
...@@ -676,9 +709,8 @@ bool LLAPRFile::makeDir(const std::string& dirname, LLVolatileAPRPool* pool) ...@@ -676,9 +709,8 @@ bool LLAPRFile::makeDir(const std::string& dirname, LLVolatileAPRPool* pool)
{ {
apr_status_t s; apr_status_t s;
pool = pool ? pool : LLAPRFile::sAPRFilePoolp ; LLAPRFilePoolScope scope(pool);
s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool->getVolatileAPRPool()); s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, scope.getVolatileAPRPool());
pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS) if (s != APR_SUCCESS)
{ {
...@@ -694,9 +726,8 @@ bool LLAPRFile::removeDir(const std::string& dirname, LLVolatileAPRPool* pool) ...@@ -694,9 +726,8 @@ bool LLAPRFile::removeDir(const std::string& dirname, LLVolatileAPRPool* pool)
{ {
apr_status_t s; apr_status_t s;
pool = pool ? pool : LLAPRFile::sAPRFilePoolp ; LLAPRFilePoolScope scope(pool);
s = apr_file_remove(dirname.c_str(), pool->getVolatileAPRPool()); s = apr_file_remove(dirname.c_str(), scope.getVolatileAPRPool());
pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS) if (s != APR_SUCCESS)
{ {
......
...@@ -171,9 +171,6 @@ class LL_COMMON_API LLAPRFile : boost::noncopyable ...@@ -171,9 +171,6 @@ class LL_COMMON_API LLAPRFile : boost::noncopyable
apr_file_t* getFileHandle() {return mFile;} apr_file_t* getFileHandle() {return mFile;}
private:
apr_pool_t* getAPRFilePool(apr_pool_t* pool) ;
// //
//******************************************************************************************************************************* //*******************************************************************************************************************************
//static components //static components
...@@ -182,8 +179,8 @@ class LL_COMMON_API LLAPRFile : boost::noncopyable ...@@ -182,8 +179,8 @@ class LL_COMMON_API LLAPRFile : boost::noncopyable
static LLVolatileAPRPool *sAPRFilePoolp ; //a global apr_pool for APRFile, which is used only when local pool does not exist. static LLVolatileAPRPool *sAPRFilePoolp ; //a global apr_pool for APRFile, which is used only when local pool does not exist.
private: private:
static apr_file_t* open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags); static apr_file_t* open(const std::string& filename, apr_pool_t* apr_pool, apr_int32_t flags);
static apr_status_t close(apr_file_t* file, LLVolatileAPRPool* pool) ; static apr_status_t close(apr_file_t* file) ;
static S32 seek(apr_file_t* file, apr_seek_where_t where, S32 offset); static S32 seek(apr_file_t* file, apr_seek_where_t where, S32 offset);
public: public:
// returns false if failure: // returns false if failure:
......
...@@ -506,7 +506,7 @@ struct Data ...@@ -506,7 +506,7 @@ struct Data
const char* name; const char* name;
} typedata[] = } typedata[] =
{ {
#define def(type) { LLSD::type, #type + 4 } #define def(type) { LLSD::type, &#type[4] }
def(TypeUndefined), def(TypeUndefined),
def(TypeBoolean), def(TypeBoolean),
def(TypeInteger), def(TypeInteger),
......
...@@ -559,8 +559,10 @@ LLSD shallow(LLSD value, LLSD filter=LLSD()) { return llsd_shallow(value, filter ...@@ -559,8 +559,10 @@ LLSD shallow(LLSD value, LLSD filter=LLSD()) { return llsd_shallow(value, filter
} // namespace llsd } // namespace llsd
// Specialization for generating a hash value from an LLSD block. // Specialization for generating a hash value from an LLSD block.
namespace boost
{
template <> template <>
struct boost::hash<LLSD> struct hash<LLSD>
{ {
typedef LLSD argument_type; typedef LLSD argument_type;
typedef std::size_t result_type; typedef std::size_t result_type;
...@@ -621,5 +623,5 @@ struct boost::hash<LLSD> ...@@ -621,5 +623,5 @@ struct boost::hash<LLSD>
return seed; return seed;
} }
}; };
}
#endif // LL_LLSDUTIL_H #endif // LL_LLSDUTIL_H
...@@ -36,6 +36,10 @@ ...@@ -36,6 +36,10 @@
#include <set> #include <set>
#include <typeinfo> #include <typeinfo>
#ifdef LL_LINUX
// <ND> For strcmp
#include <string.h>
#endif
// Use to compare the first element only of a pair // Use to compare the first element only of a pair
// e.g. typedef std::set<std::pair<int, Data*>, compare_pair<int, Data*> > some_pair_set_t; // e.g. typedef std::set<std::pair<int, Data*>, compare_pair<int, Data*> > some_pair_set_t;
template <typename T1, typename T2> template <typename T1, typename T2>
......
...@@ -304,14 +304,13 @@ template<typename ElementT> ...@@ -304,14 +304,13 @@ template<typename ElementT>
bool LLThreadSafeQueue<ElementT>::isClosed() bool LLThreadSafeQueue<ElementT>::isClosed()
{ {
lock_t lock(mLock); lock_t lock(mLock);
return mClosed; return mClosed && mStorage.size() == 0;
} }
template<typename ElementT> template<typename ElementT>
LLThreadSafeQueue<ElementT>::operator bool() LLThreadSafeQueue<ElementT>::operator bool()
{ {
lock_t lock(mLock); return ! isClosed();
return ! mClosed;
} }
#endif #endif
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
// #include "include_kdu_xxxx.h" // #include "include_kdu_xxxx.h"
// // kdu_xxxx #undef'ed by include_kdu_xxxx.h // // kdu_xxxx #undef'ed by include_kdu_xxxx.h
#if LL_DARWIN #if __clang__
// don't *really* want to rebuild KDU so turn off specific warnings for this header // don't *really* want to rebuild KDU so turn off specific warnings for this header
#pragma clang diagnostic push #pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wself-assign-field" #pragma clang diagnostic ignored "-Wself-assign-field"
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
// Class to test // Class to test
#include "llimagej2ckdu.h" #include "llimagej2ckdu.h"
#if LL_DARWIN #if __clang__
// For this source, it's true that private fields in llkdumem.h are unused. // For this source, it's true that private fields in llkdumem.h are unused.
#pragma clang diagnostic push #pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-private-field" #pragma clang diagnostic ignored "-Wunused-private-field"
......
...@@ -426,11 +426,11 @@ void LLAssetStorage::_cleanupRequests(BOOL all, S32 error) ...@@ -426,11 +426,11 @@ void LLAssetStorage::_cleanupRequests(BOOL all, S32 error)
LLAssetRequest* tmp = *curiter; LLAssetRequest* tmp = *curiter;
if (tmp->mUpCallback) if (tmp->mUpCallback)
{ {
tmp->mUpCallback(tmp->getUUID(), tmp->mUserData, error, LL_EXSTAT_NONE); tmp->mUpCallback(tmp->getUUID(), tmp->mUserData, error, LLExtStat::NONE);
} }
if (tmp->mDownCallback) if (tmp->mDownCallback)
{ {
tmp->mDownCallback(mVFS, tmp->getUUID(), tmp->getType(), tmp->mUserData, error, LL_EXSTAT_NONE); tmp->mDownCallback(mVFS, tmp->getUUID(), tmp->getType(), tmp->mUserData, error, LLExtStat::NONE);
} }
if (tmp->mInfoCallback) if (tmp->mInfoCallback)
{ {
...@@ -465,7 +465,7 @@ bool LLAssetStorage::findInStaticVFSAndInvokeCallback(const LLUUID& uuid, LLAsse ...@@ -465,7 +465,7 @@ bool LLAssetStorage::findInStaticVFSAndInvokeCallback(const LLUUID& uuid, LLAsse
// we've already got the file // we've already got the file
if (callback) if (callback)
{ {
callback(mStaticVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); callback(mStaticVFS, uuid, type, user_data, LL_ERR_NOERR, LLExtStat::VFS_CACHED);
} }
return true; return true;
} }
...@@ -506,7 +506,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, ...@@ -506,7 +506,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid,
if (callback) if (callback)
{ {
add(sFailedDownloadCount, 1); add(sFailedDownloadCount, 1);
callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_FAILED, LL_EXSTAT_NONE); callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_FAILED, LLExtStat::NONE);
} }
return; return;
} }
...@@ -517,7 +517,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, ...@@ -517,7 +517,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid,
if (callback) if (callback)
{ {
add(sFailedDownloadCount, 1); add(sFailedDownloadCount, 1);
callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LL_EXSTAT_NULL_UUID); callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LLExtStat::NULL_UUID);
} }
return; return;
} }
...@@ -540,7 +540,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, ...@@ -540,7 +540,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid,
// unless there's a weird error // unless there's a weird error
if (callback) if (callback)
{ {
callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LLExtStat::VFS_CACHED);
} }
LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << uuid << " found in VFS" << LL_ENDL; LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << uuid << " found in VFS" << LL_ENDL;
...@@ -694,7 +694,7 @@ void LLAssetStorage::downloadCompleteCallback( ...@@ -694,7 +694,7 @@ void LLAssetStorage::downloadCompleteCallback(
} }
} }
removeAndCallbackPendingDownloads(file_id, file_type, callback_id, callback_type, ext_status, result); removeAndCallbackPendingDownloads(file_id, file_type, callback_id, callback_type, result, ext_status);
} }
void LLAssetStorage::getEstateAsset( void LLAssetStorage::getEstateAsset(
...@@ -719,7 +719,7 @@ void LLAssetStorage::getEstateAsset( ...@@ -719,7 +719,7 @@ void LLAssetStorage::getEstateAsset(
if (callback) if (callback)
{ {
add(sFailedDownloadCount, 1); add(sFailedDownloadCount, 1);
callback(mVFS, asset_id, atype, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LL_EXSTAT_NULL_UUID); callback(mVFS, asset_id, atype, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LLExtStat::NULL_UUID);
} }
return; return;
} }
...@@ -741,7 +741,7 @@ void LLAssetStorage::getEstateAsset( ...@@ -741,7 +741,7 @@ void LLAssetStorage::getEstateAsset(
// unless there's a weird error // unless there's a weird error
if (callback) if (callback)
{ {
callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LLExtStat::VFS_CACHED);
} }
} }
else else
...@@ -792,7 +792,7 @@ void LLAssetStorage::getEstateAsset( ...@@ -792,7 +792,7 @@ void LLAssetStorage::getEstateAsset(
if (callback) if (callback)
{ {
add(sFailedDownloadCount, 1); add(sFailedDownloadCount, 1);
callback(mVFS, asset_id, atype, user_data, LL_ERR_CIRCUIT_GONE, LL_EXSTAT_NO_UPSTREAM); callback(mVFS, asset_id, atype, user_data, LL_ERR_CIRCUIT_GONE, LLExtStat::NO_UPSTREAM);
} }
} }
} }
...@@ -885,7 +885,7 @@ void LLAssetStorage::getInvItemAsset( ...@@ -885,7 +885,7 @@ void LLAssetStorage::getInvItemAsset(
// unless there's a weird error // unless there's a weird error
if (callback) if (callback)
{ {
callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LLExtStat::VFS_CACHED);
} }
} }
else else
...@@ -936,7 +936,7 @@ void LLAssetStorage::getInvItemAsset( ...@@ -936,7 +936,7 @@ void LLAssetStorage::getInvItemAsset(
if (callback) if (callback)
{ {
add(sFailedDownloadCount, 1); add(sFailedDownloadCount, 1);
callback(mVFS, asset_id, atype, user_data, LL_ERR_CIRCUIT_GONE, LL_EXSTAT_NO_UPSTREAM); callback(mVFS, asset_id, atype, user_data, LL_ERR_CIRCUIT_GONE, LLExtStat::NO_UPSTREAM);
} }
} }
} }
...@@ -1034,7 +1034,7 @@ void LLAssetStorage::processUploadComplete(LLMessageSystem *msg, void **user_dat ...@@ -1034,7 +1034,7 @@ void LLAssetStorage::processUploadComplete(LLMessageSystem *msg, void **user_dat
msg->getBOOLFast(_PREHASH_AssetBlock, _PREHASH_Success, success); msg->getBOOLFast(_PREHASH_AssetBlock, _PREHASH_Success, success);
asset_type = (LLAssetType::EType)asset_type_s8; asset_type = (LLAssetType::EType)asset_type_s8;
this_ptr->_callUploadCallbacks(uuid, asset_type, success, LL_EXSTAT_NONE); this_ptr->_callUploadCallbacks(uuid, asset_type, success, LLExtStat::NONE);
} }
void LLAssetStorage::_callUploadCallbacks(const LLUUID &uuid, LLAssetType::EType asset_type, BOOL success, LLExtStat ext_status ) void LLAssetStorage::_callUploadCallbacks(const LLUUID &uuid, LLAssetType::EType asset_type, BOOL success, LLExtStat ext_status )
...@@ -1288,12 +1288,12 @@ bool LLAssetStorage::deletePendingRequestImpl(LLAssetStorage::request_list_t* re ...@@ -1288,12 +1288,12 @@ bool LLAssetStorage::deletePendingRequestImpl(LLAssetStorage::request_list_t* re
// Run callbacks. // Run callbacks.
if (req->mUpCallback) if (req->mUpCallback)
{ {
req->mUpCallback(req->getUUID(), req->mUserData, error, LL_EXSTAT_REQUEST_DROPPED); req->mUpCallback(req->getUUID(), req->mUserData, error, LLExtStat::REQUEST_DROPPED);
} }
if (req->mDownCallback) if (req->mDownCallback)
{ {
add(sFailedDownloadCount, 1); add(sFailedDownloadCount, 1);
req->mDownCallback(mVFS, req->getUUID(), req->getType(), req->mUserData, error, LL_EXSTAT_REQUEST_DROPPED); req->mDownCallback(mVFS, req->getUUID(), req->getType(), req->mUserData, error, LLExtStat::REQUEST_DROPPED);
} }
if (req->mInfoCallback) if (req->mInfoCallback)
{ {
......
...@@ -272,6 +272,17 @@ void LLCoprocedureManager::close(const std::string &pool) ...@@ -272,6 +272,17 @@ void LLCoprocedureManager::close(const std::string &pool)
} }
} }
// <FS:Ansariel> Explicitly create the VAAssetStorage pool
void LLCoprocedureManager::createPool(const std::string& poolName)
{
poolMap_t::iterator it = mPoolMap.find(poolName);
if (it == mPoolMap.end())
{
initializePool(poolName);
}
}
// </FS:Ansariel> Explicitly create the VAAssetStorage pool
//========================================================================= //=========================================================================
LLCoprocedurePool::LLCoprocedurePool(const std::string &poolName, size_t size): LLCoprocedurePool::LLCoprocedurePool(const std::string &poolName, size_t size):
mPoolName(poolName), mPoolName(poolName),
......
...@@ -80,6 +80,8 @@ class LLCoprocedureManager final : public LLSingleton < LLCoprocedureManager > ...@@ -80,6 +80,8 @@ class LLCoprocedureManager final : public LLSingleton < LLCoprocedureManager >
void close(); void close();
void close(const std::string &pool); void close(const std::string &pool);
void createPool(const std::string& poolName); // <FS:Ansariel> Explicitly create the VAAssetStorage pool
private: private:
typedef boost::shared_ptr<LLCoprocedurePool> poolPtr_t; typedef boost::shared_ptr<LLCoprocedurePool> poolPtr_t;
......
...@@ -28,40 +28,36 @@ ...@@ -28,40 +28,36 @@
#ifndef LL_LLEXTENDEDSTATUS_H #ifndef LL_LLEXTENDEDSTATUS_H
#define LL_LLEXTENDEDSTATUS_H #define LL_LLEXTENDEDSTATUS_H
enum class LLExtStat: uint32_t
typedef S32 LLExtStat; {
// Status provider groups - Top bits indicate which status type it is // Status provider groups - Top bits indicate which status type it is
// Zero is common status code (next section) // Zero is common status code (next section)
const LLExtStat LL_EXSTAT_CURL_RESULT = 1L<<30; // serviced by curl - use 1L if we really implement the below CURL_RESULT = 1UL<<30, // serviced by curl - use 1L if we really implement the below
const LLExtStat LL_EXSTAT_RES_RESULT = 2L<<30; // serviced by resident copy RES_RESULT = 2UL<<30, // serviced by resident copy
const LLExtStat LL_EXSTAT_VFS_RESULT = 3L<<30; // serviced by vfs VFS_RESULT = 3UL<<30, // serviced by vfs
// Common Status Codes // Common Status Codes
// //
const LLExtStat LL_EXSTAT_NONE = 0x00000; // No extra info here - sorry! NONE = 0x00000, // No extra info here - sorry!
const LLExtStat LL_EXSTAT_NULL_UUID = 0x10001; // null asset ID NULL_UUID = 0x10001, // null asset ID
const LLExtStat LL_EXSTAT_NO_UPSTREAM = 0x10002; // attempt to upload without a valid upstream method/provider NO_UPSTREAM = 0x10002, // attempt to upload without a valid upstream method/provider
const LLExtStat LL_EXSTAT_REQUEST_DROPPED = 0x10003; // request was dropped unserviced REQUEST_DROPPED = 0x10003, // request was dropped unserviced
const LLExtStat LL_EXSTAT_NONEXISTENT_FILE = 0x10004; // trying to upload a file that doesn't exist NONEXISTENT_FILE= 0x10004, // trying to upload a file that doesn't exist
const LLExtStat LL_EXSTAT_BLOCKED_FILE = 0x10005; // trying to upload a file that we can't open BLOCKED_FILE = 0x10005, // trying to upload a file that we can't open
// curl status codes: // curl status codes:
// //
// Mask off LL_EXSTAT_CURL_RESULT for original result and // Mask off CURL_RESULT for original result and
// see: libraries/include/curl/curl.h // see: libraries/include/curl/curl.h
// Memory-Resident status codes: // Memory-Resident status codes:
// None at present // None at present
// VFS status codes: // VFS status codes:
const LLExtStat LL_EXSTAT_VFS_CACHED = LL_EXSTAT_VFS_RESULT | 0x0001; VFS_CACHED = VFS_RESULT | 0x0001,
const LLExtStat LL_EXSTAT_VFS_CORRUPT = LL_EXSTAT_VFS_RESULT | 0x0002; VFS_CORRUPT = VFS_RESULT | 0x0002,
};
#endif // LL_LLEXTENDEDSTATUS_H #endif // LL_LLEXTENDEDSTATUS_H
...@@ -227,7 +227,7 @@ void LLTransferTargetVFile::completionCallback(const LLTSCode status) ...@@ -227,7 +227,7 @@ void LLTransferTargetVFile::completionCallback(const LLTSCode status)
mParams.getAssetID(), mParams.getAssetID(),
mParams.getAssetType(), mParams.getAssetType(),
mParams.mRequestDatap, mParams.mRequestDatap,
LL_EXSTAT_NONE); LLExtStat::NONE);
} }
delete mParams.mRequestDatap; delete mParams.mRequestDatap;
mParams.mRequestDatap = NULL; mParams.mRequestDatap = NULL;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment