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.
This commit is contained in:
Bastien Bouclet 2017-12-26 21:24:08 +01:00
parent 6af4f3d236
commit 6437ca1ede

View file

@ -36,33 +36,29 @@
* This pauses execution and keeps redrawing the screen until the XMB is closed. * This pauses execution and keeps redrawing the screen until the XMB is closed.
*/ */
void PS3SdlEventSource::preprocessEvents(SDL_Event *event) { void PS3SdlEventSource::preprocessEvents(SDL_Event *event) {
if (event->type == SDL_WINDOWEVENT) { if (event->type == SDL_APP_DIDENTERBACKGROUND) {
if (event->window.event == SDL_WINDOWEVENT_LEAVE) { // XMB opened
// XMB opened if (g_engine)
if (g_engine) g_engine->pauseEngine(true);
g_engine->pauseEngine(true);
for (;;) { for (;;) {
if (!SDL_PollEvent(event)) { if (!SDL_PollEvent(event)) {
// Locking the screen forces a full redraw // Locking the screen forces a full redraw
Graphics::Surface* screen = g_system->lockScreen(); Graphics::Surface* screen = g_system->lockScreen();
if (screen) { if (screen) {
g_system->unlockScreen(); g_system->unlockScreen();
g_system->updateScreen(); 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;
} }
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;
} }
} }
} }