Always clear any current events when changing emulation states.

This fixes a bug in exiting pause mode, and 'remembering' the
events that were set previously.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2065 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2010-07-09 14:52:03 +00:00
parent c0cc5b489e
commit 8bf546ce1d
1 changed files with 5 additions and 13 deletions

View File

@ -171,7 +171,6 @@ void EventHandler::initialize()
void EventHandler::reset(State state) void EventHandler::reset(State state)
{ {
setEventState(state); setEventState(state);
myEvent->clear();
myOSystem->state().reset(); myOSystem->state().reset();
setContinuousSnapshots(0); setContinuousSnapshots(0);
@ -1074,15 +1073,9 @@ bool EventHandler::eventStateChange(Event::Type type)
{ {
case Event::PauseMode: case Event::PauseMode:
if(myState == S_EMULATE) if(myState == S_EMULATE)
{ setEventState(S_PAUSE);
myState = S_PAUSE;
myOSystem->sound().mute(true);
}
else if(myState == S_PAUSE) else if(myState == S_PAUSE)
{ setEventState(S_EMULATE);
myState = S_EMULATE;
myOSystem->sound().mute(false);
}
else else
handled = false; handled = false;
break; break;
@ -1935,7 +1928,6 @@ void EventHandler::enterMenuMode(State state)
myOSystem->frameBuffer().setCursorState(); myOSystem->frameBuffer().setCursorState();
myOSystem->sound().mute(true); myOSystem->sound().mute(true);
myEvent->clear();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -1946,7 +1938,6 @@ void EventHandler::leaveMenuMode()
myOSystem->frameBuffer().setCursorState(); myOSystem->frameBuffer().setCursorState();
myOSystem->sound().mute(false); myOSystem->sound().mute(false);
myEvent->clear();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -1973,7 +1964,6 @@ bool EventHandler::enterDebugMode()
myOverlay->reStack(); myOverlay->reStack();
myOSystem->frameBuffer().setCursorState(); myOSystem->frameBuffer().setCursorState();
myOSystem->sound().mute(true); myOSystem->sound().mute(true);
myEvent->clear();
#else #else
myOSystem->frameBuffer().showMessage("Debugger unsupported", myOSystem->frameBuffer().showMessage("Debugger unsupported",
kBottomCenter, true); kBottomCenter, true);
@ -1997,7 +1987,6 @@ void EventHandler::leaveDebugMode()
myOSystem->createFrameBuffer(); myOSystem->createFrameBuffer();
myOSystem->frameBuffer().setCursorState(); myOSystem->frameBuffer().setCursorState();
myOSystem->sound().mute(false); myOSystem->sound().mute(false);
myEvent->clear();
#endif #endif
} }
@ -2044,6 +2033,9 @@ void EventHandler::setEventState(State state)
myOSystem->stateChanged(myState); myOSystem->stateChanged(myState);
if(&myOSystem->frameBuffer()) if(&myOSystem->frameBuffer())
myOSystem->frameBuffer().stateChanged(myState); myOSystem->frameBuffer().stateChanged(myState);
// Always clear any pending events when changing states
myEvent->clear();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -