From fe03cd1bfabeab154573b55216c581bb0af41e9a Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 27 Sep 2011 12:24:45 -0400 Subject: PEGASUS: Partially revert 4aed723368b9a4e82205bc3ed950a4e04ba3d8dc startFaderSync does indeed to hold the main thread. --- engines/pegasus/fader.cpp | 30 +++++++++++++----------------- engines/pegasus/fader.h | 3 --- 2 files changed, 13 insertions(+), 20 deletions(-) (limited to 'engines/pegasus') diff --git a/engines/pegasus/fader.cpp b/engines/pegasus/fader.cpp index 8eb1c0176a..fe292d91f7 100755 --- a/engines/pegasus/fader.cpp +++ b/engines/pegasus/fader.cpp @@ -24,6 +24,7 @@ */ #include "pegasus/fader.h" +#include "pegasus/pegasus.h" #include "pegasus/sound.h" #include "pegasus/util.h" @@ -32,7 +33,6 @@ namespace Pegasus { Fader::Fader() { _currentValue = 0; _currentFaderMove._numKnots = 0; - _syncMode = false; } void Fader::setFaderValue(const uint32 newValue) { @@ -86,14 +86,22 @@ void Fader::startFader(const FaderMoveSpec &spec) { } void Fader::startFaderSync(const FaderMoveSpec &spec) { - if (initFaderMove(spec)) { - _syncMode = true; - + if (initFaderMove(spec)) { setFlags(0); setScale(spec._faderScale); setSegment(spec._knots[0].knotTime, spec._knots[spec._numKnots - 1].knotTime); setTime(spec._knots[0].knotTime); - start(); + start(); + + while (isFading()) { + ((PegasusEngine *)g_engine)->checkCallBacks(); + useIdleTime(); + } + + // Once more, for good measure, to make sure that there are no boundary + // condition problems. + useIdleTime(); + stopFader(); } } @@ -140,18 +148,6 @@ void Fader::timeChanged(const TimeValue newTime) { } } -void Fader::checkCallBacks() { - IdlerTimeBase::checkCallBacks(); - - if (_syncMode && !isRunning()) { - // Once more, for good measure, to make sure that there are no boundary - // condition problems. - useIdleTime(); - stopFader(); - _syncMode = false; - } -} - void FaderMoveSpec::makeOneKnotFaderSpec(const uint32 knotValue) { _numKnots = 1; _knots[0].knotTime = 0; diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h index 83f5a819c2..fe5b1ae1ba 100755 --- a/engines/pegasus/fader.h +++ b/engines/pegasus/fader.h @@ -89,15 +89,12 @@ public: void getCurrentFaderMove(FaderMoveSpec &spec) { spec = _currentFaderMove; } - virtual void checkCallBacks(); - protected: bool initFaderMove(const FaderMoveSpec &); virtual void timeChanged(const TimeValue); uint32 _currentValue; FaderMoveSpec _currentFaderMove; - bool _syncMode; }; class FaderAnimation : public DisplayElement, public Fader { -- cgit v1.2.3