diff -r 8710987d3484 -r 25d4118056e1 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Tue Aug 09 21:31:49 2011 +0200 +++ b/hedgewars/hwengine.pas Tue Aug 09 21:41:52 2011 +0200 @@ -105,7 +105,7 @@ end; {$IFDEF SDL13} - SDL_RenderPresent(SDLrender); + SDL_GL_SwapWindow(SDLwindow); {$ELSE} SDL_GL_SwapBuffers(); {$ENDIF} @@ -130,10 +130,9 @@ CloseIPC(); TTF_Quit(); {$IFDEF SDL13} - SDL_RenderClear(SDLrender); - SDL_DestroyRenderer(SDLrender); + SDL_GL_DeleteContext(SDLGLcontext); SDL_DestroyWindow(SDLwindow); - SDLrender:= nil; + SDLGLcontext:= nil; SDLwindow:= nil; {$ENDIF} SDL_Quit(); @@ -147,6 +146,7 @@ const event: TSDL_Event = (); {$WARNINGS ON} var PrevTime, CurrTime: Longword; + prevFocusState: boolean; begin PrevTime:= SDL_GetTicks; while isTerminated = false do @@ -165,14 +165,22 @@ KeyPressChat(event.key.keysym.sym); SDL_WINDOWEVENT: if event.window.event = SDL_WINDOWEVENT_SHOWN then + begin cHasFocus:= true; + onFocusStateChanged() + end; {$ELSE} KeyPressChat(event.key.keysym.unicode); SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then wheelDown:= true; SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then wheelUp:= true; SDL_ACTIVEEVENT: if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then + begin + prevFocusState:= cHasFocus; cHasFocus:= event.active.gain = 1; + if prevFocusState xor cHasFocus then + onFocusStateChanged() + end; {$ENDIF} SDL_JOYAXISMOTION: ControllerAxisEvent(event.jaxis.which, event.jaxis.axis, event.jaxis.value); SDL_JOYHATMOTION: ControllerHatEvent(event.jhat.which, event.jhat.hat, event.jhat.value);