From: seungho Date: Wed, 21 Sep 2022 04:24:48 +0000 (+0900) Subject: Revert "[Tizen] Fix partial update window rotation works well." X-Git-Tag: accepted/tizen/unified/20220922.062034~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git;a=commitdiff_plain;h=989a35ac37079d6ada012d85d64605fc304028b1 Revert "[Tizen] Fix partial update window rotation works well." This reverts commit 30fefd588419cc4d890c77de877d9314c9f2dd64. --- diff --git a/dali/internal/window-system/common/window-render-surface.cpp b/dali/internal/window-system/common/window-render-surface.cpp index 2eb946a..8dd26e9 100644 --- a/dali/internal/window-system/common/window-render-surface.cpp +++ b/dali/internal/window-system/common/window-render-surface.cpp @@ -49,6 +49,27 @@ const float FULL_UPDATE_RATIO(0.8f); ///< Force full update when the dirty a Debug::Filter* gWindowRenderSurfaceLogFilter = Debug::Filter::New(Debug::Verbose, false, "LOG_WINDOW_RENDER_SURFACE"); #endif +void MergeRects(Rect& mergingRect, const std::vector>& rects) +{ + uint32_t i = 0; + if(mergingRect.IsEmpty()) + { + for(; i < rects.size(); i++) + { + if(!rects[i].IsEmpty()) + { + mergingRect = rects[i]; + break; + } + } + } + + for(; i < rects.size(); i++) + { + mergingRect.Merge(rects[i]); + } +} + void InsertRects(WindowRenderSurface::DamagedRectsContainer& damagedRectsList, const Rect& damagedRects) { damagedRectsList.insert(damagedRectsList.begin(), damagedRects); @@ -97,7 +118,7 @@ using RecalculateRectFunction = Rect (*)(Rect&, const Rect& mergingRect, std::vector>& damagedRects, int orientation, const Rect& surfaceRect) +void MergeIntersectingRects(std::vector>& damagedRects, int orientation, const Rect& surfaceRect) { const int n = damagedRects.size(); for(int i = 0; i < n - 1; i++) @@ -128,16 +149,6 @@ void MergeIntersectingRectsAndRotate(Rect& mergingRect, std::vector>& da { InsertRects(mBufferDamagedRects, surfaceRect); clippingRect = surfaceRect; - mDamagedRects.assign(1, RecalculateRect[orientation](surfaceRect, surfaceRect)); return; } @@ -875,7 +885,6 @@ void WindowRenderSurface::SetBufferDamagedRects(const std::vector>& da { // Empty damaged rect. We don't need rendering clippingRect = Rect(); - mDamagedRects.clear(); return; } @@ -888,7 +897,6 @@ void WindowRenderSurface::SetBufferDamagedRects(const std::vector>& da { InsertRects(mBufferDamagedRects, surfaceRect); clippingRect = surfaceRect; - mDamagedRects.assign(1, RecalculateRect[orientation](surfaceRect, surfaceRect)); return; } @@ -896,8 +904,10 @@ void WindowRenderSurface::SetBufferDamagedRects(const std::vector>& da // Merge intersecting rects, form an array of non intersecting rects to help driver a bit // Could be optional and can be removed, needs to be checked with and without on platform - // And then, Make one clipping rect, and rotate rects by orientation. - MergeIntersectingRectsAndRotate(clippingRect, mDamagedRects, orientation, surfaceRect); + MergeIntersectingRects(mDamagedRects, orientation, surfaceRect); + + // Make one clipping rect + MergeRects(clippingRect, mDamagedRects); // We push current frame damaged rects here, zero index for current frame InsertRects(mBufferDamagedRects, clippingRect); @@ -930,7 +940,7 @@ void WindowRenderSurface::SetBufferDamagedRects(const std::vector>& da std::vector> damagedRegion; if(scene) { - damagedRegion.push_back(RecalculateRect[orientation](clippingRect, surfaceRect)); + damagedRegion.push_back(RecalculateRect[std::min(scene.GetCurrentSurfaceOrientation() / 90, 3)](clippingRect, scene.GetCurrentSurfaceRect())); } else {