From f660f1f0fda4d2363d351fa550b4f8818b46c2c3 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Thu, 18 Apr 2024 02:46:18 +0300 Subject: viewer#1260 Fix thumbnail preview not loading Standard and scaled textures couldn't share workers and if one finished a request, second one failed to start a new one. --- indra/newview/lltexturefetch.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'indra/newview/lltexturefetch.cpp') diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 40bbe2b934..174af406ec 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -2509,12 +2509,13 @@ LLTextureFetch::~LLTextureFetch() } S32 LLTextureFetch::createRequest(FTType f_type, const std::string& url, const LLUUID& id, const LLHost& host, F32 priority, - S32 w, S32 h, S32 c, S32 desired_discard, bool needs_aux, bool can_use_http) + S32 w, S32 h, S32 c, S32 desired_discard, bool needs_aux, bool can_use_http, S32& worker_discard) { LL_PROFILE_ZONE_SCOPED; + worker_discard = -1; if (mDebugPause) { - return -1; + return FETCH_REQUEST_CREATION_FAILED; } if (f_type == FTT_SERVER_BAKE) @@ -2530,7 +2531,7 @@ S32 LLTextureFetch::createRequest(FTType f_type, const std::string& url, const L << host << " != " << worker->mHost << LL_ENDL; removeRequest(worker, true); worker = NULL; - return -1; + return FETCH_REQUEST_ABORTED; } } @@ -2583,13 +2584,14 @@ S32 LLTextureFetch::createRequest(FTType f_type, const std::string& url, const L { if (worker->wasAborted()) { - return -1; // need to wait for previous aborted request to complete + return FETCH_REQUEST_ABORTED; // need to wait for previous aborted request to complete } + worker_discard = desired_discard; worker->lockWorkMutex(); // +Mw if (worker->mState == LLTextureFetchWorker::DONE && worker->mDesiredSize == llmax(desired_size, TEXTURE_CACHE_ENTRY_SIZE) && worker->mDesiredDiscard == desired_discard) { worker->unlockWorkMutex(); // -Mw - return -1; // similar request has failed or is in a transitional state + return FETCH_REQUEST_EXISTS; // similar request has failed or is in a transitional state } worker->mActiveCount++; worker->mNeedsAux = needs_aux; @@ -2623,11 +2625,12 @@ S32 LLTextureFetch::createRequest(FTType f_type, const std::string& url, const L worker->mNeedsAux = needs_aux; worker->setCanUseHTTP(can_use_http) ; worker->unlockWorkMutex(); // -Mw + worker_discard = desired_discard; } LL_DEBUGS(LOG_TXT) << "REQUESTED: " << id << " f_type " << fttype_to_string(f_type) << " Discard: " << desired_discard << " size " << desired_size << LL_ENDL; - return desired_discard; + return FETCH_REQUEST_OK; } // Threads: T* // -- cgit v1.2.3