DEADSOFTWARE

Revert "Revert "no more delay between weapon switching: now player should release...
[d2df-sdl.git] / src / game / g_window.pas
index 7f542509b7b9febaf98200f072db129d08de578d..8336ea9b82cb39b11cd0b5b95c8e992e8cc3b0dd 100644 (file)
@@ -51,11 +51,7 @@ implementation
 
 uses
 {$IFDEF WINDOWS}Windows,{$ENDIF}
-{$IFDEF USE_NANOGL}
-  nanoGL,
-{$ELSE}
-  GL, GLExt,
-{$ENDIF}
+{$INCLUDE ../nogl/noGLuses.inc}
 {$IFDEF ENABLE_HOLMES}
   g_holmes, sdlcarcass, fui_ctls,
 {$ENDIF}
@@ -98,9 +94,15 @@ begin
   if (h_Wnd <> nil) then SDL_DestroyWindow(h_Wnd);
   if (h_GL <> nil) and (not preserveGL) then
   begin
+
 {$IFDEF USE_NANOGL}
     nanoGL_Destroy;
-{$ENDIF USE_NANOGL}
+{$ENDIF}
+
+{$IFDEF USE_NOGL}
+    nogl_Quit;
+{$ENDIF}
+
     SDL_GL_DeleteContext(h_GL);
   end;
   h_Wnd := nil;
@@ -232,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;
@@ -244,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;
@@ -279,7 +287,7 @@ begin
   if result then
   begin
     g_Window_SetDisplay(preserve);
-    ChangeWindowSize();
+    ChangeWindowSize(true);
   end;
 {$ENDIF}
 end;
@@ -306,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);
@@ -335,7 +345,7 @@ begin
         gScreenWidth := ev.data1;
         gScreenHeight := ev.data2;
       end;
-      ChangeWindowSize();
+      ChangeWindowSize(false);
       SwapBuffers();
       if g_debug_WinMsgs then
       begin
@@ -394,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;
@@ -564,6 +576,9 @@ begin
     e_WriteLog('nanoGL initialization error', TMsgType.Fatal);
     exit;
   end;
+{$ENDIF}
+{$IFDEF USE_NOGL}
+  nogl_Init;
 {$ENDIF}
   {$IFDEF ENABLE_HOLMES}
     if (assigned(oglInitCB)) then oglInitCB();
@@ -819,7 +834,7 @@ end;
 procedure InitOpenGL ();
 begin
 {$IF not DEFINED(HEADLESS)}
-  {$IFDEF USE_NANOGL}
+  {$IFDEF USE_GLES1}
     SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1);
     SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
     SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);    
@@ -887,8 +902,10 @@ var
   {$ENDIF}
   arg: AnsiString;
   mdfo: TStream;
+  {$IFDEF ENABLE_HOLMES}
   itmp: Integer;
   valres: Word;
+  {$ENDIF}
 begin
 {$IFDEF HEADLESS}
   e_NoGraphics := true;
@@ -1006,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}