aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Bouclet2017-12-26 21:24:08 +0100
committerBastien Bouclet2017-12-26 21:29:30 +0100
commit6437ca1ede3550fbba7366d373e51654d1ab19d5 (patch)
tree1e6753bec8918be72291b0604735c79f2105dbee
parent6af4f3d236de3597030376297be45001b819bf91 (diff)
downloadscummvm-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.
-rw-r--r--backends/events/ps3sdl/ps3sdl-events.cpp46
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;
}
}
}