diff options
author | Bastien Bouclet | 2017-12-26 21:24:08 +0100 |
---|---|---|
committer | Bastien Bouclet | 2017-12-26 21:29:30 +0100 |
commit | 6437ca1ede3550fbba7366d373e51654d1ab19d5 (patch) | |
tree | 1e6753bec8918be72291b0604735c79f2105dbee /backends/events | |
parent | 6af4f3d236de3597030376297be45001b819bf91 (diff) | |
download | scummvm-rg350-6437ca1ede3550fbba7366d373e51654d1ab19d5.tar.gz scummvm-rg350-6437ca1ede3550fbba7366d373e51654d1ab19d5.tar.bz2 scummvm-rg350-6437ca1ede3550fbba7366d373e51654d1ab19d5.zip |
PS3: Stop using SDL mouse focus events to detect the XMB
Mouse focus events are also sent by SDL when the mouse is warped outside
of the window area. App suspended / resumed are now used. These are only
sent by SDL when opening / closing the XMB on the PS3.
Fixes #10340.
Diffstat (limited to 'backends/events')
-rw-r--r-- | backends/events/ps3sdl/ps3sdl-events.cpp | 46 |
1 files changed, 21 insertions, 25 deletions
diff --git a/backends/events/ps3sdl/ps3sdl-events.cpp b/backends/events/ps3sdl/ps3sdl-events.cpp index 50655597a5..2aa2adbac6 100644 --- a/backends/events/ps3sdl/ps3sdl-events.cpp +++ b/backends/events/ps3sdl/ps3sdl-events.cpp @@ -36,33 +36,29 @@ * This pauses execution and keeps redrawing the screen until the XMB is closed. */ void PS3SdlEventSource::preprocessEvents(SDL_Event *event) { - if (event->type == SDL_WINDOWEVENT) { - if (event->window.event == SDL_WINDOWEVENT_LEAVE) { - // XMB opened - if (g_engine) - g_engine->pauseEngine(true); + if (event->type == SDL_APP_DIDENTERBACKGROUND) { + // XMB opened + if (g_engine) + g_engine->pauseEngine(true); - for (;;) { - if (!SDL_PollEvent(event)) { - // Locking the screen forces a full redraw - Graphics::Surface* screen = g_system->lockScreen(); - if (screen) { - g_system->unlockScreen(); - g_system->updateScreen(); - } - SDL_Delay(10); - continue; - } - if (event->type == SDL_QUIT) - return; - if (event->type != SDL_WINDOWEVENT) - continue; - if (event->window.event == SDL_WINDOWEVENT_ENTER) { - // XMB closed - if (g_engine) - g_engine->pauseEngine(false); - return; + for (;;) { + if (!SDL_PollEvent(event)) { + // Locking the screen forces a full redraw + Graphics::Surface* screen = g_system->lockScreen(); + if (screen) { + g_system->unlockScreen(); + g_system->updateScreen(); } + SDL_Delay(10); + continue; + } + if (event->type == SDL_QUIT) + return; + if (event->type == SDL_APP_DIDENTERFOREGROUND) { + // XMB closed + if (g_engine) + g_engine->pauseEngine(false); + return; } } } |