SH-412 -- fix the way that redraws happen to eliminate flickering on resize -- patch from davep and seraph, I'm just applying it.
parent
451d115c10
commit
dc59b268dc
|
|
@ -95,6 +95,7 @@ BOOL gForceRenderLandFence = FALSE;
|
|||
BOOL gDisplaySwapBuffers = FALSE;
|
||||
BOOL gDepthDirty = FALSE;
|
||||
BOOL gResizeScreenTexture = FALSE;
|
||||
BOOL gWindowResized = FALSE;
|
||||
BOOL gSnapshot = FALSE;
|
||||
|
||||
U32 gRecentFrameCount = 0; // number of 'recent' frames
|
||||
|
|
@ -218,22 +219,15 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
|||
LLMemType mt_render(LLMemType::MTYPE_RENDER);
|
||||
LLFastTimer t(FTM_RENDER);
|
||||
|
||||
if (gResizeScreenTexture)
|
||||
{ //skip render on frames where screen texture is resizing
|
||||
if (gWindowResized)
|
||||
{ //skip render on frames where window has been resized
|
||||
gGL.flush();
|
||||
if (!for_snapshot)
|
||||
{
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
gViewerWindow->mWindow->swapBuffers();
|
||||
}
|
||||
|
||||
gResizeScreenTexture = FALSE;
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
gViewerWindow->mWindow->swapBuffers();
|
||||
gPipeline.resizeScreenTexture();
|
||||
|
||||
if (!for_snapshot)
|
||||
{
|
||||
return;
|
||||
}
|
||||
gResizeScreenTexture = FALSE;
|
||||
gWindowResized = FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
|
|
@ -665,11 +659,11 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
|||
LLVertexBuffer::clientCopy(0.016);
|
||||
}
|
||||
|
||||
//if (gResizeScreenTexture)
|
||||
//{
|
||||
// gResizeScreenTexture = FALSE;
|
||||
// gPipeline.resizeScreenTexture();
|
||||
//}
|
||||
if (gResizeScreenTexture)
|
||||
{
|
||||
gResizeScreenTexture = FALSE;
|
||||
gPipeline.resizeScreenTexture();
|
||||
}
|
||||
|
||||
gGL.setColorMask(true, true);
|
||||
glClearColor(0,0,0,0);
|
||||
|
|
|
|||
|
|
@ -40,5 +40,6 @@ extern BOOL gTeleportDisplay;
|
|||
extern LLFrameTimer gTeleportDisplayTimer;
|
||||
extern BOOL gForceRenderLandFence;
|
||||
extern BOOL gResizeScreenTexture;
|
||||
extern BOOL gWindowResized;
|
||||
|
||||
#endif // LL_LLVIEWERDISPLAY_H
|
||||
|
|
|
|||
|
|
@ -1839,6 +1839,8 @@ void LLViewerWindow::reshape(S32 width, S32 height)
|
|||
return;
|
||||
}
|
||||
|
||||
gWindowResized = TRUE;
|
||||
|
||||
// update our window rectangle
|
||||
mWindowRectRaw.mRight = mWindowRectRaw.mLeft + width;
|
||||
mWindowRectRaw.mTop = mWindowRectRaw.mBottom + height;
|
||||
|
|
@ -4415,6 +4417,7 @@ void LLViewerWindow::restoreGL(const std::string& progress_message)
|
|||
LLVOAvatar::restoreGL();
|
||||
|
||||
gResizeScreenTexture = TRUE;
|
||||
gWindowResized = TRUE;
|
||||
|
||||
if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures())
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue