diff options
author | Johannes Schickel | 2012-09-21 02:18:54 +0200 |
---|---|---|
committer | Johannes Schickel | 2012-09-21 02:35:50 +0200 |
commit | 8aceef971106ba35ab234b165dbe6e19c842f336 (patch) | |
tree | dc1286a31068872960cd3d5925acba78a2b912a7 /engines/pegasus/neighborhood/caldoria/caldoria.cpp | |
parent | b0079f4fa67099cec2c58e7907bf3fe09d0755cf (diff) | |
download | scummvm-rg350-8aceef971106ba35ab234b165dbe6e19c842f336.tar.gz scummvm-rg350-8aceef971106ba35ab234b165dbe6e19c842f336.tar.bz2 scummvm-rg350-8aceef971106ba35ab234b165dbe6e19c842f336.zip |
PEGASUS: Replace FunctionPtr by our Functor code in Common.
This "fixes" a segmentation fault in our buildbot's toolchain for DC.
The segmentation fault occured while compiling
engines/pegasus/ai/ai_condition.cpp.
Thanks to clone2727 for looking over this and testing it.
Diffstat (limited to 'engines/pegasus/neighborhood/caldoria/caldoria.cpp')
-rw-r--r-- | engines/pegasus/neighborhood/caldoria/caldoria.cpp | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/engines/pegasus/neighborhood/caldoria/caldoria.cpp b/engines/pegasus/neighborhood/caldoria/caldoria.cpp index 8c31debf1c..8d46300d9a 100644 --- a/engines/pegasus/neighborhood/caldoria/caldoria.cpp +++ b/engines/pegasus/neighborhood/caldoria/caldoria.cpp @@ -150,14 +150,6 @@ static const TimeValue k5To3Time = 41280; const NotificationFlags kSinclairLoopDoneFlag = kLastNeighborhoodNotificationFlag << 1; -void doorBombTimerExpiredFunction(FunctionPtr *, void *caldoria) { - ((Caldoria *)caldoria)->doorBombTimerExpired(); -} - -void sinclairTimerExpiredFunction(FunctionPtr *, void *caldoria) { - ((Caldoria *)caldoria)->sinclairTimerExpired(); -} - SinclairCallBack::SinclairCallBack(Caldoria *caldoria) { _caldoria = caldoria; } @@ -941,7 +933,7 @@ void Caldoria::setUpRoofTop() { } else if (GameState.getCaldoriaDoorBombed()) { // Long enough for AI hints...? _utilityFuse.primeFuse(kCardBombCountDownTime); - _utilityFuse.setFunctionPtr(&doorBombTimerExpiredFunction, (void *)this); + _utilityFuse.setFunctor(new Common::Functor0Mem<void, Caldoria>(this, &Caldoria::doorBombTimerExpired)); _utilityFuse.lightFuse(); loopCroppedMovie("Images/Caldoria/A48 Bomb Loop", kCaldoria48CardBombLoopLeft, kCaldoria48CardBombLoopTop); @@ -965,7 +957,7 @@ void Caldoria::setUpRoofTop() { if (!GameState.getCaldoriaSinclairShot()) { if (GameState.getCaldoriaSawVoiceAnalysis() && !_utilityFuse.isFuseLit()) { _utilityFuse.primeFuse(GameState.getCaldoriaFuseTimeLimit()); - _utilityFuse.setFunctionPtr(&sinclairTimerExpiredFunction, (void *)this); + _utilityFuse.setFunctor(new Common::Functor0Mem<void, Caldoria>(this, &Caldoria::sinclairTimerExpired)); _utilityFuse.lightFuse(); } } else { @@ -1198,7 +1190,7 @@ void Caldoria::receiveNotification(Notification *notification, const Notificatio break; case kCa49NorthVoiceAnalysis: _utilityFuse.primeFuse(kSinclairShootsTimeLimit); - _utilityFuse.setFunctionPtr(&sinclairTimerExpiredFunction, (void*) this); + _utilityFuse.setFunctor(new Common::Functor0Mem<void, Caldoria>(this, &Caldoria::sinclairTimerExpired)); _utilityFuse.lightFuse(); GameState.setCaldoriaSawVoiceAnalysis(true); break; @@ -1614,7 +1606,7 @@ void Caldoria::dropItemIntoRoom(Item *item, Hotspot *dropSpot) { Neighborhood::dropItemIntoRoom(item, dropSpot); // Long enough for AI hints...? _utilityFuse.primeFuse(kCardBombCountDownTime); - _utilityFuse.setFunctionPtr(&doorBombTimerExpiredFunction, (void *)this); + _utilityFuse.setFunctor(new Common::Functor0Mem<void, Caldoria>(this, &Caldoria::doorBombTimerExpired)); _utilityFuse.lightFuse(); GameState.setCaldoriaFuseTimeLimit(kCardBombCountDownTime); loopCroppedMovie("Images/Caldoria/A48 Bomb Loop", kCaldoria48CardBombLoopLeft, kCaldoria48CardBombLoopTop); |