From 7399c39a2fef7ffaa232047bf2ea16ebef682506 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Thu, 2 Sep 2010 19:13:48 -0500 Subject: Fix for crash when loading models (Don't hit UI from the main thread). Added asserts to LLFastTimer to verify main thread use only. --- indra/llcommon/llfasttimer_class.h | 8 ++++++++ indra/llcommon/llthread.cpp | 9 +++++++++ 2 files changed, 17 insertions(+) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llfasttimer_class.h b/indra/llcommon/llfasttimer_class.h index ddb1a74793..d348888832 100644 --- a/indra/llcommon/llfasttimer_class.h +++ b/indra/llcommon/llfasttimer_class.h @@ -37,12 +37,17 @@ #define FAST_TIMER_ON 1 #define TIME_FAST_TIMERS 0 +#define DEBUG_FAST_TIMER_THREADS 1 class LLMutex; #include #include "llsd.h" +#if DEBUG_FAST_TIMER_THREADS +void assert_main_thread(); +#endif + class LL_COMMON_API LLFastTimer { public: @@ -181,6 +186,9 @@ public: #if TIME_FAST_TIMERS U64 timer_end = getCPUClockCount64(); sTimerCycles += timer_end - timer_start; +#endif +#if DEBUG_FAST_TIMER_THREADS + assert_main_thread(); #endif } diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index 0385569a02..10cc409c6e 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -68,6 +68,15 @@ U32 ll_thread_local sThreadID = 0; U32 LLThread::sIDIter = 0; +void assert_main_thread() +{ + static U32 s_thread_id = LLThread::currentID(); + if (LLThread::currentID() != s_thread_id) + { + llerrs << "Illegal execution outside main thread." << llendl; + } +} + // // Handed to the APR thread creation function // -- cgit v1.2.3