diff --git a/src/Sources/magSlideShowSource.cpp b/src/Sources/magSlideShowSource.cpp index a3367a1..f88babf 100644 --- a/src/Sources/magSlideShowSource.cpp +++ b/src/Sources/magSlideShowSource.cpp @@ -102,14 +102,23 @@ void magSlideShowSource::update() { deltaTime = nowTime-lastTime; runningTime += deltaTime; lastTime = nowTime; - -// ofLogVerbose() << "Delta: " << deltaTime << " running: " << runningTime; - + for (auto &slide : activeSlides) { slide->update(deltaTime); } + // Queue the next slide if it is time + if (doPlayNextSlide) + { + playNextSlide(); + if (activeSlides.size() > 1) + { + activeSlides[1]->transition->start(activeSlides[0]); + } + doPlayNextSlide = false; + } + // Erase any complete slides: auto iter = activeSlides.begin(); for (; iter < activeSlides.end(); iter++) @@ -497,13 +506,8 @@ void magSlideShowSource::slideStateChanged(const void *sender, ofEventArgs &args // << slide->getSlideStateName(); if (slide->getSlideState() == magSlide::SlideState::BuildOut) { -// slide->transition->start(); -// ofLogVerbose() << "BuildOut " << slide->getId(); - playNextSlide(); - if (activeSlides.size() > 1) - { - activeSlides[1]->transition->start(activeSlides[0]); - } + // Flag that we need to load the next slide: + doPlayNextSlide = true; } } diff --git a/src/Sources/magSlideShowSource.h b/src/Sources/magSlideShowSource.h index e82b158..60d541d 100644 --- a/src/Sources/magSlideShowSource.h +++ b/src/Sources/magSlideShowSource.h @@ -161,6 +161,7 @@ class magSlideShowSource : public ofx::piMapper::FboSource { void fileAddedListener(const void *sender); void fileRemovedListener(const void *sender); bool doInit; + bool doPlayNextSlide = false; };