diff options
-rw-r--r-- | slideshow/source/engine/slideshowimpl.cxx | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/slideshow/source/engine/slideshowimpl.cxx b/slideshow/source/engine/slideshowimpl.cxx index a37cdbc3f0fb..f9e8ed8b58e0 100644 --- a/slideshow/source/engine/slideshowimpl.cxx +++ b/slideshow/source/engine/slideshowimpl.cxx @@ -2010,6 +2010,18 @@ sal_Bool SlideShowImpl::update( double & nNextTimeout ) // process queues maEventQueue.process(); + + // #i118671# the call above may execute a macro bound to an object. In + // that case this macro may have destroyed this local sliseshow so that it + // is disposed (see bugdoc at task). In that case, detect this and exit + // gently from this slideshow. Do not forget to disable the scoped + // call to mpPresTimer, this will be deleted if we are disposed. + if (isDisposed()) + { + scopeGuard.dismiss(); + return false; + } + maActivitiesQueue.process(); // commit frame to screen |