forked from teamnwah/openmw-tes3coop
Oops, remove resource leak in the input wrapper.
This commit is contained in:
parent
5a6589af01
commit
eb08f407d3
2 changed files with 12 additions and 22 deletions
33
extern/sdl4ogre/sdlinputwrapper.cpp
vendored
33
extern/sdl4ogre/sdlinputwrapper.cpp
vendored
|
@ -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;
|
||||
}
|
||||
|
||||
InputWrapper::~InputWrapper()
|
||||
{
|
||||
if(mSDLWindow != NULL)
|
||||
SDL_DestroyWindow(mSDLWindow);
|
||||
mSDLWindow = NULL;
|
||||
|
||||
SDL_StopTextInput();
|
||||
SDL_Quit();
|
||||
}
|
||||
|
||||
void InputWrapper::capture()
|
||||
{
|
||||
if(!_start())
|
||||
throw std::runtime_error(SDL_GetError());
|
||||
|
||||
SDL_Event evt;
|
||||
while(SDL_PollEvent(&evt))
|
||||
{
|
||||
|
|
1
extern/sdl4ogre/sdlinputwrapper.hpp
vendored
1
extern/sdl4ogre/sdlinputwrapper.hpp
vendored
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue