From eb08f407d3510ba0e6ccd67feb9f6a4ee5914ab7 Mon Sep 17 00:00:00 2001 From: Jordan Milne Date: Sat, 12 Jan 2013 15:38:22 -0400 Subject: [PATCH] Oops, remove resource leak in the input wrapper. --- extern/sdl4ogre/sdlinputwrapper.cpp | 33 +++++++++++------------------ extern/sdl4ogre/sdlinputwrapper.hpp | 1 - 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/extern/sdl4ogre/sdlinputwrapper.cpp b/extern/sdl4ogre/sdlinputwrapper.cpp index 529740d5e..0a0e321bb 100644 --- a/extern/sdl4ogre/sdlinputwrapper.cpp +++ b/extern/sdl4ogre/sdlinputwrapper.cpp @@ -28,21 +28,7 @@ namespace SFO mMouseX(0) { _setupOISKeys(); - _start(); - } - - InputWrapper::~InputWrapper() - { - if(mSDLWindow != NULL) - SDL_DestroyWindow(mSDLWindow); - mSDLWindow = NULL; - - SDL_StopTextInput(); - SDL_Quit(); - } - bool InputWrapper::_start() - { //get the HWND from ogre's renderwindow size_t windowHnd; mWindow->getCustomAttribute("WINDOW", &windowHnd); @@ -50,12 +36,11 @@ namespace SFO //wrap our own event handler around ogre's mSDLWindow = SDL_CreateWindowFrom((void*)windowHnd); - if(mSDLWindow == NULL) - return false; + assert(mSDLWindow != NULL); //without this SDL will take ownership of the window and iconify it when //we alt-tab away. - SDL_SetWindowFullscreen(mSDLWindow, 0); + //SDL_SetWindowFullscreen(mSDLWindow, 0); //translate our keypresses into text SDL_StartTextInput(); @@ -91,14 +76,20 @@ namespace SFO XFlush(display); } #endif - return true; } - void InputWrapper::capture() + InputWrapper::~InputWrapper() { - if(!_start()) - throw std::runtime_error(SDL_GetError()); + if(mSDLWindow != NULL) + SDL_DestroyWindow(mSDLWindow); + mSDLWindow = NULL; + SDL_StopTextInput(); + SDL_Quit(); + } + + void InputWrapper::capture() + { SDL_Event evt; while(SDL_PollEvent(&evt)) { diff --git a/extern/sdl4ogre/sdlinputwrapper.hpp b/extern/sdl4ogre/sdlinputwrapper.hpp index 5233fee8b..d3c172b49 100644 --- a/extern/sdl4ogre/sdlinputwrapper.hpp +++ b/extern/sdl4ogre/sdlinputwrapper.hpp @@ -35,7 +35,6 @@ namespace SFO void warpMouse(int x, int y); private: - bool _start(); bool _handleWarpMotion(const SDL_MouseMotionEvent& evt); void _wrapMousePointer(const SDL_MouseMotionEvent &evt);