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:
parent
6af4f3d236
commit
6437ca1ede
1 changed files with 21 additions and 25 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue