X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fcombined-update-render-controller.cpp;h=a06def329566d043d863e70f6f558854915cc6cf;hb=27ccd878f2f620b07310c876b0664c1a1788828d;hp=e26e549a2004546286ad2d54af46b93cd034f98f;hpb=5a309b7db8eade971a38b0728cd4dc5cfdccaa8a;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/adaptor/common/combined-update-render-controller.cpp b/dali/internal/adaptor/common/combined-update-render-controller.cpp index e26e549..a06def3 100644 --- a/dali/internal/adaptor/common/combined-update-render-controller.cpp +++ b/dali/internal/adaptor/common/combined-update-render-controller.cpp @@ -544,6 +544,9 @@ void CombinedUpdateRenderController::UpdateRenderThread() { LOG_UPDATE_RENDER_TRACE; + // For thread safe + bool uploadOnly = mUploadWithoutRendering; + // Performance statistics are logged upon a VSYNC tick so use this point for a VSync marker AddPerformanceMarker(PerformanceInterface::VSYNC); @@ -621,7 +624,8 @@ void CombinedUpdateRenderController::UpdateRenderThread() nextFrameTime, updateStatus, renderToFboEnabled, - isRenderingToFbo); + isRenderingToFbo, + uploadOnly); AddPerformanceMarker(PerformanceInterface::UPDATE_END); unsigned int keepUpdatingStatus = updateStatus.KeepUpdating(); @@ -667,9 +671,9 @@ void CombinedUpdateRenderController::UpdateRenderThread() AddPerformanceMarker(PerformanceInterface::RENDER_START); // Upload shared resources - mCore.PreRender(renderStatus, mForceClear, mUploadWithoutRendering); + mCore.PreRender(renderStatus, mForceClear); - if(!mUploadWithoutRendering) + if(!uploadOnly) { // Go through each window WindowContainer windows; @@ -694,9 +698,7 @@ void CombinedUpdateRenderController::UpdateRenderThread() mDamagedRects.clear(); // Collect damage rects - mCore.PreRender(scene, mDamagedRects); - - graphics.ActivateSurfaceContext(windowSurface); + mCore.PreRender(windowRenderStatus, scene, mDamagedRects); // Render off-screen frame buffers first if any mCore.RenderScene(windowRenderStatus, scene, true); @@ -704,7 +706,10 @@ void CombinedUpdateRenderController::UpdateRenderThread() Rect clippingRect; // Empty for fbo rendering // Switch to the context of the surface, merge damaged areas for previous frames - windowSurface->PreRender(sceneSurfaceResized, mDamagedRects, clippingRect); // Switch GL context + if(windowRenderStatus.NeedsUpdate()) + { + windowSurface->PreRender(sceneSurfaceResized, mDamagedRects, clippingRect); // Switch GL context + } // Render the surface mCore.RenderScene(windowRenderStatus, scene, false, clippingRect); @@ -720,12 +725,12 @@ void CombinedUpdateRenderController::UpdateRenderThread() } } - if(!mUploadWithoutRendering) + if(!uploadOnly) { - graphics.ActivateResourceContext(); + graphics.PostRender(); } - mCore.PostRender(mUploadWithoutRendering); + mCore.PostRender(); ////////////////////////////// // DELETE SURFACE