From 6437ca1ede3550fbba7366d373e51654d1ab19d5 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Tue, 26 Dec 2017 21:24:08 +0100 Subject: 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. --- backends/events/ps3sdl/ps3sdl-events.cpp | 46 +++++++++++++++----------------- 1 file 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; } } } -- cgit v1.2.3