slideshow/source/engine/slide/slideimpl.cxx |   19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

New commits:
commit 9dd7ad6e265d852416e46ee79f7b0cb6d174ca64
Author:     Tomaž Vajngerl <[email protected]>
AuthorDate: Thu Aug 1 19:35:01 2024 +0200
Commit:     Miklos Vajna <[email protected]>
CommitDate: Tue Oct 15 11:43:57 2024 +0200

    slideshow: add flag to skip animation rendering
    
    Animations currently don't work yet, so skip rendering them by
    default, or they cause infinite rendering loop in some cases.
    
    Change-Id: Iaf6e7d67197e86c21af65ecd3bba656c23fd74eb
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174962
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/slideshow/source/engine/slide/slideimpl.cxx 
b/slideshow/source/engine/slide/slideimpl.cxx
index 5c8fd9e28f3a..80f652d1287a 100644
--- a/slideshow/source/engine/slide/slideimpl.cxx
+++ b/slideshow/source/engine/slide/slideimpl.cxx
@@ -165,7 +165,8 @@ public:
                      const uno::Reference<drawing::XDrawPagesSupplier>& 
rxDrawPagesSupplier,
                      const uno::Reference<animations::XAnimationNode>& 
rxRootNode,
                      const SlideShowContext& rContext,
-                     const std::shared_ptr<LayerManager>& pLayerManager);
+                     const std::shared_ptr<LayerManager>& pLayerManager,
+                     bool bSkipAnimations);
 
     void renderNextLayer(unsigned char* pBuffer);
 
@@ -225,6 +226,7 @@ private:
     OUString msLastPlaceholder;
 
     bool mbIsBitmapLayer;
+    bool mbSkipAnimations = false;
     OString msLastJsonMessage;
 };
 
@@ -234,8 +236,10 @@ LOKSlideRenderer::LOKSlideRenderer(const Size& rViewSize, 
const Size& rSlideSize
                                    const 
uno::Reference<drawing::XDrawPagesSupplier>& rxDrawPagesSupplier,
                                    const 
uno::Reference<animations::XAnimationNode>& rxRootNode,
                                    const SlideShowContext& rContext,
-                                   const std::shared_ptr<LayerManager>& 
pLayerManager) :
-    maDeviceSize(rViewSize),
+                                   const std::shared_ptr<LayerManager>& 
pLayerManager,
+                                   bool bSkipAnimations)
+
+  : maDeviceSize(rViewSize),
     maSlideSize(rSlideSize),
     //mbRenderBackground(bRenderBackground),
     //mbRenderMasterPageObjects(bRenderMasterPageObjects),
@@ -255,7 +259,8 @@ LOKSlideRenderer::LOKSlideRenderer(const Size& rViewSize, 
const Size& rSlideSize
     mbIsPageNumberVisible(true),
     mbIsDateTimeVisible(true),
     mbIsFooterVisible(true),
-    mbIsBitmapLayer(false)
+    mbIsBitmapLayer(false),
+    mbSkipAnimations(bSkipAnimations)
 {
     uno::Reference< drawing::XMasterPageTarget > xMasterPageTarget( 
mxDrawPage, uno::UNO_QUERY );
     if( xMasterPageTarget.is() )
@@ -752,6 +757,9 @@ void LOKSlideRenderer::renderLayerBitmapImpl(VirtualDevice& 
rDevice)
 
 void LOKSlideRenderer::collectAnimatedShapes()
 {
+    if (mbSkipAnimations)
+        return;
+
     if (!mxRootNode.is())
         return;
 
@@ -1411,7 +1419,8 @@ Size SlideImpl::createLOKSlideRenderer(int nViewWidth, 
int nViewHeight,
                                                            bRenderBackground,
                                                            
bRenderMasterPageObjects,
                                                            mxDrawPage, 
mxDrawPagesSupplier,
-                                                           mxRootNode, 
maContext, mpLayerManager);
+                                                           mxRootNode, 
maContext, mpLayerManager,
+                                                           true);
         if (mpLOKRenderer)
         {
             return mpLOKRenderer->getDeviceSize();

Reply via email to