sd/qa/unit/tiledrendering/tiledrendering.cxx  |   12 ++++++------
 sd/source/ui/inc/SlideshowLayerRenderer.hxx   |    2 +-
 sd/source/ui/tools/SlideshowLayerRenderer.cxx |    9 +++++++--
 sd/source/ui/unoidl/unomodel.cxx              |    3 +--
 4 files changed, 15 insertions(+), 11 deletions(-)

New commits:
commit 76c2a523c6ab19bdaed2b4ad068348b9376d9c59
Author:     Marco Cecchetti <marco.cecche...@collabora.com>
AuthorDate: Tue Nov 5 18:37:15 2024 +0100
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Thu Mar 20 16:35:28 2025 +0100

    slideshow: set isBitmapLayer correctly
    
    For a layer placeholder the flag should be set to false.
    
    Change-Id: I54c426bf491e681e411e70edba745d74f447a04a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183169
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins

diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx 
b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 76c449705e01..17f55ae25122 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -3157,11 +3157,11 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_SlideNu
 
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
-        bool bIsBitmapLayer = false;
+        bool bIsBitmapLayer = true;
         OUString aJson;
         double dScale = 1.0;
         
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, aJson));
-        CPPUNIT_ASSERT(bIsBitmapLayer);
+        CPPUNIT_ASSERT(!bIsBitmapLayer);
 
         debugWriteImageToFile(1, pBuffer, nViewWidth, nViewHeight, 
aJson.toUtf8().getStr());
 
@@ -3180,11 +3180,11 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_SlideNu
 
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
-        bool bIsBitmapLayer = false;
+        bool bIsBitmapLayer = true;
         OUString aJson;
         double dScale = 1.0;
         
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, aJson));
-        CPPUNIT_ASSERT(bIsBitmapLayer);
+        CPPUNIT_ASSERT(!bIsBitmapLayer);
 
         debugWriteImageToFile(2, pBuffer, nViewWidth, nViewHeight, 
aJson.toUtf8().getStr());
 
@@ -3203,11 +3203,11 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_SlideNu
 
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
-        bool bIsBitmapLayer = false;
+        bool bIsBitmapLayer = true;
         OUString aJson;
         double dScale = 1.0;
         
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, aJson));
-        CPPUNIT_ASSERT(bIsBitmapLayer);
+        CPPUNIT_ASSERT(!bIsBitmapLayer);
 
         debugWriteImageToFile(3, pBuffer, nViewWidth, nViewHeight, 
aJson.toUtf8().getStr());
 
diff --git a/sd/source/ui/inc/SlideshowLayerRenderer.hxx 
b/sd/source/ui/inc/SlideshowLayerRenderer.hxx
index d76367adee73..12a944b86377 100644
--- a/sd/source/ui/inc/SlideshowLayerRenderer.hxx
+++ b/sd/source/ui/inc/SlideshowLayerRenderer.hxx
@@ -158,7 +158,7 @@ public:
      * The properties of the layer are written to the input string in JSON 
format.
      *
      * @returns false, if nothing was rendered and rendering is done */
-    bool render(unsigned char* pBuffer, double& scale, OString& rJsonMsg);
+    bool render(unsigned char* pBuffer, bool& bIsBitmapLayer, double& scale, 
OString& rJsonMsg);
 };
 
 } // end of namespace sd
diff --git a/sd/source/ui/tools/SlideshowLayerRenderer.cxx 
b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
index 08cdb1631e6c..8a4c7e6dfbbe 100644
--- a/sd/source/ui/tools/SlideshowLayerRenderer.cxx
+++ b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
@@ -769,7 +769,8 @@ void SlideshowLayerRenderer::writeJSON(OString& rJsonMsg, 
RenderPass const& rRen
     maRenderState.incrementIndex();
 }
 
-bool SlideshowLayerRenderer::render(unsigned char* pBuffer, double& rScale, 
OString& rJsonMsg)
+bool SlideshowLayerRenderer::render(unsigned char* pBuffer, bool& 
bIsBitmapLayer, double& rScale,
+                                    OString& rJsonMsg)
 {
     // We want to render one pass (one iteration through objects)
 
@@ -783,6 +784,8 @@ bool SlideshowLayerRenderer::render(unsigned char* pBuffer, 
double& rScale, OStr
         createViewAndDraw(aRenderContext, &aRedirector);
         aRedirector.finalizeRenderPasses();
 
+        bIsBitmapLayer = true;
+
         // Write JSON for the Background layer
         writeBackgroundJSON(rJsonMsg);
 
@@ -795,7 +798,9 @@ bool SlideshowLayerRenderer::render(unsigned char* pBuffer, 
double& rScale, OStr
 
         auto const& rRenderPass = maRenderState.maRenderPasses.front();
         maRenderState.meStage = rRenderPass.meStage;
-        if (!rRenderPass.mbPlaceholder) // no need to render if placeholder
+
+        bIsBitmapLayer = !rRenderPass.mbPlaceholder;
+        if (bIsBitmapLayer) // no need to render if placeholder
         {
             RenderPassObjectRedirector aRedirector(maRenderState, rRenderPass);
             createViewAndDraw(aRenderContext, &aRedirector);
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 5a75fb1c005b..a2fff3370033 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -4790,12 +4790,11 @@ bool SdXImpressDocument::renderNextSlideLayer(unsigned 
char* pBuffer, bool& bIsB
         return bDone;
 
     OString sMsg;
-    bool bOK = mpSlideshowLayerRenderer->render(pBuffer, rScale, sMsg);
+    bool bOK = mpSlideshowLayerRenderer->render(pBuffer, bIsBitmapLayer, 
rScale, sMsg);
 
     if (bOK)
     {
         rJsonMsg = OUString::fromUtf8(sMsg);
-        bIsBitmapLayer = true;
         bDone = false;
     }
 

Reply via email to