diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp index 29c1d82d6611822441bdfe2330a60de987dcabb3..3eeca6fd2ecb94808fc9ced61c6eae04a0803086 100644 --- a/indra/llcommon/llqueuedthread.cpp +++ b/indra/llcommon/llqueuedthread.cpp @@ -467,8 +467,9 @@ S32 LLQueuedThread::processNextRequest() yield(); } } - +#ifndef LL_RELEASE_FOR_DOWNLOAD LLTrace::get_thread_recorder()->pushToParent(); +#endif } S32 pending = getPending(); @@ -497,7 +498,9 @@ void LLQueuedThread::run() if (isQuitting()) { +#ifndef LL_RELEASE_FOR_DOWNLOAD LLTrace::get_thread_recorder()->pushToParent(); +#endif endThread(); break; } diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index e6d32996ff180a548868f6a420c965acfb456ab2..ee1da9a987eb2a42513fa9c5147b544377fa7988 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -138,8 +138,10 @@ void LLThread::threadRun() // this is the first point at which we're actually running in the new thread mID = currentID(); +#ifndef LL_RELEASE_FOR_DOWNLOAD // for now, hard code all LLThreads to report to single master thread recorder, which is known to be running on main thread mRecorder = new LLTrace::ThreadRecorder(*LLTrace::get_master_thread_recorder()); +#endif // Run the user supplied function do @@ -164,9 +166,10 @@ void LLThread::threadRun() //LL_INFOS() << "LLThread::staticRun() Exiting: " << threadp->mName << LL_ENDL; - +#ifndef LL_RELEASE_FOR_DOWNLOAD delete mRecorder; mRecorder = NULL; +#endif // We're done with the run function, this thread is done executing now. //NB: we are using this flag to sync across threads...we really need memory barriers here @@ -179,8 +182,10 @@ LLThread::LLThread(const std::string& name, apr_pool_t *poolp) : mPaused(FALSE), mName(name), mThreadp(NULL), - mStatus(STOPPED), - mRecorder(NULL) + mStatus(STOPPED) +#ifndef LL_RELEASE_FOR_DOWNLOAD + , mRecorder(NULL) +#endif { mRunCondition = new LLCondition(); mDataLock = new LLMutex(); @@ -250,9 +255,10 @@ void LLThread::shutdown() #else pthread_cancel(mNativeHandle); #endif - +#ifndef LL_RELEASE_FOR_DOWNLOAD delete mRecorder; mRecorder = NULL; +#endif mStatus = STOPPED; return; } @@ -265,7 +271,7 @@ void LLThread::shutdown() delete mDataLock; mDataLock = NULL; - +#ifndef LL_RELEASE_FOR_DOWNLOAD if (mRecorder) { // missed chance to properly shut down recorder (needs to be done in thread context) @@ -273,6 +279,7 @@ void LLThread::shutdown() // so just leak it and remove it from parent LLTrace::get_master_thread_recorder()->removeChildRecorder(mRecorder); } +#endif } diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h index 5db13db41abff6e10ddb706d3e5bfb1d81a5528b..6cbf0e6373d79261af7fe6fe99b7dd3334567075 100644 --- a/indra/llcommon/llthread.h +++ b/indra/llcommon/llthread.h @@ -106,7 +106,9 @@ class LL_COMMON_API LLThread std::thread *mThreadp; EThreadStatus mStatus; id_t mID; +#ifndef LL_RELEASE_FOR_DOWNLOAD LLTrace::ThreadRecorder* mRecorder; +#endif //a local apr_pool for APRFile operations in this thread. If it exists, LLAPRFile::sAPRFilePoolp should not be used. //Note: this pool is used by APRFile ONLY, do NOT use it for any other purposes. diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 94891da2f592d4f80d9d0482392614dc23434f01..d9a9727e1a4d9328dc56525a2535a273fe669eb1 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -2071,14 +2071,17 @@ bool LLTextureFetchWorker::doWork(S32 param) // virtual void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response) { +#ifndef LL_RELEASE_FOR_DOWNLOAD static LLCachedControl<bool> log_to_viewer_log(gSavedSettings, "LogTextureDownloadsToViewerLog", false); static LLCachedControl<bool> log_to_sim(gSavedSettings, "LogTextureDownloadsToSimulator", false); +#endif static LLCachedControl<bool> log_texture_traffic(gSavedSettings, "LogTextureNetworkTraffic", false) ; LLMutexLock lock(&mWorkMutex); // +Mw mHttpActive = false; +#ifndef LL_RELEASE_FOR_DOWNLOAD if (log_to_viewer_log || log_to_sim) { mFetcher->mTextureInfo.setRequestStartTime(mID, mMetricsStartTime.value()); @@ -2087,6 +2090,7 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe mFetcher->mTextureInfo.setRequestOffset(mID, mRequestedOffset); mFetcher->mTextureInfo.setRequestCompleteTimeAndLog(mID, LLTimer::getTotalTime()); } +#endif static LLCachedControl<F32> fake_failure_rate(gSavedSettings, "TextureFetchFakeFailureRate", 0.0f); F32 rand_val = ll_frand(); @@ -2633,11 +2637,15 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image mFetchDebugger(NULL), mFetchSource(LLTextureFetch::FROM_ALL), mOriginFetchSource(LLTextureFetch::FROM_ALL), - mFetcherLocked(FALSE), - mTextureInfoMainThread(false) + mFetcherLocked(FALSE) +#ifndef LL_RELEASE_FOR_DOWNLOAD + , mTextureInfoMainThread(false) +#endif { mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS"); +#ifndef LL_RELEASE_FOR_DOWNLOAD mTextureInfo.setLogging(true); +#endif LLAppCoreHttp & app_core_http(LLAppViewer::instance()->getAppCoreHttp()); mHttpRequest = new LLCore::HttpRequest; @@ -3182,7 +3190,9 @@ void LLTextureFetch::shutDownImageDecodeThread() // Threads: Ttf void LLTextureFetch::startThread() { +#ifndef LL_RELEASE_FOR_DOWNLOAD mTextureInfo.startRecording(); +#endif } // Threads: Ttf @@ -3193,8 +3203,9 @@ void LLTextureFetch::endThread() << ", ResWaits: " << mTotalResourceWaitCount << ", TotalHTTPReq: " << getTotalNumHTTPRequests() << LL_ENDL; - +#ifndef LL_RELEASE_FOR_DOWNLOAD mTextureInfo.stopRecording(); +#endif } // Threads: Ttf @@ -3340,6 +3351,7 @@ void LLTextureFetch::sendRequestListToSimulators() // LL_INFOS(LOG_TXT) << "IMAGE REQUEST: " << req->mID << " Discard: " << req->mDesiredDiscard // << " Packet: " << packet << " Priority: " << req->mImagePriority << LL_ENDL; +#ifndef LL_RELEASE_FOR_DOWNLOAD static LLCachedControl<bool> log_to_viewer_log(gSavedSettings,"LogTextureDownloadsToViewerLog", false); static LLCachedControl<bool> log_to_sim(gSavedSettings,"LogTextureDownloadsToSimulator", false); if (log_to_viewer_log || log_to_sim) @@ -3349,6 +3361,7 @@ void LLTextureFetch::sendRequestListToSimulators() mTextureInfo.setRequestSize(req->mID, 0); mTextureInfo.setRequestType(req->mID, LLTextureInfoDetails::REQUEST_TYPE_UDP); } +#endif req->lockWorkMutex(); // +Mw req->mSentRequest = LLTextureFetchWorker::SENT_SIM; @@ -3587,6 +3600,7 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1 removeFromNetworkQueue(worker, true); // failsafe } +#ifndef LL_RELEASE_FOR_DOWNLOAD if (packet_num >= (worker->mTotalPackets - 1)) { static LLCachedControl<bool> log_to_viewer_log(gSavedSettings,"LogTextureDownloadsToViewerLog", false); @@ -3599,6 +3613,7 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1 mTextureInfoMainThread.setRequestCompleteTimeAndLog(id, timeNow); } } +#endif worker->unlockWorkMutex(); // -Mw return res; diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index ac03a4a9e6086a500bb5a52214918360aaeed5e6..2863a73bb66cac85355524220a60524c00bc8628 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -334,8 +334,10 @@ class LLTextureFetch : public LLWorkerThread cancel_queue_t mCancelQueue; // Mfnq F32 mTextureBandwidth; // <none> std::atomic<F32> mMaxBandwidth; +#ifndef LL_RELEASE_FOR_DOWNLOAD LLTextureInfo mTextureInfo; LLTextureInfo mTextureInfoMainThread; +#endif // XXX possible delete std::atomic<U32Bits> mHTTPTextureBits;