Merge branch 'master' of git://github.com/siana/SingularityViewer
This commit is contained in:
@@ -30,7 +30,10 @@
|
|||||||
#include "v3math.h"
|
#include "v3math.h"
|
||||||
#include "llstring.h"
|
#include "llstring.h"
|
||||||
#include "llxmltree.h"
|
#include "llxmltree.h"
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
class LLPolyMesh;
|
class LLPolyMesh;
|
||||||
class LLXmlTreeNode;
|
class LLXmlTreeNode;
|
||||||
|
|||||||
@@ -39,7 +39,10 @@
|
|||||||
#include <boost/iterator/transform_iterator.hpp>
|
#include <boost/iterator/transform_iterator.hpp>
|
||||||
#include <boost/iterator/indirect_iterator.hpp>
|
#include <boost/iterator/indirect_iterator.hpp>
|
||||||
#include <boost/range/iterator_range.hpp>
|
#include <boost/range/iterator_range.hpp>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|||||||
@@ -58,7 +58,10 @@ static const int& nil(nil_);
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
#include <boost/iterator/transform_iterator.hpp>
|
#include <boost/iterator/transform_iterator.hpp>
|
||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/utility/enable_if.hpp>
|
||||||
|
|||||||
@@ -32,7 +32,10 @@
|
|||||||
#include "llevents.h"
|
#include "llevents.h"
|
||||||
#include "stdtypes.h"
|
#include "stdtypes.h"
|
||||||
#include "lltimer.h"
|
#include "lltimer.h"
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic base class
|
* Generic base class
|
||||||
|
|||||||
@@ -56,7 +56,10 @@
|
|||||||
#include <boost/visit_each.hpp>
|
#include <boost/visit_each.hpp>
|
||||||
#include <boost/ref.hpp> // reference_wrapper
|
#include <boost/ref.hpp> // reference_wrapper
|
||||||
#include <boost/type_traits/is_pointer.hpp>
|
#include <boost/type_traits/is_pointer.hpp>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/static_assert.hpp>
|
#include <boost/static_assert.hpp>
|
||||||
#include "llsd.h"
|
#include "llsd.h"
|
||||||
#include "llsingleton.h"
|
#include "llsingleton.h"
|
||||||
|
|||||||
@@ -157,6 +157,7 @@
|
|||||||
|
|
||||||
#if LL_WINDOWS
|
#if LL_WINDOWS
|
||||||
#include "lltimer.h"
|
#include "lltimer.h"
|
||||||
|
#include <intrin.h>
|
||||||
#elif LL_LINUX || LL_SOLARIS
|
#elif LL_LINUX || LL_SOLARIS
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
@@ -184,7 +185,7 @@ LLMutex* LLFastTimer::sLogLock = NULL;
|
|||||||
std::queue<LLSD> LLFastTimer::sLogQueue;
|
std::queue<LLSD> LLFastTimer::sLogQueue;
|
||||||
const int LLFastTimer::NamedTimer::HISTORY_NUM = 300;
|
const int LLFastTimer::NamedTimer::HISTORY_NUM = 300;
|
||||||
|
|
||||||
#if defined(LL_WINDOWS) && !defined(_WIN64)
|
#if defined(LL_WINDOWS)
|
||||||
#define USE_RDTSC 1
|
#define USE_RDTSC 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -952,34 +953,15 @@ LLFastTimer::LLFastTimer(LLFastTimer::FrameState* state)
|
|||||||
#if USE_RDTSC
|
#if USE_RDTSC
|
||||||
U32 LLFastTimer::getCPUClockCount32()
|
U32 LLFastTimer::getCPUClockCount32()
|
||||||
{
|
{
|
||||||
U32 ret_val;
|
return (U32)(__rdtsc()>>8);
|
||||||
__asm
|
|
||||||
{
|
|
||||||
_emit 0x0f
|
|
||||||
_emit 0x31
|
|
||||||
shr eax,8
|
|
||||||
shl edx,24
|
|
||||||
or eax, edx
|
|
||||||
mov dword ptr [ret_val], eax
|
|
||||||
}
|
|
||||||
return ret_val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// return full timer value, *not* shifted by 8 bits
|
// return full timer value, *not* shifted by 8 bits
|
||||||
U64 LLFastTimer::getCPUClockCount64()
|
U64 LLFastTimer::getCPUClockCount64()
|
||||||
{
|
{
|
||||||
U64 ret_val;
|
return (U64)__rdtsc();
|
||||||
__asm
|
|
||||||
{
|
|
||||||
_emit 0x0f
|
|
||||||
_emit 0x31
|
|
||||||
mov eax,eax
|
|
||||||
mov edx,edx
|
|
||||||
mov dword ptr [ret_val+4], edx
|
|
||||||
mov dword ptr [ret_val], eax
|
|
||||||
}
|
|
||||||
return ret_val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
//LL_COMMON_API U64 get_clock_count(); // in lltimer.cpp
|
//LL_COMMON_API U64 get_clock_count(); // in lltimer.cpp
|
||||||
// These use QueryPerformanceCounter, which is arguably fine and also works on AMD architectures.
|
// These use QueryPerformanceCounter, which is arguably fine and also works on AMD architectures.
|
||||||
|
|||||||
@@ -30,7 +30,10 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/type_traits/is_convertible.hpp>
|
#include <boost/type_traits/is_convertible.hpp>
|
||||||
#include <boost/type_traits/is_enum.hpp>
|
#include <boost/type_traits/is_enum.hpp>
|
||||||
|
|||||||
@@ -34,7 +34,10 @@
|
|||||||
#include "llstringtable.h"
|
#include "llstringtable.h"
|
||||||
#include "llerror.h" // llassert_always
|
#include "llerror.h" // llassert_always
|
||||||
#include <boost/utility.hpp>
|
#include <boost/utility.hpp>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
#include <boost/iterator/transform_iterator.hpp>
|
#include <boost/iterator/transform_iterator.hpp>
|
||||||
#include <boost/iterator/indirect_iterator.hpp>
|
#include <boost/iterator/indirect_iterator.hpp>
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
#include <boost/type_traits.hpp>
|
//#include <boost/type_traits.hpp>
|
||||||
|
#include <boost/type_traits/add_reference.hpp>
|
||||||
|
#include <boost/type_traits/add_pointer.hpp>
|
||||||
#include "llsingleton.h"
|
#include "llsingleton.h"
|
||||||
#include "llstl.h"
|
#include "llstl.h"
|
||||||
|
|
||||||
|
|||||||
@@ -35,11 +35,8 @@
|
|||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <map>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
|
||||||
#include <set>
|
|
||||||
#include <deque>
|
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
|
|
||||||
// Use to compare the first element only of a pair
|
// Use to compare the first element only of a pair
|
||||||
@@ -410,7 +407,7 @@ OutputIter ll_transform_n(
|
|||||||
template <class _Pair>
|
template <class _Pair>
|
||||||
struct _LLSelect1st : public std::unary_function<_Pair, typename _Pair::first_type> {
|
struct _LLSelect1st : public std::unary_function<_Pair, typename _Pair::first_type> {
|
||||||
const typename _Pair::first_type& operator()(const _Pair& __x) const {
|
const typename _Pair::first_type& operator()(const _Pair& __x) const {
|
||||||
return __x.first;
|
return __x.first;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -418,7 +415,7 @@ template <class _Pair>
|
|||||||
struct _LLSelect2nd : public std::unary_function<_Pair, typename _Pair::second_type>
|
struct _LLSelect2nd : public std::unary_function<_Pair, typename _Pair::second_type>
|
||||||
{
|
{
|
||||||
const typename _Pair::second_type& operator()(const _Pair& __x) const {
|
const typename _Pair::second_type& operator()(const _Pair& __x) const {
|
||||||
return __x.second;
|
return __x.second;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -438,10 +435,10 @@ protected:
|
|||||||
_Operation2 __op2;
|
_Operation2 __op2;
|
||||||
public:
|
public:
|
||||||
ll_unary_compose(const _Operation1& __x, const _Operation2& __y)
|
ll_unary_compose(const _Operation1& __x, const _Operation2& __y)
|
||||||
: __op1(__x), __op2(__y) {}
|
: __op1(__x), __op2(__y) {}
|
||||||
typename _Operation1::result_type
|
typename _Operation1::result_type
|
||||||
operator()(const typename _Operation2::argument_type& __x) const {
|
operator()(const typename _Operation2::argument_type& __x) const {
|
||||||
return __op1(__op2(__x));
|
return __op1(__op2(__x));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -463,20 +460,20 @@ protected:
|
|||||||
public:
|
public:
|
||||||
ll_binary_compose(const _Operation1& __x, const _Operation2& __y,
|
ll_binary_compose(const _Operation1& __x, const _Operation2& __y,
|
||||||
const _Operation3& __z)
|
const _Operation3& __z)
|
||||||
: _M_op1(__x), _M_op2(__y), _M_op3(__z) { }
|
: _M_op1(__x), _M_op2(__y), _M_op3(__z) { }
|
||||||
typename _Operation1::result_type
|
typename _Operation1::result_type
|
||||||
operator()(const typename _Operation2::argument_type& __x) const {
|
operator()(const typename _Operation2::argument_type& __x) const {
|
||||||
return _M_op1(_M_op2(__x), _M_op3(__x));
|
return _M_op1(_M_op2(__x), _M_op3(__x));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class _Operation1, class _Operation2, class _Operation3>
|
template <class _Operation1, class _Operation2, class _Operation3>
|
||||||
inline ll_binary_compose<_Operation1, _Operation2, _Operation3>
|
inline ll_binary_compose<_Operation1, _Operation2, _Operation3>
|
||||||
llcompose2(const _Operation1& __op1, const _Operation2& __op2,
|
llcompose2(const _Operation1& __op1, const _Operation2& __op2,
|
||||||
const _Operation3& __op3)
|
const _Operation3& __op3)
|
||||||
{
|
{
|
||||||
return ll_binary_compose<_Operation1,_Operation2,_Operation3>
|
return ll_binary_compose<_Operation1,_Operation2,_Operation3>
|
||||||
(__op1, __op2, __op3);
|
(__op1, __op2, __op3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// helpers to deal with the fact that MSDev does not package
|
// helpers to deal with the fact that MSDev does not package
|
||||||
@@ -491,7 +488,7 @@ protected:
|
|||||||
public:
|
public:
|
||||||
llbinder1st(const _Operation& __x,
|
llbinder1st(const _Operation& __x,
|
||||||
const typename _Operation::first_argument_type& __y)
|
const typename _Operation::first_argument_type& __y)
|
||||||
: op(__x), value(__y) {}
|
: op(__x), value(__y) {}
|
||||||
typename _Operation::result_type
|
typename _Operation::result_type
|
||||||
operator()(const typename _Operation::second_argument_type& __x) const {
|
operator()(const typename _Operation::second_argument_type& __x) const {
|
||||||
return op(value, __x);
|
return op(value, __x);
|
||||||
@@ -539,16 +536,16 @@ inline
|
|||||||
bool before(const std::type_info* lhs, const std::type_info* rhs)
|
bool before(const std::type_info* lhs, const std::type_info* rhs)
|
||||||
{
|
{
|
||||||
#if LL_LINUX && defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
|
#if LL_LINUX && defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
|
||||||
// If we're building on Linux with gcc, and it's either gcc 3.x or
|
// If we're building on Linux with gcc, and it's either gcc 3.x or
|
||||||
// 4.{0,1,2,3}, then we have to use a workaround. Note that we use gcc on
|
// 4.{0,1,2,3}, then we have to use a workaround. Note that we use gcc on
|
||||||
// Mac too, and some people build with gcc on Windows (cygwin or mingw).
|
// Mac too, and some people build with gcc on Windows (cygwin or mingw).
|
||||||
// On Linux, different load modules may produce different type_info*
|
// On Linux, different load modules may produce different type_info*
|
||||||
// pointers for the same type. Have to compare name strings to get good
|
// pointers for the same type. Have to compare name strings to get good
|
||||||
// results.
|
// results.
|
||||||
return strcmp(lhs->name(), rhs->name()) < 0;
|
return strcmp(lhs->name(), rhs->name()) < 0;
|
||||||
#else // not Linux, or gcc 4.4+
|
#else // not Linux, or gcc 4.4+
|
||||||
// Just use before(), as we normally would
|
// Just use before(), as we normally would
|
||||||
return lhs->before(*rhs);
|
return lhs->before(*rhs);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -592,10 +589,10 @@ namespace std
|
|||||||
template <typename T, typename U>
|
template <typename T, typename U>
|
||||||
struct ll_template_cast_impl
|
struct ll_template_cast_impl
|
||||||
{
|
{
|
||||||
T operator()(U)
|
T operator()(U)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -637,7 +634,7 @@ struct ll_template_cast_impl
|
|||||||
template <typename T, typename U>
|
template <typename T, typename U>
|
||||||
T ll_template_cast(U value)
|
T ll_template_cast(U value)
|
||||||
{
|
{
|
||||||
return ll_template_cast_impl<T, U>()(value);
|
return ll_template_cast_impl<T, U>()(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -648,10 +645,10 @@ T ll_template_cast(U value)
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
struct ll_template_cast_impl<T, T>
|
struct ll_template_cast_impl<T, T>
|
||||||
{
|
{
|
||||||
T operator()(T value)
|
T operator()(T value)
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -721,10 +718,10 @@ struct ll_template_cast_impl<T, T>
|
|||||||
template <> \
|
template <> \
|
||||||
struct ll_template_cast_impl<DEST, SOURCE> \
|
struct ll_template_cast_impl<DEST, SOURCE> \
|
||||||
{ \
|
{ \
|
||||||
DEST operator()(SOURCE wrapper) \
|
DEST operator()(SOURCE wrapper) \
|
||||||
{ \
|
{ \
|
||||||
return wrapper; \
|
return wrapper; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -81,10 +81,10 @@ void ms_sleep(U32 ms)
|
|||||||
|
|
||||||
U32 micro_sleep(U64 us, U32 max_yields)
|
U32 micro_sleep(U64 us, U32 max_yields)
|
||||||
{
|
{
|
||||||
// max_yields is unused; just fiddle with it to avoid warnings.
|
// max_yields is unused; just fiddle with it to avoid warnings.
|
||||||
max_yields = 0;
|
max_yields = 0;
|
||||||
ms_sleep(us / 1000);
|
ms_sleep(us / 1000);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#elif LL_LINUX || LL_SOLARIS || LL_DARWIN
|
#elif LL_LINUX || LL_SOLARIS || LL_DARWIN
|
||||||
static void _sleep_loop(struct timespec& thiswait)
|
static void _sleep_loop(struct timespec& thiswait)
|
||||||
@@ -103,8 +103,8 @@ static void _sleep_loop(struct timespec& thiswait)
|
|||||||
if (sleep_more)
|
if (sleep_more)
|
||||||
{
|
{
|
||||||
if ( nextwait.tv_sec > thiswait.tv_sec ||
|
if ( nextwait.tv_sec > thiswait.tv_sec ||
|
||||||
(nextwait.tv_sec == thiswait.tv_sec &&
|
(nextwait.tv_sec == thiswait.tv_sec &&
|
||||||
nextwait.tv_nsec >= thiswait.tv_nsec) )
|
nextwait.tv_nsec >= thiswait.tv_nsec) )
|
||||||
{
|
{
|
||||||
// if the remaining time isn't actually going
|
// if the remaining time isn't actually going
|
||||||
// down then we're being shafted by low clock
|
// down then we're being shafted by low clock
|
||||||
@@ -130,31 +130,31 @@ static void _sleep_loop(struct timespec& thiswait)
|
|||||||
|
|
||||||
U32 micro_sleep(U64 us, U32 max_yields)
|
U32 micro_sleep(U64 us, U32 max_yields)
|
||||||
{
|
{
|
||||||
U64 start = get_clock_count();
|
U64 start = get_clock_count();
|
||||||
// This is kernel dependent. Currently, our kernel generates software clock
|
// This is kernel dependent. Currently, our kernel generates software clock
|
||||||
// interrupts at 250 Hz (every 4,000 microseconds).
|
// interrupts at 250 Hz (every 4,000 microseconds).
|
||||||
const U64 KERNEL_SLEEP_INTERVAL_US = 4000;
|
const U64 KERNEL_SLEEP_INTERVAL_US = 4000;
|
||||||
|
|
||||||
S32 num_sleep_intervals = (us - (KERNEL_SLEEP_INTERVAL_US >> 1)) / KERNEL_SLEEP_INTERVAL_US;
|
S32 num_sleep_intervals = (us - (KERNEL_SLEEP_INTERVAL_US >> 1)) / KERNEL_SLEEP_INTERVAL_US;
|
||||||
if (num_sleep_intervals > 0)
|
if (num_sleep_intervals > 0)
|
||||||
{
|
{
|
||||||
U64 sleep_time = (num_sleep_intervals * KERNEL_SLEEP_INTERVAL_US) - (KERNEL_SLEEP_INTERVAL_US >> 1);
|
U64 sleep_time = (num_sleep_intervals * KERNEL_SLEEP_INTERVAL_US) - (KERNEL_SLEEP_INTERVAL_US >> 1);
|
||||||
struct timespec thiswait;
|
struct timespec thiswait;
|
||||||
thiswait.tv_sec = sleep_time / 1000000;
|
thiswait.tv_sec = sleep_time / 1000000;
|
||||||
thiswait.tv_nsec = (sleep_time % 1000000) * 1000l;
|
thiswait.tv_nsec = (sleep_time % 1000000) * 1000l;
|
||||||
_sleep_loop(thiswait);
|
_sleep_loop(thiswait);
|
||||||
}
|
}
|
||||||
|
|
||||||
U64 current_clock = get_clock_count();
|
U64 current_clock = get_clock_count();
|
||||||
U32 yields = 0;
|
U32 yields = 0;
|
||||||
while ( (yields < max_yields)
|
while ( (yields < max_yields)
|
||||||
&& (current_clock - start < us) )
|
&& (current_clock - start < us) )
|
||||||
{
|
{
|
||||||
sched_yield();
|
sched_yield();
|
||||||
++yields;
|
++yields;
|
||||||
current_clock = get_clock_count();
|
current_clock = get_clock_count();
|
||||||
}
|
}
|
||||||
return yields;
|
return yields;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ms_sleep(U32 ms)
|
void ms_sleep(U32 ms)
|
||||||
@@ -163,7 +163,7 @@ void ms_sleep(U32 ms)
|
|||||||
struct timespec thiswait;
|
struct timespec thiswait;
|
||||||
thiswait.tv_sec = ms / 1000;
|
thiswait.tv_sec = ms / 1000;
|
||||||
thiswait.tv_nsec = (mslong % 1000) * 1000000l;
|
thiswait.tv_nsec = (mslong % 1000) * 1000000l;
|
||||||
_sleep_loop(thiswait);
|
_sleep_loop(thiswait);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
# error "architecture not supported"
|
# error "architecture not supported"
|
||||||
@@ -411,15 +411,15 @@ BOOL LLTimer::knownBadTimer()
|
|||||||
|
|
||||||
#if LL_WINDOWS
|
#if LL_WINDOWS
|
||||||
WCHAR bad_pci_list[][10] = {L"1039:0530",
|
WCHAR bad_pci_list[][10] = {L"1039:0530",
|
||||||
L"1039:0620",
|
L"1039:0620",
|
||||||
L"10B9:0533",
|
L"10B9:0533",
|
||||||
L"10B9:1533",
|
L"10B9:1533",
|
||||||
L"1106:0596",
|
L"1106:0596",
|
||||||
L"1106:0686",
|
L"1106:0686",
|
||||||
L"1166:004F",
|
L"1166:004F",
|
||||||
L"1166:0050",
|
L"1166:0050",
|
||||||
L"8086:7110",
|
L"8086:7110",
|
||||||
L"\0"
|
L"\0"
|
||||||
};
|
};
|
||||||
|
|
||||||
HKEY hKey = NULL;
|
HKEY hKey = NULL;
|
||||||
|
|||||||
@@ -63,7 +63,10 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <boost/iterator/iterator_facade.hpp>
|
#include <boost/iterator/iterator_facade.hpp>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/static_assert.hpp>
|
#include <boost/static_assert.hpp>
|
||||||
|
|
||||||
namespace LLTreeIter
|
namespace LLTreeIter
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public:
|
|||||||
BOOL set(const std::string& in_string, BOOL emit = TRUE); // Convert from string, if emit is FALSE, do not emit warnings
|
BOOL set(const std::string& in_string, BOOL emit = TRUE); // Convert from string, if emit is FALSE, do not emit warnings
|
||||||
void setNull(); // Faster than setting to LLUUID::null.
|
void setNull(); // Faster than setting to LLUUID::null.
|
||||||
|
|
||||||
S32 cmpTime(uuid_time_t *t1, uuid_time_t *t2);
|
S32 cmpTime(uuid_time_t *t1, uuid_time_t *t2);
|
||||||
static void getSystemTime(uuid_time_t *timestamp);
|
static void getSystemTime(uuid_time_t *timestamp);
|
||||||
void getCurrentTime(uuid_time_t *timestamp);
|
void getCurrentTime(uuid_time_t *timestamp);
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,10 @@
|
|||||||
#define LL_LLLANDMARK_H
|
#define LL_LLLANDMARK_H
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include "llframetimer.h"
|
#include "llframetimer.h"
|
||||||
#include "lluuid.h"
|
#include "lluuid.h"
|
||||||
#include "v3dmath.h"
|
#include "v3dmath.h"
|
||||||
|
|||||||
@@ -32,7 +32,10 @@
|
|||||||
#include "llrefcount.h"
|
#include "llrefcount.h"
|
||||||
#include "llrefcount.h"
|
#include "llrefcount.h"
|
||||||
#include "llrect.h"
|
#include "llrect.h"
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
#include "llinitparam.h"
|
#include "llinitparam.h"
|
||||||
#include "lltexture.h"
|
#include "lltexture.h"
|
||||||
|
|||||||
@@ -35,7 +35,10 @@
|
|||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
class LLCallbackMap
|
class LLCallbackMap
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,8 +37,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include <boost/function.hpp>
|
|
||||||
|
|
||||||
#include "llsd.h"
|
#include "llsd.h"
|
||||||
#include "llsingleton.h"
|
#include "llsingleton.h"
|
||||||
|
|
||||||
@@ -140,5 +138,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif//LL_LLFUNCTORREGISTRY_H
|
#endif//LL_LLFUNCTORREGISTRY_H
|
||||||
|
|
||||||
|
|||||||
@@ -92,7 +92,6 @@
|
|||||||
#include <boost/utility.hpp>
|
#include <boost/utility.hpp>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/enable_shared_from_this.hpp>
|
#include <boost/enable_shared_from_this.hpp>
|
||||||
#include <boost/type_traits.hpp>
|
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
// we want to minimize external dependencies, but this one is important
|
// we want to minimize external dependencies, but this one is important
|
||||||
@@ -307,7 +306,7 @@ public:
|
|||||||
|
|
||||||
// after someone responds to a notification (usually by clicking a button,
|
// after someone responds to a notification (usually by clicking a button,
|
||||||
// but sometimes by filling out a little form and THEN clicking a button),
|
// but sometimes by filling out a little form and THEN clicking a button),
|
||||||
// the result of the response (the name and value of the button clicked,
|
// the result of the response (the name and value of the button clicked,
|
||||||
// plus any other data) should be packaged up as LLSD, then passed as a
|
// plus any other data) should be packaged up as LLSD, then passed as a
|
||||||
// parameter to the notification's respond() method here. This will look up
|
// parameter to the notification's respond() method here. This will look up
|
||||||
// and call the appropriate responder.
|
// and call the appropriate responder.
|
||||||
@@ -320,7 +319,7 @@ public:
|
|||||||
// ["payload"] = transaction specific data, such as ["source_id"] (originator of notification),
|
// ["payload"] = transaction specific data, such as ["source_id"] (originator of notification),
|
||||||
// ["item_id"] (attached inventory item), etc.
|
// ["item_id"] (attached inventory item), etc.
|
||||||
// ["substitutions"] = string substitutions used to generate notification message
|
// ["substitutions"] = string substitutions used to generate notification message
|
||||||
// from the template
|
// from the template
|
||||||
// ["time"] = time at which notification was generated;
|
// ["time"] = time at which notification was generated;
|
||||||
// ["expiry"] = time at which notification expires;
|
// ["expiry"] = time at which notification expires;
|
||||||
// ["responseFunctor"] = name of registered functor that handles responses to notification;
|
// ["responseFunctor"] = name of registered functor that handles responses to notification;
|
||||||
@@ -514,7 +513,7 @@ namespace LLNotificationComparators
|
|||||||
struct orderBy
|
struct orderBy
|
||||||
{
|
{
|
||||||
typedef boost::function<T (LLNotificationPtr)> field_t;
|
typedef boost::function<T (LLNotificationPtr)> field_t;
|
||||||
orderBy(field_t field, EDirection direction = ORDER_INCREASING) : mField(field), mDirection(direction) {}
|
orderBy(field_t field, EDirection direction = ORDER_INCREASING) : mField(field), mDirection(direction) {}
|
||||||
bool operator()(LLNotificationPtr lhs, LLNotificationPtr rhs)
|
bool operator()(LLNotificationPtr lhs, LLNotificationPtr rhs)
|
||||||
{
|
{
|
||||||
if (mDirection == ORDER_DECREASING)
|
if (mDirection == ORDER_DECREASING)
|
||||||
@@ -636,14 +635,14 @@ public:
|
|||||||
std::string getName() const { return mName; }
|
std::string getName() const { return mName; }
|
||||||
std::string getParentChannelName() { return mParent; }
|
std::string getParentChannelName() { return mParent; }
|
||||||
|
|
||||||
bool isEmpty() const;
|
bool isEmpty() const;
|
||||||
|
|
||||||
Iterator begin();
|
Iterator begin();
|
||||||
Iterator end();
|
Iterator end();
|
||||||
|
|
||||||
// Channels have a comparator to control sort order;
|
// Channels have a comparator to control sort order;
|
||||||
// the default sorts by arrival date
|
// the default sorts by arrival date
|
||||||
void setComparator(LLNotificationComparator comparator);
|
void setComparator(LLNotificationComparator comparator);
|
||||||
|
|
||||||
std::string summarize();
|
std::string summarize();
|
||||||
|
|
||||||
@@ -654,7 +653,7 @@ public:
|
|||||||
LLNotificationComparator comparator=LLNotificationComparators::orderByUUID());
|
LLNotificationComparator comparator=LLNotificationComparators::orderByUUID());
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Notification Channels have a filter, which determines which notifications
|
// Notification Channels have a filter, which determines which notifications
|
||||||
// will be added to this channel.
|
// will be added to this channel.
|
||||||
// Channel filters cannot change.
|
// Channel filters cannot change.
|
||||||
// Channels have a protected constructor so you can't make smart pointers that don't
|
// Channels have a protected constructor so you can't make smart pointers that don't
|
||||||
|
|||||||
@@ -32,7 +32,10 @@
|
|||||||
#include "llnotificationptr.h"
|
#include "llnotificationptr.h"
|
||||||
#include "aialert.h"
|
#include "aialert.h"
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
class LLSD;
|
class LLSD;
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,6 @@
|
|||||||
#include "llcoord.h"
|
#include "llcoord.h"
|
||||||
#include "v2math.h"
|
#include "v2math.h"
|
||||||
#include "llinitparam.h"
|
#include "llinitparam.h"
|
||||||
#include "llregistry.h"
|
|
||||||
#include "llrender2dutils.h"
|
#include "llrender2dutils.h"
|
||||||
#include "llpointer.h"
|
#include "llpointer.h"
|
||||||
#include "lluicolor.h"
|
#include "lluicolor.h"
|
||||||
@@ -206,7 +205,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~LLUIFactory()
|
virtual ~LLUIFactory()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -406,7 +406,7 @@ BOOL LLUICtrl::isCtrl() const
|
|||||||
//virtual
|
//virtual
|
||||||
void LLUICtrl::setValue(const LLSD& value)
|
void LLUICtrl::setValue(const LLSD& value)
|
||||||
{
|
{
|
||||||
mViewModel->setValue(value);
|
mViewModel->setValue(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
//virtual
|
//virtual
|
||||||
@@ -419,10 +419,10 @@ LLSD LLUICtrl::getValue() const
|
|||||||
/// change), share their ViewModel.
|
/// change), share their ViewModel.
|
||||||
void LLUICtrl::shareViewModelFrom(const LLUICtrl& other)
|
void LLUICtrl::shareViewModelFrom(const LLUICtrl& other)
|
||||||
{
|
{
|
||||||
// Because mViewModel is an LLViewModelPtr, this assignment will quietly
|
// Because mViewModel is an LLViewModelPtr, this assignment will quietly
|
||||||
// dispose of the previous LLViewModel -- unless it's already shared by
|
// dispose of the previous LLViewModel -- unless it's already shared by
|
||||||
// somebody else.
|
// somebody else.
|
||||||
mViewModel = other.mViewModel;
|
mViewModel = other.mViewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
//virtual
|
//virtual
|
||||||
@@ -635,7 +635,7 @@ BOOL LLUICtrl::isDirty() const
|
|||||||
//virtual
|
//virtual
|
||||||
void LLUICtrl::resetDirty()
|
void LLUICtrl::resetDirty()
|
||||||
{
|
{
|
||||||
mViewModel->resetDirty();
|
mViewModel->resetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
// virtual
|
// virtual
|
||||||
|
|||||||
@@ -36,7 +36,12 @@
|
|||||||
|
|
||||||
#include "llrect.h"
|
#include "llrect.h"
|
||||||
#include "llsd.h"
|
#include "llsd.h"
|
||||||
|
#include "llregistry.h"
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
#include "llinitparam.h"
|
#include "llinitparam.h"
|
||||||
@@ -128,7 +133,7 @@ public:
|
|||||||
void initFromParams(const Params& p);
|
void initFromParams(const Params& p);
|
||||||
static const Params& getDefaultParams();
|
static const Params& getDefaultParams();
|
||||||
LLUICtrl(const Params& p = getDefaultParams(),
|
LLUICtrl(const Params& p = getDefaultParams(),
|
||||||
const LLViewModelPtr& viewmodel=LLViewModelPtr(new LLViewModel));
|
const LLViewModelPtr& viewmodel=LLViewModelPtr(new LLViewModel));
|
||||||
// Singu Note: This constructor is deprecated:
|
// Singu Note: This constructor is deprecated:
|
||||||
LLUICtrl( const std::string& name, const LLRect rect = LLRect(), BOOL mouse_opaque = TRUE,
|
LLUICtrl( const std::string& name, const LLRect rect = LLRect(), BOOL mouse_opaque = TRUE,
|
||||||
commit_callback_t commit_callback = NULL,
|
commit_callback_t commit_callback = NULL,
|
||||||
@@ -139,8 +144,8 @@ public:
|
|||||||
|
|
||||||
// We need this virtual so we can override it with derived versions
|
// We need this virtual so we can override it with derived versions
|
||||||
virtual LLViewModel* getViewModel() const;
|
virtual LLViewModel* getViewModel() const;
|
||||||
// We shouldn't ever need to set this directly
|
// We shouldn't ever need to set this directly
|
||||||
//virtual void setViewModel(const LLViewModelPtr&);
|
//virtual void setViewModel(const LLViewModelPtr&);
|
||||||
|
|
||||||
virtual BOOL postBuild();
|
virtual BOOL postBuild();
|
||||||
|
|
||||||
@@ -179,9 +184,9 @@ public:
|
|||||||
virtual BOOL getTentative() const;
|
virtual BOOL getTentative() const;
|
||||||
virtual void setValue(const LLSD& value);
|
virtual void setValue(const LLSD& value);
|
||||||
virtual LLSD getValue() const;
|
virtual LLSD getValue() const;
|
||||||
/// When two widgets are displaying the same data (e.g. during a skin
|
/// When two widgets are displaying the same data (e.g. during a skin
|
||||||
/// change), share their ViewModel.
|
/// change), share their ViewModel.
|
||||||
virtual void shareViewModelFrom(const LLUICtrl& other);
|
virtual void shareViewModelFrom(const LLUICtrl& other);
|
||||||
|
|
||||||
virtual BOOL setTextArg( const std::string& key, const LLStringExplicit& text );
|
virtual BOOL setTextArg( const std::string& key, const LLStringExplicit& text );
|
||||||
virtual void setIsChrome(BOOL is_chrome);
|
virtual void setIsChrome(BOOL is_chrome);
|
||||||
@@ -282,7 +287,7 @@ protected:
|
|||||||
|
|
||||||
mouse_signal_t* mDoubleClickSignal;
|
mouse_signal_t* mDoubleClickSignal;
|
||||||
|
|
||||||
LLViewModelPtr mViewModel;
|
LLViewModelPtr mViewModel;
|
||||||
|
|
||||||
LLControlVariable* mEnabledControlVariable;
|
LLControlVariable* mEnabledControlVariable;
|
||||||
boost::signals2::connection mEnabledControlConnection;
|
boost::signals2::connection mEnabledControlConnection;
|
||||||
|
|||||||
@@ -29,7 +29,10 @@
|
|||||||
#define LL_LLURLACTION_H
|
#define LL_LLURLACTION_H
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
/// The LLUrlAction class provides a number of static functions that
|
/// The LLUrlAction class provides a number of static functions that
|
||||||
|
|||||||
@@ -31,7 +31,10 @@
|
|||||||
#include "llregistry.h"
|
#include "llregistry.h"
|
||||||
#include "llxmlnode.h"
|
#include "llxmlnode.h"
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
#include <stack>
|
#include <stack>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|||||||
@@ -28,7 +28,10 @@
|
|||||||
#define LL_LLKEYBOARD_H
|
#define LL_LLKEYBOARD_H
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "llstringtable.h"
|
#include "llstringtable.h"
|
||||||
#include "lltimer.h"
|
#include "lltimer.h"
|
||||||
|
|||||||
@@ -192,13 +192,13 @@ LLFloaterAO::LLFloaterAO()
|
|||||||
{
|
{
|
||||||
// init();
|
// init();
|
||||||
llassert_always(sInstance == NULL);
|
llassert_always(sInstance == NULL);
|
||||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_ao.xml");
|
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_ao.xml");
|
||||||
sInstance = this;
|
sInstance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLFloaterAO::~LLFloaterAO()
|
LLFloaterAO::~LLFloaterAO()
|
||||||
{
|
{
|
||||||
sInstance=NULL;
|
sInstance=NULL;
|
||||||
mcomboBox_stands = 0;
|
mcomboBox_stands = 0;
|
||||||
mcomboBox_walks = 0;
|
mcomboBox_walks = 0;
|
||||||
mcomboBox_runs = 0;
|
mcomboBox_runs = 0;
|
||||||
@@ -221,7 +221,7 @@ LLFloaterAO::~LLFloaterAO()
|
|||||||
|
|
||||||
void LLFloaterAO::show(void*)
|
void LLFloaterAO::show(void*)
|
||||||
{
|
{
|
||||||
if (!sInstance)
|
if (!sInstance)
|
||||||
{
|
{
|
||||||
sInstance = new LLFloaterAO();
|
sInstance = new LLFloaterAO();
|
||||||
updateLayout(sInstance);
|
updateLayout(sInstance);
|
||||||
|
|||||||
@@ -46,7 +46,10 @@
|
|||||||
#include "llinventorymodel.h"
|
#include "llinventorymodel.h"
|
||||||
#include "v3dmath.h"
|
#include "v3dmath.h"
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
|
|||||||
@@ -563,7 +563,7 @@ LLAppViewer::LLAppViewer() :
|
|||||||
LL_ERRS() << "Oh no! An instance of LLAppViewer already exists! LLAppViewer is sort of like a singleton." << LL_ENDL;
|
LL_ERRS() << "Oh no! An instance of LLAppViewer already exists! LLAppViewer is sort of like a singleton." << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mDumpPath ="";
|
mDumpPath ="";
|
||||||
|
|
||||||
// Need to do this initialization before we do anything else, since anything
|
// Need to do this initialization before we do anything else, since anything
|
||||||
// that touches files should really go through the lldir API
|
// that touches files should really go through the lldir API
|
||||||
@@ -703,9 +703,9 @@ bool LLAppViewer::init()
|
|||||||
mDumpPath = logdir;
|
mDumpPath = logdir;
|
||||||
setMiniDumpDir(logdir);
|
setMiniDumpDir(logdir);
|
||||||
logdir += gDirUtilp->getDirDelimiter();
|
logdir += gDirUtilp->getDirDelimiter();
|
||||||
setDebugFileNames(logdir);
|
setDebugFileNames(logdir);
|
||||||
|
|
||||||
mAlloc.setProfilingEnabled(gSavedSettings.getBOOL("MemProfiling"));
|
mAlloc.setProfilingEnabled(gSavedSettings.getBOOL("MemProfiling"));
|
||||||
{
|
{
|
||||||
// Viewer metrics initialization
|
// Viewer metrics initialization
|
||||||
//static LLCachedControl<bool> metrics_submode(gSavedSettings,
|
//static LLCachedControl<bool> metrics_submode(gSavedSettings,
|
||||||
@@ -721,7 +721,7 @@ bool LLAppViewer::init()
|
|||||||
LLViewerAssetStatsFF::init();
|
LLViewerAssetStatsFF::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
initThreads();
|
initThreads();
|
||||||
LL_INFOS("InitInfo") << "Threads initialized." << LL_ENDL ;
|
LL_INFOS("InitInfo") << "Threads initialized." << LL_ENDL ;
|
||||||
|
|
||||||
// Load art UUID information, don't require these strings to be declared in code.
|
// Load art UUID information, don't require these strings to be declared in code.
|
||||||
@@ -756,15 +756,15 @@ bool LLAppViewer::init()
|
|||||||
LLNotifications::instance().createDefaultChannels();
|
LLNotifications::instance().createDefaultChannels();
|
||||||
LL_INFOS("InitInfo") << "Notifications initialized." << LL_ENDL ;
|
LL_INFOS("InitInfo") << "Notifications initialized." << LL_ENDL ;
|
||||||
|
|
||||||
writeSystemInfo();
|
writeSystemInfo();
|
||||||
|
|
||||||
// Build a string representing the current version number.
|
// Build a string representing the current version number.
|
||||||
gCurrentVersion = llformat("%s %d.%d.%d.%d",
|
gCurrentVersion = llformat("%s %d.%d.%d.%d",
|
||||||
gVersionChannel,
|
gVersionChannel,
|
||||||
gVersionMajor,
|
gVersionMajor,
|
||||||
gVersionMinor,
|
gVersionMinor,
|
||||||
gVersionPatch,
|
gVersionPatch,
|
||||||
gVersionBuild );
|
gVersionBuild );
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -774,7 +774,7 @@ bool LLAppViewer::init()
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Various introspection concerning the libs we're using - particularly
|
// Various introspection concerning the libs we're using - particularly
|
||||||
// the libs involved in getting to a full login screen.
|
// the libs involved in getting to a full login screen.
|
||||||
//
|
//
|
||||||
LL_INFOS("InitInfo") << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << LL_ENDL;
|
LL_INFOS("InitInfo") << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << LL_ENDL;
|
||||||
LL_INFOS("InitInfo") << "libcurl version is: " << LLCurl::getVersionString() << LL_ENDL;
|
LL_INFOS("InitInfo") << "libcurl version is: " << LLCurl::getVersionString() << LL_ENDL;
|
||||||
@@ -1055,16 +1055,16 @@ void LLAppViewer::initMaxHeapSize()
|
|||||||
|
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
|
|
||||||
if(fnIsWow64Process && fnIsWow64Process(GetCurrentProcess(), &bWow64Process) && bWow64Process)
|
if(fnIsWow64Process && fnIsWow64Process(GetCurrentProcess(), &bWow64Process) && bWow64Process)
|
||||||
{
|
{
|
||||||
max_heap_size_gb = 3.7f;
|
max_heap_size_gb = 3.7f;
|
||||||
}
|
}
|
||||||
else if(ERROR_SUCCESS == RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management"), &hKey))
|
else if(ERROR_SUCCESS == RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management"), &hKey))
|
||||||
{
|
{
|
||||||
DWORD dwSize = sizeof(DWORD);
|
DWORD dwSize = sizeof(DWORD);
|
||||||
DWORD dwResult = 0;
|
DWORD dwResult = 0;
|
||||||
if(ERROR_SUCCESS == RegQueryValueEx(hKey, TEXT("PhysicalAddressExtension"), NULL, NULL, (LPBYTE)&dwResult, &dwSize))
|
if(ERROR_SUCCESS == RegQueryValueEx(hKey, TEXT("PhysicalAddressExtension"), NULL, NULL, (LPBYTE)&dwResult, &dwSize))
|
||||||
{
|
{
|
||||||
if(dwResult)
|
if(dwResult)
|
||||||
max_heap_size_gb = 3.7f;
|
max_heap_size_gb = 3.7f;
|
||||||
}
|
}
|
||||||
@@ -1149,17 +1149,17 @@ bool LLAppViewer::mainLoop()
|
|||||||
LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
|
LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
|
||||||
joystick->setNeedsReset(true);
|
joystick->setNeedsReset(true);
|
||||||
|
|
||||||
LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop"));
|
LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop"));
|
||||||
|
|
||||||
// merge grid info from web site, if newer.
|
// merge grid info from web site, if newer.
|
||||||
if (gSavedSettings.getBOOL("CheckForGridUpdates"))
|
if (gSavedSettings.getBOOL("CheckForGridUpdates"))
|
||||||
gHippoGridManager->parseUrl();
|
gHippoGridManager->parseUrl();
|
||||||
|
|
||||||
// As we do not (yet) send data on the mainloop LLEventPump that varies
|
// As we do not (yet) send data on the mainloop LLEventPump that varies
|
||||||
// with each frame, no need to instantiate a new LLSD event object each
|
// with each frame, no need to instantiate a new LLSD event object each
|
||||||
// time. Obviously, if that changes, just instantiate the LLSD at the
|
// time. Obviously, if that changes, just instantiate the LLSD at the
|
||||||
// point of posting.
|
// point of posting.
|
||||||
LLSD newFrame;
|
LLSD newFrame;
|
||||||
|
|
||||||
BOOL restore_rendering_masks = FALSE;
|
BOOL restore_rendering_masks = FALSE;
|
||||||
|
|
||||||
@@ -1235,8 +1235,8 @@ bool LLAppViewer::mainLoop()
|
|||||||
mem_leak_instance->idle() ;
|
mem_leak_instance->idle() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
// canonical per-frame event
|
// canonical per-frame event
|
||||||
mainloop.post(newFrame);
|
mainloop.post(newFrame);
|
||||||
|
|
||||||
if (!LLApp::isExiting())
|
if (!LLApp::isExiting())
|
||||||
{
|
{
|
||||||
@@ -1368,24 +1368,24 @@ bool LLAppViewer::mainLoop()
|
|||||||
S32 io_pending = 0;
|
S32 io_pending = 0;
|
||||||
{
|
{
|
||||||
LLFastTimer ftm(FTM_TEXTURE_CACHE);
|
LLFastTimer ftm(FTM_TEXTURE_CACHE);
|
||||||
work_pending += LLAppViewer::getTextureCache()->update(1); // unpauses the texture cache thread
|
work_pending += LLAppViewer::getTextureCache()->update(1); // unpauses the texture cache thread
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
LLFastTimer ftm(FTM_DECODE);
|
LLFastTimer ftm(FTM_DECODE);
|
||||||
work_pending += LLAppViewer::getImageDecodeThread()->update(1); // unpauses the image thread
|
work_pending += LLAppViewer::getImageDecodeThread()->update(1); // unpauses the image thread
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
LLFastTimer ftm(FTM_DECODE);
|
LLFastTimer ftm(FTM_DECODE);
|
||||||
work_pending += LLAppViewer::getTextureFetch()->update(1); // unpauses the texture fetch thread
|
work_pending += LLAppViewer::getTextureFetch()->update(1); // unpauses the texture fetch thread
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
LLFastTimer ftm(FTM_VFS);
|
LLFastTimer ftm(FTM_VFS);
|
||||||
io_pending += LLVFSThread::updateClass(1);
|
io_pending += LLVFSThread::updateClass(1);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
LLFastTimer ftm(FTM_LFS);
|
LLFastTimer ftm(FTM_LFS);
|
||||||
io_pending += LLLFSThread::updateClass(1);
|
io_pending += LLLFSThread::updateClass(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (io_pending > 1000)
|
if (io_pending > 1000)
|
||||||
@@ -1536,7 +1536,7 @@ bool LLAppViewer::cleanup()
|
|||||||
LL_INFOS() << "HUD Objects cleaned up" << LL_ENDL;
|
LL_INFOS() << "HUD Objects cleaned up" << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// End TransferManager before deleting systems it depends on (Audio, VFS, AssetStorage)
|
// End TransferManager before deleting systems it depends on (Audio, VFS, AssetStorage)
|
||||||
#if 0 // this seems to get us stuck in an infinite loop...
|
#if 0 // this seems to get us stuck in an infinite loop...
|
||||||
gTransferManager.cleanup();
|
gTransferManager.cleanup();
|
||||||
#endif
|
#endif
|
||||||
@@ -1667,7 +1667,7 @@ bool LLAppViewer::cleanup()
|
|||||||
|
|
||||||
// *Note: this is where gViewerStats used to be deleted.
|
// *Note: this is where gViewerStats used to be deleted.
|
||||||
|
|
||||||
//end_messaging_system();
|
//end_messaging_system();
|
||||||
|
|
||||||
LLFollowCamMgr::cleanupClass();
|
LLFollowCamMgr::cleanupClass();
|
||||||
//LLVolumeMgr::cleanupClass();
|
//LLVolumeMgr::cleanupClass();
|
||||||
@@ -1797,11 +1797,11 @@ bool LLAppViewer::cleanup()
|
|||||||
sTextureFetch->shutDownTextureCacheThread();
|
sTextureFetch->shutDownTextureCacheThread();
|
||||||
sTextureFetch->shutDownImageDecodeThread();
|
sTextureFetch->shutDownImageDecodeThread();
|
||||||
delete sTextureCache;
|
delete sTextureCache;
|
||||||
sTextureCache = NULL;
|
sTextureCache = NULL;
|
||||||
delete sTextureFetch;
|
delete sTextureFetch;
|
||||||
sTextureFetch = NULL;
|
sTextureFetch = NULL;
|
||||||
delete sImageDecodeThread;
|
delete sImageDecodeThread;
|
||||||
sImageDecodeThread = NULL;
|
sImageDecodeThread = NULL;
|
||||||
|
|
||||||
|
|
||||||
LL_INFOS() << "Cleaning up Media and Textures" << LL_ENDL;
|
LL_INFOS() << "Cleaning up Media and Textures" << LL_ENDL;
|
||||||
@@ -1884,7 +1884,7 @@ bool LLAppViewer::cleanup()
|
|||||||
|
|
||||||
MEM_TRACK_RELEASE
|
MEM_TRACK_RELEASE
|
||||||
|
|
||||||
LL_INFOS() << "Goodbye!" << LL_ENDL;
|
LL_INFOS() << "Goodbye!" << LL_ENDL;
|
||||||
|
|
||||||
// return 0;
|
// return 0;
|
||||||
return true;
|
return true;
|
||||||
@@ -2001,8 +2001,8 @@ bool init_logging()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool LLAppViewer::loadSettingsFromDirectory(AIReadAccess<settings_map_type> const& settings_r,
|
bool LLAppViewer::loadSettingsFromDirectory(AIReadAccess<settings_map_type> const& settings_r,
|
||||||
std::string const& location_key,
|
std::string const& location_key,
|
||||||
bool set_defaults)
|
bool set_defaults)
|
||||||
{
|
{
|
||||||
// Find and vet the location key.
|
// Find and vet the location key.
|
||||||
if(!mSettingsLocationList.has(location_key))
|
if(!mSettingsLocationList.has(location_key))
|
||||||
@@ -2033,7 +2033,7 @@ bool LLAppViewer::loadSettingsFromDirectory(AIReadAccess<settings_map_type> cons
|
|||||||
settings_map_type::const_iterator const settings_group_iter = settings_r->find(settings_group);
|
settings_map_type::const_iterator const settings_group_iter = settings_r->find(settings_group);
|
||||||
|
|
||||||
LL_INFOS() << "Attempting to load settings for the group " << settings_group
|
LL_INFOS() << "Attempting to load settings for the group " << settings_group
|
||||||
<< " - from location " << location_key << LL_ENDL;
|
<< " - from location " << location_key << LL_ENDL;
|
||||||
|
|
||||||
if(settings_group_iter == settings_r->end())
|
if(settings_group_iter == settings_r->end())
|
||||||
{
|
{
|
||||||
@@ -2125,7 +2125,7 @@ bool LLAppViewer::initConfiguration()
|
|||||||
LL_INFOS() << "Loading settings file list" << settings_file_list << LL_ENDL;
|
LL_INFOS() << "Loading settings file list" << settings_file_list << LL_ENDL;
|
||||||
if (0 == settings_control.loadFromFile(settings_file_list))
|
if (0 == settings_control.loadFromFile(settings_file_list))
|
||||||
{
|
{
|
||||||
LL_ERRS() << "Cannot load default configuration file " << settings_file_list << LL_ENDL;
|
LL_ERRS() << "Cannot load default configuration file " << settings_file_list << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mSettingsLocationList = settings_control.getLLSD("Locations");
|
mSettingsLocationList = settings_control.getLLSD("Locations");
|
||||||
@@ -2136,7 +2136,7 @@ bool LLAppViewer::initConfiguration()
|
|||||||
// - set procedural settings values
|
// - set procedural settings values
|
||||||
// - read command line settings
|
// - read command line settings
|
||||||
// - selectively apply settings needed to load user settings.
|
// - selectively apply settings needed to load user settings.
|
||||||
// - load overrides from user_settings
|
// - load overrides from user_settings
|
||||||
// - apply command line settings (to override the overrides)
|
// - apply command line settings (to override the overrides)
|
||||||
// - load per account settings (happens in llstartup
|
// - load per account settings (happens in llstartup
|
||||||
|
|
||||||
@@ -2159,7 +2159,7 @@ bool LLAppViewer::initConfiguration()
|
|||||||
|
|
||||||
// - set procedural settings
|
// - set procedural settings
|
||||||
gSavedSettings.setString("ClientSettingsFile",
|
gSavedSettings.setString("ClientSettingsFile",
|
||||||
gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Global")));
|
gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Global")));
|
||||||
|
|
||||||
gSavedSettings.setString("VersionChannelName", gVersionChannel);
|
gSavedSettings.setString("VersionChannelName", gVersionChannel);
|
||||||
|
|
||||||
@@ -2305,33 +2305,33 @@ bool LLAppViewer::initConfiguration()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(clp.hasOption("set"))
|
if(clp.hasOption("set"))
|
||||||
{
|
{
|
||||||
const LLCommandLineParser::token_vector_t& set_values = clp.getOption("set");
|
const LLCommandLineParser::token_vector_t& set_values = clp.getOption("set");
|
||||||
if(0x1 & set_values.size())
|
if(0x1 & set_values.size())
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Invalid '--set' parameter count." << LL_ENDL;
|
LL_WARNS() << "Invalid '--set' parameter count." << LL_ENDL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LLCommandLineParser::token_vector_t::const_iterator itr = set_values.begin();
|
LLCommandLineParser::token_vector_t::const_iterator itr = set_values.begin();
|
||||||
for(; itr != set_values.end(); ++itr)
|
for(; itr != set_values.end(); ++itr)
|
||||||
{
|
{
|
||||||
const std::string& name = *itr;
|
const std::string& name = *itr;
|
||||||
const std::string& value = *(++itr);
|
const std::string& value = *(++itr);
|
||||||
LLControlVariable* c = settings[sGlobalSettingsName]->getControl(name);
|
LLControlVariable* c = settings[sGlobalSettingsName]->getControl(name);
|
||||||
if(c)
|
if(c)
|
||||||
{
|
{
|
||||||
c->setValue(value, false);
|
c->setValue(value, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LL_WARNS() << "'--set' specified with unknown setting: '"
|
LL_WARNS() << "'--set' specified with unknown setting: '"
|
||||||
<< name << "'." << LL_ENDL;
|
<< name << "'." << LL_ENDL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gHippoGridManager)
|
if (!gHippoGridManager)
|
||||||
{
|
{
|
||||||
@@ -2359,40 +2359,40 @@ bool LLAppViewer::initConfiguration()
|
|||||||
|
|
||||||
// Handle slurl use. NOTE: Don't let SL-55321 reappear.
|
// Handle slurl use. NOTE: Don't let SL-55321 reappear.
|
||||||
|
|
||||||
// *FIX: This init code should be made more robust to prevent
|
// *FIX: This init code should be made more robust to prevent
|
||||||
// the issue SL-55321 from returning. One thought is to allow
|
// the issue SL-55321 from returning. One thought is to allow
|
||||||
// only select options to be set from command line when a slurl
|
// only select options to be set from command line when a slurl
|
||||||
// is specified. More work on the settings system is needed to
|
// is specified. More work on the settings system is needed to
|
||||||
// achieve this. For now...
|
// achieve this. For now...
|
||||||
|
|
||||||
// *NOTE:Mani The command line parser parses tokens and is
|
// *NOTE:Mani The command line parser parses tokens and is
|
||||||
// setup to bail after parsing the '--url' option or the
|
// setup to bail after parsing the '--url' option or the
|
||||||
// first option specified without a '--option' flag (or
|
// first option specified without a '--option' flag (or
|
||||||
// any other option that uses the 'last_option' setting -
|
// any other option that uses the 'last_option' setting -
|
||||||
// see LLControlGroupCLP::configure())
|
// see LLControlGroupCLP::configure())
|
||||||
|
|
||||||
// What can happen is that someone can use IE (or potentially
|
// What can happen is that someone can use IE (or potentially
|
||||||
// other browsers) and do the rough equivalent of command
|
// other browsers) and do the rough equivalent of command
|
||||||
// injection and steal passwords. Phoenix. SL-55321
|
// injection and steal passwords. Phoenix. SL-55321
|
||||||
if(clp.hasOption("url"))
|
if(clp.hasOption("url"))
|
||||||
{
|
{
|
||||||
LLStartUp::setStartSLURL(LLSLURL(clp.getOption("url")[0]));
|
LLStartUp::setStartSLURL(LLSLURL(clp.getOption("url")[0]));
|
||||||
if(LLStartUp::getStartSLURL().getType() == LLSLURL::LOCATION)
|
if(LLStartUp::getStartSLURL().getType() == LLSLURL::LOCATION)
|
||||||
{
|
{
|
||||||
gHippoGridManager->setCurrentGrid(LLStartUp::getStartSLURL().getGrid());
|
gHippoGridManager->setCurrentGrid(LLStartUp::getStartSLURL().getGrid());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(clp.hasOption("slurl"))
|
else if(clp.hasOption("slurl"))
|
||||||
{
|
{
|
||||||
LLSLURL start_slurl(clp.getOption("slurl")[0]);
|
LLSLURL start_slurl(clp.getOption("slurl")[0]);
|
||||||
LLStartUp::setStartSLURL(start_slurl);
|
LLStartUp::setStartSLURL(start_slurl);
|
||||||
}
|
}
|
||||||
|
|
||||||
const LLControlVariable* skinfolder = gSavedSettings.getControl("SkinCurrent");
|
const LLControlVariable* skinfolder = gSavedSettings.getControl("SkinCurrent");
|
||||||
if(skinfolder && LLStringUtil::null != skinfolder->getValue().asString())
|
if(skinfolder && LLStringUtil::null != skinfolder->getValue().asString())
|
||||||
{
|
{
|
||||||
gDirUtilp->setSkinFolder(skinfolder->getValue().asString());
|
gDirUtilp->setSkinFolder(skinfolder->getValue().asString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// XUI:translate
|
// XUI:translate
|
||||||
gSecondLife = "Singularity Viewer";
|
gSecondLife = "Singularity Viewer";
|
||||||
@@ -2460,9 +2460,9 @@ bool LLAppViewer::initConfiguration()
|
|||||||
|
|
||||||
if (!gSavedSettings.getBOOL("AllowMultipleViewers"))
|
if (!gSavedSettings.getBOOL("AllowMultipleViewers"))
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Check for another instance of the app running
|
// Check for another instance of the app running
|
||||||
//
|
//
|
||||||
|
|
||||||
mSecondInstance = anotherInstanceRunning();
|
mSecondInstance = anotherInstanceRunning();
|
||||||
|
|
||||||
@@ -2479,7 +2479,7 @@ bool LLAppViewer::initConfiguration()
|
|||||||
|
|
||||||
initMarkerFile();
|
initMarkerFile();
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mSecondInstance = anotherInstanceRunning();
|
mSecondInstance = anotherInstanceRunning();
|
||||||
@@ -2500,7 +2500,7 @@ bool LLAppViewer::initConfiguration()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// need to do this here - need to have initialized global settings first
|
// need to do this here - need to have initialized global settings first
|
||||||
std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" );
|
std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" );
|
||||||
if ( !nextLoginLocation.empty() )
|
if ( !nextLoginLocation.empty() )
|
||||||
{
|
{
|
||||||
@@ -2584,17 +2584,17 @@ bool LLAppViewer::initWindow()
|
|||||||
|
|
||||||
void LLAppViewer::writeDebugInfo(bool isStatic)
|
void LLAppViewer::writeDebugInfo(bool isStatic)
|
||||||
{
|
{
|
||||||
//Try to do the minimum when writing data during a crash.
|
//Try to do the minimum when writing data during a crash.
|
||||||
std::string* debug_filename;
|
std::string* debug_filename;
|
||||||
debug_filename = ( isStatic
|
debug_filename = ( isStatic
|
||||||
? getStaticDebugFile()
|
? getStaticDebugFile()
|
||||||
: getDynamicDebugFile() );
|
: getDynamicDebugFile() );
|
||||||
|
|
||||||
LL_INFOS() << "Opening debug file " << *debug_filename << LL_ENDL;
|
LL_INFOS() << "Opening debug file " << *debug_filename << LL_ENDL;
|
||||||
llofstream out_file(*debug_filename);
|
llofstream out_file(*debug_filename);
|
||||||
|
|
||||||
isStatic ? LLSDSerialize::toPrettyXML(gDebugInfo, out_file)
|
isStatic ? LLSDSerialize::toPrettyXML(gDebugInfo, out_file)
|
||||||
: LLSDSerialize::toPrettyXML(gDebugInfo["Dynamic"], out_file);
|
: LLSDSerialize::toPrettyXML(gDebugInfo["Dynamic"], out_file);
|
||||||
|
|
||||||
|
|
||||||
out_file.close();
|
out_file.close();
|
||||||
@@ -2648,8 +2648,8 @@ void LLAppViewer::removeCacheFiles(const std::string& file_mask)
|
|||||||
void LLAppViewer::writeSystemInfo()
|
void LLAppViewer::writeSystemInfo()
|
||||||
{
|
{
|
||||||
|
|
||||||
if (! gDebugInfo.has("Dynamic") )
|
if (! gDebugInfo.has("Dynamic") )
|
||||||
gDebugInfo["Dynamic"] = LLSD::emptyMap();
|
gDebugInfo["Dynamic"] = LLSD::emptyMap();
|
||||||
|
|
||||||
gDebugInfo["SLLog"] = LLError::logFileName();
|
gDebugInfo["SLLog"] = LLError::logFileName();
|
||||||
|
|
||||||
@@ -2848,7 +2848,7 @@ void LLAppViewer::handleViewerCrash()
|
|||||||
gDebugInfo["Dynamic"]["MinidumpPath"] = minidump_file;
|
gDebugInfo["Dynamic"]["MinidumpPath"] = minidump_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
gDebugInfo["Dynamic"]["CrashType"]="crash";
|
gDebugInfo["Dynamic"]["CrashType"]="crash";
|
||||||
|
|
||||||
if (gMessageSystem && gDirUtilp)
|
if (gMessageSystem && gDirUtilp)
|
||||||
{
|
{
|
||||||
@@ -3021,10 +3021,10 @@ void LLAppViewer::removeMarkerFile(bool leave_logout_marker)
|
|||||||
|
|
||||||
void LLAppViewer::removeDumpDir()
|
void LLAppViewer::removeDumpDir()
|
||||||
{
|
{
|
||||||
//Call this routine only on clean exit. Crash reporter will clean up
|
//Call this routine only on clean exit. Crash reporter will clean up
|
||||||
//its locking table for us.
|
//its locking table for us.
|
||||||
std::string dump_dir = gDirUtilp->getExpandedFilename(LL_PATH_DUMP, "");
|
std::string dump_dir = gDirUtilp->getExpandedFilename(LL_PATH_DUMP, "");
|
||||||
gDirUtilp->deleteDirAndContents(dump_dir);
|
gDirUtilp->deleteDirAndContents(dump_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLAppViewer::forceQuit()
|
void LLAppViewer::forceQuit()
|
||||||
@@ -3130,7 +3130,7 @@ static bool finish_early_exit(const LLSD& notification, const LLSD& response)
|
|||||||
|
|
||||||
void LLAppViewer::earlyExit(const std::string& name, const LLSD& substitutions)
|
void LLAppViewer::earlyExit(const std::string& name, const LLSD& substitutions)
|
||||||
{
|
{
|
||||||
LL_WARNS() << "app_early_exit: " << name << LL_ENDL;
|
LL_WARNS() << "app_early_exit: " << name << LL_ENDL;
|
||||||
gDoDisconnect = TRUE;
|
gDoDisconnect = TRUE;
|
||||||
LLNotificationsUtil::add(name, substitutions, LLSD(), finish_early_exit);
|
LLNotificationsUtil::add(name, substitutions, LLSD(), finish_early_exit);
|
||||||
}
|
}
|
||||||
@@ -3138,7 +3138,7 @@ void LLAppViewer::earlyExit(const std::string& name, const LLSD& substitutions)
|
|||||||
|
|
||||||
void LLAppViewer::abortQuit()
|
void LLAppViewer::abortQuit()
|
||||||
{
|
{
|
||||||
LL_INFOS() << "abortQuit()" << LL_ENDL;
|
LL_INFOS() << "abortQuit()" << LL_ENDL;
|
||||||
mQuitRequested = false;
|
mQuitRequested = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3215,39 +3215,39 @@ void LLAppViewer::migrateCacheDirectory()
|
|||||||
|
|
||||||
void dumpVFSCaches()
|
void dumpVFSCaches()
|
||||||
{
|
{
|
||||||
LL_INFOS() << "======= Static VFS ========" << LL_ENDL;
|
LL_INFOS() << "======= Static VFS ========" << LL_ENDL;
|
||||||
gStaticVFS->listFiles();
|
gStaticVFS->listFiles();
|
||||||
#if LL_WINDOWS
|
#if LL_WINDOWS
|
||||||
LL_INFOS() << "======= Dumping static VFS to StaticVFSDump ========" << LL_ENDL;
|
LL_INFOS() << "======= Dumping static VFS to StaticVFSDump ========" << LL_ENDL;
|
||||||
WCHAR w_str[MAX_PATH];
|
WCHAR w_str[MAX_PATH];
|
||||||
GetCurrentDirectory(MAX_PATH, w_str);
|
GetCurrentDirectory(MAX_PATH, w_str);
|
||||||
S32 res = LLFile::mkdir("StaticVFSDump");
|
S32 res = LLFile::mkdir("StaticVFSDump");
|
||||||
if (res == -1)
|
if (res == -1)
|
||||||
{
|
{
|
||||||
if (errno != EEXIST)
|
if (errno != EEXIST)
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Couldn't create dir StaticVFSDump" << LL_ENDL;
|
LL_WARNS() << "Couldn't create dir StaticVFSDump" << LL_ENDL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetCurrentDirectory(utf8str_to_utf16str("StaticVFSDump").c_str());
|
SetCurrentDirectory(utf8str_to_utf16str("StaticVFSDump").c_str());
|
||||||
gStaticVFS->dumpFiles();
|
gStaticVFS->dumpFiles();
|
||||||
SetCurrentDirectory(w_str);
|
SetCurrentDirectory(w_str);
|
||||||
#endif
|
#endif
|
||||||
LL_INFOS() << "========= Dynamic VFS ====" << LL_ENDL;
|
LL_INFOS() << "========= Dynamic VFS ====" << LL_ENDL;
|
||||||
gVFS->listFiles();
|
gVFS->listFiles();
|
||||||
#if LL_WINDOWS
|
#if LL_WINDOWS
|
||||||
LL_INFOS() << "========= Dumping dynamic VFS to VFSDump ====" << LL_ENDL;
|
LL_INFOS() << "========= Dumping dynamic VFS to VFSDump ====" << LL_ENDL;
|
||||||
res = LLFile::mkdir("VFSDump");
|
res = LLFile::mkdir("VFSDump");
|
||||||
if (res == -1)
|
if (res == -1)
|
||||||
{
|
{
|
||||||
if (errno != EEXIST)
|
if (errno != EEXIST)
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Couldn't create dir VFSDump" << LL_ENDL;
|
LL_WARNS() << "Couldn't create dir VFSDump" << LL_ENDL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetCurrentDirectory(utf8str_to_utf16str("VFSDump").c_str());
|
SetCurrentDirectory(utf8str_to_utf16str("VFSDump").c_str());
|
||||||
gVFS->dumpFiles();
|
gVFS->dumpFiles();
|
||||||
SetCurrentDirectory(w_str);
|
SetCurrentDirectory(w_str);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3544,7 +3544,7 @@ bool finish_disconnect(const LLSD& notification, const LLSD& response)
|
|||||||
|
|
||||||
if (1 == option)
|
if (1 == option)
|
||||||
{
|
{
|
||||||
LLAppViewer::instance()->forceQuit();
|
LLAppViewer::instance()->forceQuit();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -3560,11 +3560,11 @@ bool finish_forced_disconnect(const LLSD& notification, const LLSD& response)
|
|||||||
void LLAppViewer::forceDisconnect(const std::string& mesg)
|
void LLAppViewer::forceDisconnect(const std::string& mesg)
|
||||||
{
|
{
|
||||||
if (gDoDisconnect)
|
if (gDoDisconnect)
|
||||||
{
|
{
|
||||||
// Already popped up one of these dialogs, don't
|
// Already popped up one of these dialogs, don't
|
||||||
// do this again.
|
// do this again.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Translate the message if possible
|
// Translate the message if possible
|
||||||
std::string big_reason = LLAgent::sTeleportErrorMessages[mesg];
|
std::string big_reason = LLAgent::sTeleportErrorMessages[mesg];
|
||||||
@@ -4297,7 +4297,7 @@ void LLAppViewer::sendLogoutRequest()
|
|||||||
if (mLogoutMarkerFile)
|
if (mLogoutMarkerFile)
|
||||||
{
|
{
|
||||||
LL_INFOS() << "Created logout marker file " << mLogoutMarkerFileName << LL_ENDL;
|
LL_INFOS() << "Created logout marker file " << mLogoutMarkerFileName << LL_ENDL;
|
||||||
apr_file_close(mLogoutMarkerFile);
|
apr_file_close(mLogoutMarkerFile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -4333,15 +4333,15 @@ void LLAppViewer::idleNameCache()
|
|||||||
if (have_capability)
|
if (have_capability)
|
||||||
{
|
{
|
||||||
// we have support for display names, use it
|
// we have support for display names, use it
|
||||||
U32 url_size = name_lookup_url.size();
|
U32 url_size = name_lookup_url.size();
|
||||||
// capabilities require URLs with slashes before query params:
|
// capabilities require URLs with slashes before query params:
|
||||||
// https://<host>:<port>/cap/<uuid>/?ids=<blah>
|
// https://<host>:<port>/cap/<uuid>/?ids=<blah>
|
||||||
// but the caps are granted like:
|
// but the caps are granted like:
|
||||||
// https://<host>:<port>/cap/<uuid>
|
// https://<host>:<port>/cap/<uuid>
|
||||||
if (url_size > 0 && name_lookup_url[url_size-1] != '/')
|
if (url_size > 0 && name_lookup_url[url_size-1] != '/')
|
||||||
{
|
{
|
||||||
name_lookup_url += '/';
|
name_lookup_url += '/';
|
||||||
}
|
}
|
||||||
LLAvatarNameCache::setNameLookupURL(name_lookup_url);
|
LLAvatarNameCache::setNameLookupURL(name_lookup_url);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -4476,7 +4476,7 @@ void LLAppViewer::idleNetwork()
|
|||||||
LLUUID this_region_id = agent_region->getRegionID();
|
LLUUID this_region_id = agent_region->getRegionID();
|
||||||
bool this_region_alive = agent_region->isAlive();
|
bool this_region_alive = agent_region->isAlive();
|
||||||
if ((mAgentRegionLastAlive && !this_region_alive) // newly dead
|
if ((mAgentRegionLastAlive && !this_region_alive) // newly dead
|
||||||
&& (mAgentRegionLastID == this_region_id)) // same region
|
&& (mAgentRegionLastID == this_region_id)) // same region
|
||||||
{
|
{
|
||||||
forceDisconnect(LLTrans::getString("AgentLostConnection"));
|
forceDisconnect(LLTrans::getString("AgentLostConnection"));
|
||||||
}
|
}
|
||||||
@@ -4492,7 +4492,7 @@ void LLAppViewer::idleAudio()
|
|||||||
|
|
||||||
if (gAudiop)
|
if (gAudiop)
|
||||||
{
|
{
|
||||||
audio_update_volume();
|
audio_update_volume();
|
||||||
audio_update_listener();
|
audio_update_listener();
|
||||||
|
|
||||||
// this line actually commits the changes we've made to source positions, etc.
|
// this line actually commits the changes we've made to source positions, etc.
|
||||||
@@ -4632,37 +4632,37 @@ void LLAppViewer::disconnectViewer()
|
|||||||
|
|
||||||
void LLAppViewer::forceErrorLLError()
|
void LLAppViewer::forceErrorLLError()
|
||||||
{
|
{
|
||||||
LL_ERRS() << "This is an llerror" << LL_ENDL;
|
LL_ERRS() << "This is an llerror" << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLAppViewer::forceErrorBreakpoint()
|
void LLAppViewer::forceErrorBreakpoint()
|
||||||
{
|
{
|
||||||
#ifdef LL_WINDOWS
|
#ifdef LL_WINDOWS
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLAppViewer::forceErrorBadMemoryAccess()
|
void LLAppViewer::forceErrorBadMemoryAccess()
|
||||||
{
|
{
|
||||||
S32* crash = NULL;
|
S32* crash = NULL;
|
||||||
*crash = 0xDEADBEEF;
|
*crash = 0xDEADBEEF;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLAppViewer::forceErrorInfiniteLoop()
|
void LLAppViewer::forceErrorInfiniteLoop()
|
||||||
{
|
{
|
||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLAppViewer::forceErrorSoftwareException()
|
void LLAppViewer::forceErrorSoftwareException()
|
||||||
{
|
{
|
||||||
// *FIX: Any way to insure it won't be handled?
|
// *FIX: Any way to insure it won't be handled?
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLAppViewer::forceErrorDriverCrash()
|
void LLAppViewer::forceErrorDriverCrash()
|
||||||
|
|||||||
@@ -48,7 +48,10 @@
|
|||||||
#include "llfloater.h"
|
#include "llfloater.h"
|
||||||
#include "llinstancetracker.h"
|
#include "llinstancetracker.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
class LLUICtrl;
|
class LLUICtrl;
|
||||||
|
|||||||
@@ -27,7 +27,10 @@
|
|||||||
#ifndef LL_LLLANDMARKLIST_H
|
#ifndef LL_LLLANDMARKLIST_H
|
||||||
#define LL_LLLANDMARKLIST_H
|
#define LL_LLLANDMARKLIST_H
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "lllandmark.h"
|
#include "lllandmark.h"
|
||||||
#include "lluuid.h"
|
#include "lluuid.h"
|
||||||
|
|||||||
@@ -30,7 +30,10 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <llsd.h>
|
#include <llsd.h>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
#include "llsingleton.h"
|
#include "llsingleton.h"
|
||||||
|
|||||||
@@ -30,7 +30,10 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <llsd.h>
|
#include <llsd.h>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -39,7 +39,10 @@
|
|||||||
#include "lluploadfloaterobservers.h"
|
#include "lluploadfloaterobservers.h"
|
||||||
#include "aistatemachinethread.h"
|
#include "aistatemachinethread.h"
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
class LLVOVolume;
|
class LLVOVolume;
|
||||||
class LLMeshResponder;
|
class LLMeshResponder;
|
||||||
|
|||||||
@@ -65,7 +65,10 @@
|
|||||||
#include "llwearablelist.h"
|
#include "llwearablelist.h"
|
||||||
#include "llinventoryicon.h"
|
#include "llinventoryicon.h"
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
// subparts of the UI for focus, camera position, etc.
|
// subparts of the UI for focus, camera position, etc.
|
||||||
enum ESubpart
|
enum ESubpart
|
||||||
|
|||||||
@@ -34,7 +34,10 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,10 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
#include "llpathfindinglinkset.h"
|
#include "llpathfindinglinkset.h"
|
||||||
|
|||||||
@@ -30,7 +30,10 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
#include "llpathfindingnavmeshstatus.h"
|
#include "llpathfindingnavmeshstatus.h"
|
||||||
|
|||||||
@@ -30,7 +30,10 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
#include "llavatarname.h"
|
#include "llavatarname.h"
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ LLPreviewTexture::LLPreviewTexture(const std::string& name,
|
|||||||
mLoadingFullImage( FALSE ),
|
mLoadingFullImage( FALSE ),
|
||||||
mShowKeepDiscard(show_keep_discard),
|
mShowKeepDiscard(show_keep_discard),
|
||||||
mCopyToInv(FALSE),
|
mCopyToInv(FALSE),
|
||||||
mIsCopyable(FALSE),
|
mIsCopyable(FALSE),
|
||||||
mUpdateDimensions(TRUE),
|
mUpdateDimensions(TRUE),
|
||||||
mLastHeight(0),
|
mLastHeight(0),
|
||||||
mLastWidth(0),
|
mLastWidth(0),
|
||||||
mAspectRatio(0.f),
|
mAspectRatio(0.f),
|
||||||
|
|||||||
@@ -33,7 +33,10 @@
|
|||||||
#include "llparcelselection.h"
|
#include "llparcelselection.h"
|
||||||
#include "llui.h"
|
#include "llui.h"
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
class LLUUID;
|
class LLUUID;
|
||||||
|
|||||||
@@ -33,7 +33,10 @@
|
|||||||
#ifndef LL_LLTHREADWATCHDOG_H
|
#ifndef LL_LLTHREADWATCHDOG_H
|
||||||
#define LL_LLTHREADWATCHDOG_H
|
#define LL_LLTHREADWATCHDOG_H
|
||||||
|
|
||||||
|
#ifndef BOOST_FUNCTION_HPP_INCLUDED
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
|
#define BOOST_FUNCTION_HPP_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef LL_TIMER_H
|
#ifndef LL_TIMER_H
|
||||||
#include "lltimer.h"
|
#include "lltimer.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user