diff --git a/SourceX/miniwin/misc_msg.cpp b/SourceX/miniwin/misc_msg.cpp index 2c71c9151..22e8392fa 100644 --- a/SourceX/miniwin/misc_msg.cpp +++ b/SourceX/miniwin/misc_msg.cpp @@ -244,7 +244,7 @@ WPARAM keystate_for_mouse(WPARAM ret) return ret; } -WINBOOL false_avail(char *name, int value) +WINBOOL false_avail(const char *name, int value) { DUMMY_PRINT("Unhandled SDL event: %s %d", name, value); return true; @@ -554,13 +554,34 @@ WINBOOL PeekMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilter case SDL_TEXTINPUT: return false_avail("SDL_TEXTINPUT", e.text.windowID); case SDL_WINDOWEVENT: - if (e.window.event == SDL_WINDOWEVENT_CLOSE) { + switch (e.window.event) { + case SDL_WINDOWEVENT_HIDDEN: + // TODO stop rendering to minimize CPU usage (gbActive) + break; + case SDL_WINDOWEVENT_MINIMIZED: + // TODO pause + break; + case SDL_WINDOWEVENT_FOCUS_GAINED: + case SDL_WINDOWEVENT_TAKE_FOCUS: + case SDL_WINDOWEVENT_RESIZED: + case SDL_WINDOWEVENT_SIZE_CHANGED: + case SDL_WINDOWEVENT_MOVED: + case SDL_WINDOWEVENT_RESTORED: + case SDL_WINDOWEVENT_MAXIMIZED: + case SDL_WINDOWEVENT_LEAVE: + case SDL_WINDOWEVENT_FOCUS_LOST: + break; + case SDL_WINDOWEVENT_CLOSE: lpMsg->message = DVL_WM_QUERYENDSESSION; - } else if (e.window.event == SDL_WINDOWEVENT_SHOWN) { + break; + case SDL_WINDOWEVENT_SHOWN: + gbActive = true; lpMsg->message = DVL_WM_PAINT; - } else if (e.window.event == SDL_WINDOWEVENT_EXPOSED) { + break; + case SDL_WINDOWEVENT_EXPOSED: lpMsg->message = DVL_WM_PAINT; - } else if (e.window.event == SDL_WINDOWEVENT_ENTER) { + break; + case SDL_WINDOWEVENT_ENTER: lpMsg->message = DVL_WM_MOUSEHOVER; // Bug in SDL, SDL_WarpMouseInWindow doesn't emit SDL_MOUSEMOTION // and SDL_GetMouseState gives previous location if mouse was @@ -570,9 +591,11 @@ WINBOOL PeekMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilter MouseY = mouseWarpingY; mouseWarping = false; } - } else { + break; + default: return false_avail("SDL_WINDOWEVENT", e.window.event); } + break; #endif default: