sd/qa/unit/tiledrendering/tiledrendering.cxx  |   17 ++++++++++++++++-
 sd/source/ui/tools/SlideshowLayerRenderer.cxx |    6 +++---
 2 files changed, 19 insertions(+), 4 deletions(-)

New commits:
commit 610b6180e51dccc418912dbdc66db475adb57923
Author:     Szymon Kłos <[email protected]>
AuthorDate: Tue Sep 10 06:29:39 2024 +0200
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Tue Sep 10 11:09:34 2024 +0200

    slideshow: lok: correct z-order
    
    we need to keep the order correct, especially
    when we have stacked shapes which are animated
    and some are non-animated.
    
    in case:
    
    non-anim
    anim
    non-anim
    anim
    
    don't allow to join non-animated layers into one
    
    Signed-off-by: Szymon Kłos <[email protected]>
    Change-Id: Ic5d94478b691a80fd62853946ebedec075963f44
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173116
    Reviewed-by: Tomaž Vajngerl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx 
b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index ada3b6582a65..5d6f55143980 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -3598,11 +3598,26 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"index\": 3") >= 0);
+        CPPUNIT_ASSERT_EQUAL(-1, rJsonMsg.indexOf(u"\"initVisible\""));
+        CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"type\": \"bitmap\"") >= 0);
+
+        debugWriteImageToFile(6, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
+    }
+
+    {
+        std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
+        bool bIsBitmapLayer = false;
+        OUString rJsonMsg;
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        CPPUNIT_ASSERT(bIsBitmapLayer);
+
+        CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
+        CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"index\": 4") >= 0);
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"initVisible\": false") >= 0);
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"type\": \"animated\"") >= 0);
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"type\": \"bitmap\"") >= 0);
 
-        debugWriteImageToFile(6, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
+        debugWriteImageToFile(7, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
 
     {
diff --git a/sd/source/ui/tools/SlideshowLayerRenderer.cxx 
b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
index 90d4b9868231..33349eacb0f5 100644
--- a/sd/source/ui/tools/SlideshowLayerRenderer.cxx
+++ b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
@@ -166,12 +166,12 @@ public:
 
         if (mrRenderState.isObjectInAnimation(pObject))
         {
+            // Animated object has to be only one in the render
+            mrRenderState.mbSkipAllInThisPass = true;
+
             // Animated object cannot be attached to the previous object
             if (!mrRenderState.mbFirstObjectInPass)
                 return;
-
-            // Animated object has to be only one in the render
-            mrRenderState.mbSkipAllInThisPass = true;
         }
 
         if (mrRenderState.meStage == RenderStage::Master && hasFields(pObject)

Reply via email to