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();
