diff options
author | Lars Persson | 2006-03-01 21:37:00 +0000 |
---|---|---|
committer | Lars Persson | 2006-03-01 21:37:00 +0000 |
commit | d1e1f7cb5b637c76b25976bcdf3518396813d7b0 (patch) | |
tree | 73ef9c9fe79eb8e7bee961fcd3ac83b38a8eeeb7 | |
parent | 9a9475169da1f25e85791481d07d92ac872c22ba (diff) | |
download | scummvm-rg350-d1e1f7cb5b637c76b25976bcdf3518396813d7b0.tar.gz scummvm-rg350-d1e1f7cb5b637c76b25976bcdf3518396813d7b0.tar.bz2 scummvm-rg350-d1e1f7cb5b637c76b25976bcdf3518396813d7b0.zip |
Fix for Symbian to close an open file in the right thread
svn-id: r20996
-rw-r--r-- | engines/scumm/smush/smush_player.cpp | 18 | ||||
-rw-r--r-- | engines/scumm/smush/smush_player.h | 4 |
2 files changed, 20 insertions, 2 deletions
diff --git a/engines/scumm/smush/smush_player.cpp b/engines/scumm/smush/smush_player.cpp index 2a3a4527aa..d87345a0c9 100644 --- a/engines/scumm/smush/smush_player.cpp +++ b/engines/scumm/smush/smush_player.cpp @@ -223,6 +223,13 @@ void SmushPlayer::timerCallback(void *refCon) { ((SmushPlayer *)refCon)->_inTimer = true; ((SmushPlayer *)refCon)->_inTimerCount++; #endif +#ifdef __SYMBIAN32__ + if(((SmushPlayer *)refCon)->_closeOnTextTick) { + delete ((SmushPlayer *)refCon)->_base; + ((SmushPlayer *)refCon)->_base = NULL; + ((SmushPlayer *)refCon)->_closeOnTextTick = false; + } +#endif } SmushPlayer::SmushPlayer(ScummEngine_v6 *scumm, int speed) { @@ -262,6 +269,9 @@ SmushPlayer::SmushPlayer(ScummEngine_v6 *scumm, int speed) { _inTimerCount = 0; _inTimerCountRedraw = ConfMan.getInt("Smush_force_redraw"); #endif +#ifdef __SYMBIA32__ + _closeOnTextTick = false; +#endif } SmushPlayer::~SmushPlayer() { @@ -295,7 +305,13 @@ void SmushPlayer::init() { void SmushPlayer::release() { if (!_initDone) return; - +#ifdef __SYMBIAN32__ + _closeOnTextTick = true; + // Wait for _closeOnTextTick to be set to false to indicate file closure + while(_closeOnTextTick) { + User::After(15624); + } +#endif _vm->_timer->removeTimerProc(&timerCallback); _vm->_smushVideoShouldFinish = true; diff --git a/engines/scumm/smush/smush_player.h b/engines/scumm/smush/smush_player.h index f697057d89..929f9d73d2 100644 --- a/engines/scumm/smush/smush_player.h +++ b/engines/scumm/smush/smush_player.h @@ -90,7 +90,9 @@ private: int16 _inTimerCount; int16 _inTimerCountRedraw; #endif - +#ifdef __SYMBIAN32__ + bool _closeOnTextTick; +#endif Common::Mutex _mutex; public: |