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.
*/
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;
}
}
}