some hopefully harmless experiments Hedgewars-iOS-1.3.2
authorkoda
Sun, 25 Sep 2011 03:32:07 +0200
changeset 6021 652a199d4f38
parent 6020 c792d4b3e080
child 6022 8ed6e810051a
some hopefully harmless experiments
hedgewars/SDLh.pas
hedgewars/hwengine.pas
hedgewars/uStore.pas
--- a/hedgewars/SDLh.pas	Sun Sep 25 02:28:33 2011 +0200
+++ b/hedgewars/SDLh.pas	Sun Sep 25 03:32:07 2011 +0200
@@ -776,6 +776,7 @@
 function  SDL_CreateRenderer(window: PSDL_Window; index, flags: LongInt): PSDL_Renderer; cdecl; external SDLLibName;
 function  SDL_DestroyWindow(window: PSDL_Window): LongInt; cdecl; external SDLLibName;
 function  SDL_DestroyRenderer(renderer: PSDL_Renderer): LongInt; cdecl; external SDLLibName;
+procedure SDL_SetWindowSize(window: PSDL_Window; w, h: LongInt); cdecl; external SDLLibName;
 
 function  SDL_GL_CreateContext(window: PSDL_Window): PSDL_GLContext; cdecl; external SDLLibName;
 procedure SDL_GL_DeleteContext(context: PSDL_GLContext); cdecl; external SDLLibName;
--- a/hedgewars/hwengine.pas	Sun Sep 25 02:28:33 2011 +0200
+++ b/hedgewars/hwengine.pas	Sun Sep 25 03:32:07 2011 +0200
@@ -188,6 +188,12 @@
                     else if event.window.event = SDL_WINDOWEVENT_RESTORED then
                         begin
                         GameState:= previousGameState;
+                        end
+                    else if event.window.event = SDL_WINDOWEVENT_RESIZED then
+                        begin
+                        cNewScreenWidth:= max(2 * (event.window.data1 div 2), cMinScreenWidth);
+                        cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight);
+                        cScreenResizeDelay:= RealTicks+500;
                         end;
 {$ELSE}
                     KeyPressChat(event.key.keysym.unicode);
--- a/hedgewars/uStore.pas	Sun Sep 25 02:28:33 2011 +0200
+++ b/hedgewars/uStore.pas	Sun Sep 25 03:32:07 2011 +0200
@@ -587,7 +587,11 @@
 
 procedure SetupOpenGL;
 //var vendor: shortstring = '';
+var buf: array[byte] of char;
 begin
+    buf[0]:= char(0); // avoid compiler hint
+    AddFileLog('Setting up OpenGL (using driver: ' + shortstring(SDL_VideoDriverName(buf, sizeof(buf))) + ')');
+
 {$IFDEF SDL13}
     // this function creates an opengles1.1 context by default on mobile devices
     // use SDL_GL_SetAttribute to change this behaviour
@@ -945,18 +949,16 @@
 
 procedure chFullScr(var s: shortstring);
 var flags: Longword = 0;
-    ico: PSDL_Surface;
-    buf: array[byte] of char;
+    {$IFNDEF IPHONEOS}ico: PSDL_Surface;{$ENDIF}
     reinit: boolean;
     {$IFDEF SDL13}x, y: LongInt;{$ENDIF}
 begin
     if Length(s) = 0 then cFullScreen:= not cFullScreen
     else cFullScreen:= s = '1';
 
-    buf[0]:= char(0); // avoid compiler hint
     AddFileLog('Preparing to change video parameters...');
-
     reinit:= false;
+{$IFNDEF IPHONEOS}
     if SDLPrimSurface = nil then
         begin
         // set window title
@@ -990,6 +992,7 @@
         SDL_FreeSurface(SDLPrimSurface);
         SDLPrimSurface:= nil;
         end;
+{$ENDIF}
 
     // these attributes must be set up before creating the sdl window
 {$IFNDEF WIN32}
@@ -1014,8 +1017,9 @@
     flags:= flags or SDL_WINDOW_BORDERLESS or SDL_WINDOW_RESIZABLE;
 {$ENDIF}
 
-    if cFullScreen then SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cOrigScreenWidth, cOrigScreenHeight, flags or SDL_WINDOW_FULLSCREEN)
-    else SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cScreenWidth, cScreenHeight, flags);
+    if SDLwindow = nil then
+        if cFullScreen then SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cOrigScreenWidth, cOrigScreenHeight, flags or SDL_WINDOW_FULLSCREEN)
+        else SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cScreenWidth, cScreenHeight, flags);
     SDLTry(SDLwindow <> nil, true);
 {$ELSE}
     flags:= SDL_OPENGL or SDL_RESIZABLE;
@@ -1034,7 +1038,6 @@
         end;
 {$ENDIF}
 
-    AddFileLog('Setting up OpenGL (using driver: ' + shortstring(SDL_VideoDriverName(buf, sizeof(buf))) + ')');
     SetupOpenGL();
     if reinit then
         begin