DEADSOFTWARE

Revert "Revert "no more delay between weapon switching: now player should release...
[d2df-sdl.git] / src / game / g_window.pas
index e57defe11cf4067a739f8f8c986dba9fef8f763b..8336ea9b82cb39b11cd0b5b95c8e992e8cc3b0dd 100644 (file)
@@ -234,7 +234,7 @@ begin
 end;
 
 
-procedure ChangeWindowSize ();
+procedure ChangeWindowSize (requested: Boolean);
 begin
   e_LogWritefln('  ChangeWindowSize: (ws=%dx%d) (ss=%dx%d)', [gWinSizeX, gWinSizeY, gScreenWidth, gScreenHeight]);
   gWinSizeX := gScreenWidth;
@@ -246,7 +246,13 @@ begin
   {$ENDIF}
   e_ResizeWindow(gScreenWidth, gScreenHeight);
   g_Game_SetupScreenSize();
-  g_Menu_Reset();
+  {$IF DEFINED(ANDROID)}
+    (* This will fix menu reset on keyboard showing *)
+    if requested then
+      g_Menu_Reset;
+  {$ELSE}
+    g_Menu_Reset;
+  {$ENDIF}
   g_Game_ClearLoading();
 {$ENDIF}
 end;
@@ -281,7 +287,7 @@ begin
   if result then
   begin
     g_Window_SetDisplay(preserve);
-    ChangeWindowSize();
+    ChangeWindowSize(true);
   end;
 {$ENDIF}
 end;
@@ -308,6 +314,8 @@ begin
     SDL_WINDOWEVENT_MINIMIZED:
     begin
       e_UnpressAllKeys();
+      if (gPlayer1 <> nil) then gPlayer1.releaseAllWeaponSwitchKeys();
+      if (gPlayer2 <> nil) then gPlayer2.releaseAllWeaponSwitchKeys();
       if not wMinimized then
       begin
         e_ResizeWindow(0, 0);
@@ -337,7 +345,7 @@ begin
         gScreenWidth := ev.data1;
         gScreenHeight := ev.data2;
       end;
-      ChangeWindowSize();
+      ChangeWindowSize(false);
       SwapBuffers();
       if g_debug_WinMsgs then
       begin
@@ -396,6 +404,8 @@ begin
     begin
       wDeactivate := true;
       e_UnpressAllKeys();
+      if (gPlayer1 <> nil) then gPlayer1.releaseAllWeaponSwitchKeys();
+      if (gPlayer2 <> nil) then gPlayer2.releaseAllWeaponSwitchKeys();
       //e_WriteLog('window lost focus!', MSG_NOTIFY);
     end;
   end;
@@ -892,8 +902,10 @@ var
   {$ENDIF}
   arg: AnsiString;
   mdfo: TStream;
+  {$IFDEF ENABLE_HOLMES}
   itmp: Integer;
   valres: Word;
+  {$ENDIF}
 begin
 {$IFDEF HEADLESS}
   e_NoGraphics := true;
@@ -1011,15 +1023,16 @@ begin
   e_LogWritefln('stencil buffer size: %s', [ltmp]);
   gwin_has_stencil := (ltmp > 0);
 
-  if not glHasExtension('GL_ARB_texture_non_power_of_two') then
+  if glHasExtension('GL_ARB_texture_non_power_of_two') or
+     glHasExtension('GL_OES_texture_npot') then
   begin
-    e_WriteLog('NPOT textures: NO', TMsgType.Warning);
-    glLegacyNPOT := true;
+    e_WriteLog('NPOT textures: YES', TMsgType.Notify);
+    glLegacyNPOT := false;
   end
   else
   begin
-    e_WriteLog('NPOT textures: YES', TMsgType.Notify);
-    glLegacyNPOT := false;
+    e_WriteLog('NPOT textures: NO', TMsgType.Warning);
+    glLegacyNPOT := true;
   end;
   gwin_dump_extensions := false;
 {$ENDIF}