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

New commits:
commit bd3ac9a9546101904eacfb79f707b1b76c413800
Author:     Marco Cecchetti <[email protected]>
AuthorDate: Tue Nov 5 18:37:15 2024 +0100
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Mon Nov 11 10:19:40 2024 +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/+/176167
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Tomaž Vajngerl <[email protected]>

diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx 
b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 08fd4521bf49..f78c8d09e296 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -3558,10 +3558,10 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_SlideNu
 
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
-        bool bIsBitmapLayer = false;
+        bool bIsBitmapLayer = true;
         OUString aJson;
         
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, aJson));
-        CPPUNIT_ASSERT(bIsBitmapLayer);
+        CPPUNIT_ASSERT(!bIsBitmapLayer);
 
         debugWriteImageToFile(1, pBuffer, nViewWidth, nViewHeight, 
aJson.toUtf8().getStr());
 
@@ -3580,10 +3580,10 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_SlideNu
 
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
-        bool bIsBitmapLayer = false;
+        bool bIsBitmapLayer = true;
         OUString aJson;
         
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, aJson));
-        CPPUNIT_ASSERT(bIsBitmapLayer);
+        CPPUNIT_ASSERT(!bIsBitmapLayer);
 
         debugWriteImageToFile(2, pBuffer, nViewWidth, nViewHeight, 
aJson.toUtf8().getStr());
 
@@ -3602,10 +3602,10 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_SlideNu
 
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
-        bool bIsBitmapLayer = false;
+        bool bIsBitmapLayer = true;
         OUString aJson;
         
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, 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 01e9374e9244..446f0091544e 100644
--- a/sd/source/ui/inc/SlideshowLayerRenderer.hxx
+++ b/sd/source/ui/inc/SlideshowLayerRenderer.hxx
@@ -173,7 +173,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, OString& rJsonMsg);
+    bool render(unsigned char* pBuffer, bool& bIsBitmapLayer, OString& 
rJsonMsg);
 };
 
 } // end of namespace sd
diff --git a/sd/source/ui/tools/SlideshowLayerRenderer.cxx 
b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
index bb83542ef4d8..7ca9a4566cc9 100644
--- a/sd/source/ui/tools/SlideshowLayerRenderer.cxx
+++ b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
@@ -770,7 +770,7 @@ void SlideshowLayerRenderer::writeJSON(OString& rJsonMsg, 
RenderPass const& rRen
     maRenderState.incrementIndex();
 }
 
-bool SlideshowLayerRenderer::render(unsigned char* pBuffer, OString& rJsonMsg)
+bool SlideshowLayerRenderer::render(unsigned char* pBuffer, bool& 
bIsBitmapLayer, OString& rJsonMsg)
 {
     // We want to render one pass (one iteration through objects)
 
@@ -784,6 +784,8 @@ bool SlideshowLayerRenderer::render(unsigned char* pBuffer, 
OString& rJsonMsg)
         createViewAndDraw(aRenderContext, &aRedirector);
         aRedirector.finalizeRenderPasses();
 
+        bIsBitmapLayer = true;
+
         // Write JSON for the Background layer
         writeBackgroundJSON(rJsonMsg);
 
@@ -796,7 +798,9 @@ bool SlideshowLayerRenderer::render(unsigned char* pBuffer, 
OString& rJsonMsg)
 
         auto const& rRenderPass = maRenderState.maRenderPasses.front();
         maRenderState.meStage = rRenderPass.meStage;
-        if (!rRenderPass.mbPlaceholder) // no need to render if placehodler
+
+        bIsBitmapLayer = !rRenderPass.mbPlaceholder;
+        if (bIsBitmapLayer) // no need to render if placehodler
         {
             RenderPassObjectRedirector aRedirector(maRenderState, rRenderPass);
             createViewAndDraw(aRenderContext, &aRedirector);
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 227fd0c67764..84892602365c 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -4657,12 +4657,11 @@ bool SdXImpressDocument::renderNextSlideLayer(unsigned 
char* pBuffer, bool& bIsB
         return bDone;
 
     OString sMsg;
-    bool bOK = mpSlideshowLayerRenderer->render(pBuffer, sMsg);
+    bool bOK = mpSlideshowLayerRenderer->render(pBuffer, bIsBitmapLayer, sMsg);
 
     if (bOK)
     {
         rJsonMsg = OUString::fromUtf8(sMsg);
-        bIsBitmapLayer = true;
         bDone = false;
     }
 

Reply via email to