diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2024-09-26 20:59:01 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2024-09-27 19:37:02 +0300 | 
| commit | 64c055f9be03861661f8c211ae36ba0db489b12d (patch) | |
| tree | e8e462d321743205689703db385d92a8502465a1 | |
| parent | e74b48e67842c5c745f9ab0be2e33d7d077001e3 (diff) | |
viewer#2653 fix texture readback not being called and not setting values properly
Ex: Saving textures to hard drive sometimes fails
| -rw-r--r-- | indra/newview/llviewertexture.cpp | 17 | 
1 files changed, 17 insertions, 0 deletions
| diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 9e1cb84bd1..0f9c65893d 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -2495,6 +2495,11 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()          }      } +    if (need_readback) +    { +        readbackRawImage(); +    } +      //      // Run raw/auxiliary data callbacks      // @@ -2744,10 +2749,22 @@ void LLViewerFetchedTexture::readbackRawImage()      if (mGLTexturep.notNull() && mGLTexturep->getTexName() != 0 &&          (mRawImage.isNull() || mRawImage->getWidth() < mGLTexturep->getWidth() || mRawImage->getHeight() < mGLTexturep->getHeight() ))      { +        if (mRawImage.isNull()) +        { +            sRawCount++; +        }          mRawImage = new LLImageRaw();          if (!mGLTexturep->readBackRaw(-1, mRawImage, false))          {              mRawImage = nullptr; +            mIsRawImageValid = false; +            mRawDiscardLevel = INVALID_DISCARD_LEVEL; +            sRawCount--; +        } +        else +        { +            mIsRawImageValid = true; +            mRawDiscardLevel = mGLTexturep->getDiscardLevel();          }      }  } | 
