Fix Window::SetSize() issue 84/192684/4
authorJiyun Yang <ji.yang@samsung.com>
Thu, 8 Nov 2018 02:13:30 +0000 (11:13 +0900)
committerJiyun Yang <ji.yang@samsung.com>
Mon, 12 Nov 2018 02:42:12 +0000 (11:42 +0900)
Issue:
In UpdateRenderThread code, there is a chance that "SurfaceRectChanged is true"
precedes the first rendering task after Window::SetSize().
In that case, PreRender() never have a chance to be called with "true"
argument, so that window resizing will not be done properly.

Change-Id: I8da0667ca2298fd42dd614dd87a0133532e48223
Signed-off-by: Jiyun Yang <ji.yang@samsung.com>
dali/internal/adaptor/common/combined-update-render-controller.cpp

index a73104a..e9fa33f 100644 (file)
@@ -515,13 +515,15 @@ void CombinedUpdateRenderController::UpdateRenderThread()
     }
 
     // Check resize
-    bool surfaceResized = ShouldSurfaceBeResized();
-    if( DALI_UNLIKELY( surfaceResized ) )
+    bool surfaceResized = false;
+    bool shouldSurfaceBeResized = ShouldSurfaceBeResized();
+    if( DALI_UNLIKELY( shouldSurfaceBeResized ) )
     {
       if( updateStatus.SurfaceRectChanged() )
       {
         LOG_UPDATE_RENDER_TRACE_FMT( "Resizing Surface" );
         SurfaceResized();
+        surfaceResized = true;
       }
     }
 
@@ -547,7 +549,7 @@ void CombinedUpdateRenderController::UpdateRenderThread()
     RenderSurface* currentSurface = mAdaptorInterfaces.GetRenderSurfaceInterface();
     if( currentSurface )
     {
-      currentSurface->PreRender( mSurfaceResized );
+      currentSurface->PreRender( surfaceResized );
     }
 
     Integration::RenderStatus renderStatus;
@@ -562,7 +564,7 @@ void CombinedUpdateRenderController::UpdateRenderThread()
     {
       if( currentSurface )
       {
-        currentSurface->PostRender( isRenderingToFbo, ( mNewSurface != NULL ), mSurfaceResized );
+        currentSurface->PostRender( isRenderingToFbo, ( mNewSurface != NULL ), surfaceResized );
       }
     }