fix a texture issue that unpaused callbacks never get fired.
parent
b0c85e250d
commit
f20fadeafa
|
|
@ -1046,7 +1046,7 @@ void LLViewerFetchedTexture::init(bool firstinit)
|
|||
mLastReferencedSavedRawImageTime = 0.0f ;
|
||||
mKeptSavedRawImageTime = 0.f ;
|
||||
mLastCallBackActiveTime = 0.f;
|
||||
|
||||
mForceCallbackFetch = FALSE;
|
||||
mInDebug = FALSE;
|
||||
|
||||
mFTType = FTT_UNKNOWN;
|
||||
|
|
@ -2281,6 +2281,7 @@ void LLViewerFetchedTexture::unpauseLoadedCallbacks(const LLLoadedCallbackEntry:
|
|||
}
|
||||
mPauseLoadedCallBacks = FALSE ;
|
||||
mLastCallBackActiveTime = sCurrentTime ;
|
||||
mForceCallbackFetch = TRUE;
|
||||
if(need_raw)
|
||||
{
|
||||
mSaveRawImage = TRUE ;
|
||||
|
|
@ -2321,6 +2322,7 @@ void LLViewerFetchedTexture::pauseLoadedCallbacks(const LLLoadedCallbackEntry::s
|
|||
bool LLViewerFetchedTexture::doLoadedCallbacks()
|
||||
{
|
||||
static const F32 MAX_INACTIVE_TIME = 900.f ; //seconds
|
||||
static const F32 MAX_IDLE_WAIT_TIME = 5.f ; //seconds
|
||||
|
||||
if (mNeedsCreateTexture)
|
||||
{
|
||||
|
|
@ -2525,6 +2527,9 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()
|
|||
}
|
||||
}
|
||||
|
||||
// Done with any raw image data at this point (will be re-created if we still have callbacks)
|
||||
destroyRawImage();
|
||||
|
||||
//
|
||||
// If we have no callbacks, take us off of the image callback list.
|
||||
//
|
||||
|
|
@ -2532,10 +2537,13 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()
|
|||
{
|
||||
gTextureList.mCallbackList.erase(this);
|
||||
}
|
||||
else if(!res && mForceCallbackFetch && sCurrentTime - mLastCallBackActiveTime > MAX_IDLE_WAIT_TIME && !mIsFetching)
|
||||
{
|
||||
//wait for long enough but no fetching request issued, force one.
|
||||
forceToRefetchTexture(mLoadedCallbackDesiredDiscardLevel, 5.f);
|
||||
mForceCallbackFetch = FALSE; //fire once.
|
||||
}
|
||||
|
||||
// Done with any raw image data at this point (will be re-created if we still have callbacks)
|
||||
destroyRawImage();
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
@ -2774,9 +2782,8 @@ void LLViewerFetchedTexture::saveRawImage()
|
|||
}
|
||||
|
||||
//force to refetch the texture to the discard level
|
||||
void LLViewerFetchedTexture::forceToRefetchTexture(S32 desired_discard)
|
||||
void LLViewerFetchedTexture::forceToRefetchTexture(S32 desired_discard, F32 kept_time)
|
||||
{
|
||||
F32 kept_time = 60.0; //seconds
|
||||
if(mForceToSaveRawImage)
|
||||
{
|
||||
desired_discard = llmin(desired_discard, mDesiredSavedRawDiscardLevel);
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@ public:
|
|||
BOOL isCachedRawImageReady() const {return mCachedRawImageReady ;}
|
||||
BOOL isRawImageValid()const { return mIsRawImageValid ; }
|
||||
void forceToSaveRawImage(S32 desired_discard = 0, F32 kept_time = 0.f) ;
|
||||
void forceToRefetchTexture(S32 desired_discard = 0);
|
||||
void forceToRefetchTexture(S32 desired_discard = 0, F32 kept_time = 60.f);
|
||||
/*virtual*/ void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ;
|
||||
void destroySavedRawImage() ;
|
||||
LLImageRaw* getSavedRawImage() ;
|
||||
|
|
@ -423,6 +423,7 @@ private:
|
|||
BOOL mFullyLoaded;
|
||||
BOOL mInDebug;
|
||||
BOOL mInFastCacheList;
|
||||
BOOL mForceCallbackFetch;
|
||||
|
||||
protected:
|
||||
std::string mLocalFileName;
|
||||
|
|
|
|||
Loading…
Reference in New Issue