slideshow/source/engine/slide/slideimpl.cxx |   21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

New commits:
commit f148ea4fb4db08ea7030ad315bcdb5fceee8a9d7
Author:     Tomaž Vajngerl <[email protected]>
AuthorDate: Thu Aug 1 19:35:01 2024 +0200
Commit:     Michael Meeks <[email protected]>
CommitDate: Thu Aug 1 21:07:50 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/+/171383
    Reviewed-by: Michael Meeks <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/slideshow/source/engine/slide/slideimpl.cxx 
b/slideshow/source/engine/slide/slideimpl.cxx
index 000bb1397e2e..9dbb8fcdd9d6 100644
--- a/slideshow/source/engine/slide/slideimpl.cxx
+++ b/slideshow/source/engine/slide/slideimpl.cxx
@@ -164,7 +164,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);
 
@@ -224,6 +225,7 @@ private:
     OUString msLastPlaceholder;
 
     bool mbIsBitmapLayer;
+    bool mbSkipAnimations = false;
     OString msLastJsonMessage;
 };
 
@@ -233,8 +235,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),
@@ -254,7 +258,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() )
@@ -691,7 +696,7 @@ void LOKSlideRenderer::renderImpl(LayerGroupType 
eLayersSet, unsigned char* pBuf
     }
     catch (uno::Exception&)
     {
-        TOOLS_WARN_EXCEPTION( "slideshow", "Geenral Exception");
+        TOOLS_WARN_EXCEPTION( "slideshow", "General Exception");
         return;
     }
 }
@@ -751,6 +756,9 @@ void LOKSlideRenderer::renderLayerBitmapImpl(VirtualDevice& 
rDevice)
 
 void LOKSlideRenderer::collectAnimatedShapes()
 {
+    if (mbSkipAnimations)
+        return;
+
     if (!mxRootNode.is())
         return;
 
@@ -1402,7 +1410,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