[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - slideshow/source

Gülşah Köse (via logerrit) logerrit at kemper.freedesktop.org
Mon Jan 4 20:56:31 UTC 2021


 slideshow/source/engine/effectrewinder.cxx |   17 +++++++++++++++++
 slideshow/source/engine/effectrewinder.hxx |    7 +++++++
 slideshow/source/engine/slideshowimpl.cxx  |    1 +
 3 files changed, 25 insertions(+)

New commits:
commit aa87d3f825fcbe1641d9dbeac8293bf55d2f4273
Author:     Gülşah Köse <gulsah.kose at collabora.com>
AuthorDate: Fri Dec 25 14:08:32 2020 +0300
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Mon Jan 4 21:55:57 2021 +0100

    tdf#134133 Check when the eventqueue needs to be emptied.
    
    To fix tdf#131254, forceEmpty call removed without a control.
    Bug was related advance time setting. Now we control if slide has
    advance time setting.
    
    Change-Id: Ie83f4d7ff3e4bd0a744ca205173d747204918b39
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108282
    Tested-by: Jenkins
    Reviewed-by: Gülşah Köse <gulsah.kose at collabora.com>
    (cherry picked from commit a63caf49958b40e33e0d7aaedbe6424f78ecdc46)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108586
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>

diff --git a/slideshow/source/engine/effectrewinder.cxx b/slideshow/source/engine/effectrewinder.cxx
index 8319856c1154..6fd225dd6c42 100644
--- a/slideshow/source/engine/effectrewinder.cxx
+++ b/slideshow/source/engine/effectrewinder.cxx
@@ -23,11 +23,13 @@
 #include <usereventqueue.hxx>
 #include <basecontainernode.hxx>
 #include <delayevent.hxx>
+#include <tools.hxx>
 
 #include <com/sun/star/animations/Event.hpp>
 #include <com/sun/star/animations/EventTrigger.hpp>
 #include <com/sun/star/container/XEnumerationAccess.hpp>
 #include <com/sun/star/animations/XAnimate.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
 
 #include <officecfg/Office/Canvas.hxx>
 
@@ -82,6 +84,7 @@ EffectRewinder::EffectRewinder (
       mnMainSequenceEffectCount(0),
       mpAsynchronousRewindEvent(),
       mxCurrentAnimationRootNode(),
+      mxCurrentSlide(),
       mbNonUserTriggeredMainSequenceEffectSeen(false)
 {
     initialize();
@@ -154,6 +157,11 @@ void EffectRewinder::setRootAnimationNode (
     mxCurrentAnimationRootNode = xRootNode;
 }
 
+void EffectRewinder::setCurrentSlide (
+    const uno::Reference<drawing::XDrawPage>& xSlide)
+{
+    mxCurrentSlide = xSlide;
+}
 
 bool EffectRewinder::rewind (
     const ::std::shared_ptr<ScreenUpdater::UpdateLock>& rpPaintLock,
@@ -410,6 +418,15 @@ void EffectRewinder::asynchronousRewind (
         // when the slide is shown.
         mbNonUserTriggeredMainSequenceEffectSeen = false;
 
+        uno::Reference< beans::XPropertySet > xPropSet( mxCurrentSlide, uno::UNO_QUERY );
+        sal_Int32 nChange(0);
+
+        if( xPropSet.is())
+            getPropertyValue( nChange, xPropSet, "Change");
+
+        if (!nChange)
+            mrEventQueue.forceEmpty();
+
         if (mbNonUserTriggeredMainSequenceEffectSeen)
         {
             mrUserEventQueue.callSkipEffectEventHandler();
diff --git a/slideshow/source/engine/effectrewinder.hxx b/slideshow/source/engine/effectrewinder.hxx
index 69891172e3c9..4844991b8333 100644
--- a/slideshow/source/engine/effectrewinder.hxx
+++ b/slideshow/source/engine/effectrewinder.hxx
@@ -25,6 +25,7 @@
 #include <animationeventhandler.hxx>
 #include <event.hxx>
 #include <screenupdater.hxx>
+#include <com/sun/star/drawing/XDrawPage.hpp>
 
 #include <functional>
 #include <memory>
@@ -66,6 +67,11 @@ public:
     void setRootAnimationNode (
         const css::uno::Reference<css::animations::XAnimationNode>& xRootNode);
 
+    /** Store the XDrawPage to reach specific slide properties.
+    */
+    void setCurrentSlide (
+        const css::uno::Reference<css::drawing::XDrawPage>& xSlide);
+
     /** Rewind one effect of the main effect sequence.  When the current
         slide has not effects or no main sequence effect has yet been played
         then switch to the previous slide and replay all of its main
@@ -119,6 +125,7 @@ private:
     EventSharedPtr mpAsynchronousRewindEvent;
 
     css::uno::Reference<css::animations::XAnimationNode> mxCurrentAnimationRootNode;
+    css::uno::Reference<css::drawing::XDrawPage> mxCurrentSlide;
     ::std::shared_ptr<ScreenUpdater::UpdateLock> mpPaintLock;
 
     bool mbNonUserTriggeredMainSequenceEffectSeen;
diff --git a/slideshow/source/engine/slideshowimpl.cxx b/slideshow/source/engine/slideshowimpl.cxx
index ebae0d83276d..86d386e0d30b 100644
--- a/slideshow/source/engine/slideshowimpl.cxx
+++ b/slideshow/source/engine/slideshowimpl.cxx
@@ -1032,6 +1032,7 @@ void SlideShowImpl::displaySlide(
         return;
 
     maEffectRewinder.setRootAnimationNode(xRootNode);
+    maEffectRewinder.setCurrentSlide(xSlide);
 
     // precondition: must only be called from the main thread!
     DBG_TESTSOLARMUTEX();


More information about the Libreoffice-commits mailing list