summaryrefslogtreecommitdiff
path: root/slideshow/source/engine/slideshowimpl.cxx
diff options
context:
space:
mode:
authorAndre Fischer <af@openoffice.org>2009-10-14 12:38:02 +0000
committerAndre Fischer <af@openoffice.org>2009-10-14 12:38:02 +0000
commit5caa4326854d346e40b9d052255effa446e54513 (patch)
tree482afd57dd05d92b5ec7c3d5af3e24bf2766a675 /slideshow/source/engine/slideshowimpl.cxx
parent8918d0a78627c4e85fcbc0aa6bdf2e2878dff7a2 (diff)
#i48179# Fixed stepping back for animations with active auto_reverse.
Diffstat (limited to 'slideshow/source/engine/slideshowimpl.cxx')
-rw-r--r--slideshow/source/engine/slideshowimpl.cxx16
1 files changed, 10 insertions, 6 deletions
diff --git a/slideshow/source/engine/slideshowimpl.cxx b/slideshow/source/engine/slideshowimpl.cxx
index 45b94ac26501..b042014af9c6 100644
--- a/slideshow/source/engine/slideshowimpl.cxx
+++ b/slideshow/source/engine/slideshowimpl.cxx
@@ -71,6 +71,7 @@
#include <com/sun/star/animations/TransitionType.hpp>
#include <com/sun/star/animations/TransitionSubType.hpp>
#include <com/sun/star/presentation/XSlideShow.hpp>
+#include <com/sun/star/presentation/XSlideShowListener.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XServiceName.hpp>
#include <com/sun/star/loader/CannotActivateFactoryException.hpp>
@@ -509,11 +510,14 @@ struct SlideShowImpl::SeparateListenerImpl : public EventHandler,
// directly, but queue an event. handleEvent()
// might be called from e.g.
// showNext(), and notifySlideAnimationsEnded() must not be called
- // in recursion.
- mrEventQueue.addEvent(
- makeEvent( boost::bind( &SlideShowImpl::notifySlideAnimationsEnded,
- boost::ref(mrShow) ),
- "SlideShowImpl::notifySlideAnimationsEnded"));
+ // in recursion. Note that the event is scheduled for the next
+ // frame so that its expensive execution does not come in between
+ // sprite hiding and shape redraw (at the end of the animation of a
+ // shape), which would cause a flicker.
+ mrEventQueue.addEventForNextRound(
+ makeEvent(
+ boost::bind( &SlideShowImpl::notifySlideAnimationsEnded, boost::ref(mrShow) ),
+ "SlideShowImpl::notifySlideAnimationsEnded"));
return true;
}
@@ -2079,7 +2083,7 @@ void SlideShowImpl::notifySlideEnded (const bool bReverse)
boost::bind(
&presentation::XSlideShowListener::slideEnded,
_1,
- bReverse) );
+ bReverse));
}
bool SlideShowImpl::notifyHyperLinkClicked( rtl::OUString const& hyperLink )