diff --git a/examples/common/entry/entry_sdl.cpp b/examples/common/entry/entry_sdl.cpp index e469fa0c..b1decd78 100644 --- a/examples/common/entry/entry_sdl.cpp +++ b/examples/common/entry/entry_sdl.cpp @@ -268,7 +268,10 @@ namespace entry { const SDL_MouseMotionEvent& mev = event.motion; WindowHandle handle = findHandle(mev.windowID); - m_eventQueue.postMouseEvent(handle, mev.x, mev.y, 0); + if (isValid(handle) ) + { + m_eventQueue.postMouseEvent(handle, mev.x, mev.y, 0); + } } break; @@ -277,7 +280,10 @@ namespace entry { const SDL_MouseButtonEvent& mev = event.button; WindowHandle handle = findHandle(mev.windowID); - m_eventQueue.postMouseEvent(handle, mev.x, mev.y, 0, MouseButton::Left, mev.type == SDL_MOUSEBUTTONDOWN); + if (isValid(handle) ) + { + m_eventQueue.postMouseEvent(handle, mev.x, mev.y, 0, MouseButton::Left, mev.type == SDL_MOUSEBUTTONDOWN); + } } break; @@ -286,9 +292,12 @@ namespace entry { const SDL_KeyboardEvent& kev = event.key; WindowHandle handle = findHandle(kev.windowID); - uint8_t modifiers = translateKeyModifiers(kev.keysym.mod); - Key::Enum key = translateKey(kev.keysym.scancode); - m_eventQueue.postKeyEvent(handle, key, modifiers, kev.state == SDL_PRESSED); + if (isValid(handle) ) + { + uint8_t modifiers = translateKeyModifiers(kev.keysym.mod); + Key::Enum key = translateKey(kev.keysym.scancode); + m_eventQueue.postKeyEvent(handle, key, modifiers, kev.state == SDL_PRESSED); + } } break; @@ -367,9 +376,12 @@ namespace entry case SDL_USER_WINDOW_DESTROY: { WindowHandle handle = getWindowHandle(uev); - m_eventQueue.postWindowEvent(handle); - SDL_DestroyWindow(m_window[handle.idx]); - m_window[handle.idx] = NULL; + if (isValid(handle) ) + { + m_eventQueue.postWindowEvent(handle); + SDL_DestroyWindow(m_window[handle.idx]); + m_window[handle.idx] = NULL; + } } break; @@ -377,7 +389,10 @@ namespace entry { WindowHandle handle = getWindowHandle(uev); Msg* msg = (Msg*)uev.data2; - SDL_SetWindowTitle(m_window[handle.idx], msg->m_title.c_str()); + if (isValid(handle) ) + { + SDL_SetWindowTitle(m_window[handle.idx], msg->m_title.c_str()); + } delete msg; } break; @@ -395,15 +410,22 @@ namespace entry { WindowHandle handle = getWindowHandle(uev); Msg* msg = (Msg*)uev.data2; - setWindowSize(handle, msg->m_width, msg->m_height); + if (isValid(handle) ) + { + setWindowSize(handle, msg->m_width, msg->m_height); + } + delete msg; } break; case SDL_USER_WINDOW_TOGGLE_FRAME: { WindowHandle handle = getWindowHandle(uev); - m_flags[handle.idx] ^= ENTRY_WINDOW_FLAG_FRAME; - SDL_SetWindowBordered(m_window[handle.idx], (SDL_bool)!!(m_flags[handle.idx] & ENTRY_WINDOW_FLAG_FRAME) ); + if (isValid(handle) ) + { + m_flags[handle.idx] ^= ENTRY_WINDOW_FLAG_FRAME; + SDL_SetWindowBordered(m_window[handle.idx], (SDL_bool)!!(m_flags[handle.idx] & ENTRY_WINDOW_FLAG_FRAME) ); + } } break;