rnd-20140106-1-src
authorHolger Schemel <info@artsoft.org>
Mon, 6 Jan 2014 00:37:59 +0000 (01:37 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 09:00:31 +0000 (11:00 +0200)
* fixed using fullscreen mode on Android instead of pseudo-window mode
* fixed keeping desktop fullscreen mode when changing viewport size

ChangeLog
src/conftime.h
src/events.c
src/files.c
src/init.c
src/libgame/misc.c
src/libgame/sdl.c
src/libgame/sdl.h
src/libgame/system.c
src/screens.c

index 73069a156816af299c94b67a535c322a69bc45dd..161577373a3678d7313b6580eee99cff265653a0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-01-05
+       * fixed using fullscreen mode on Android instead of pseudo-window mode
+       * fixed keeping desktop fullscreen mode when changing viewport size
+
 2014-01-04
        * fixed remaining text input problems for non-ASCII keys with modifier
        * added window scaling options to graphics setup menu
index 8ccd1865b1a4d2b6020eaf89a276072af5377369..4a66c3900651d024fd2eb8bab9400c70d640ec97 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2014-01-04 22:53"
+#define COMPILE_DATE_STRING "2014-01-05 22:41"
index 6fc55ea5d32433f31304c3ac969b94452ea07a81..ed910e64d924b89bd826ddecfabeed0207213f69 100644 (file)
@@ -24,7 +24,7 @@
 #include "network.h"
 
 
-#define        DEBUG_EVENTS            1
+#define        DEBUG_EVENTS            0
 
 
 static boolean cursor_inside_playfield = FALSE;
index 64e204c2bde1ee6ccf13e6cd30226421619af1d1..80105139166562655fc35c9846d8cdee90e41e10 100644 (file)
@@ -11765,6 +11765,10 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->override_level_sounds = AUTO;
   si->override_level_music = AUTO;
 #endif
+
+#if defined(PLATFORM_ANDROID)
+  si->fullscreen = TRUE;
+#endif
 }
 
 static void setSetupInfoToDefaults_EditorCascade(struct SetupInfo *si)
index 723f8af0e2597b1a5924c86104ed4e365cb0b5f6..ae154457308a300dfd0d161605ca6ed4532379e6 100644 (file)
@@ -6316,6 +6316,10 @@ void OpenAll()
 
   InitSetup();
 
+#if 1
+  Error(ERR_INFO, "::: MARK 1: setup.fullscreen == %d", setup.fullscreen);
+#endif
+
   print_timestamp_time("[init setup/config stuff (1)]");
 
   InitGameInfo();
@@ -6340,6 +6344,10 @@ void OpenAll()
 
   print_timestamp_time("[init setup/config stuff]");
 
+#if 1
+  Error(ERR_INFO, "::: MARK 2: setup.fullscreen == %d", setup.fullscreen);
+#endif
+
   InitVideoDisplay();
   InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen);
 
index 36bf1ce9dbd68fb1d905d9c6c38fedc51cd5e4cf..8114d79e40b82fb59325a2882cbd2afc2f5d3762 100644 (file)
@@ -3767,7 +3767,7 @@ void NotifyUserAboutErrorFile()
 
 #if DEBUG
 
-#define DEBUG_PRINT_INIT_TIMESTAMPS            TRUE
+#define DEBUG_PRINT_INIT_TIMESTAMPS            FALSE
 #define DEBUG_PRINT_INIT_TIMESTAMPS_DEPTH      10
 
 #define DEBUG_NUM_TIMESTAMPS                   10
index cdb367fe1b65e3895f6989972f462b04c397b0c0..fbac750141434b8f2dbaebbc54056fd53f7de85f 100644 (file)
@@ -391,6 +391,7 @@ static SDL_Surface *SDLCreateScreen(DrawBuffer **backbuffer,
                                    boolean fullscreen)
 {
   SDL_Surface *new_surface = NULL;
+  static boolean fullscreen_enabled = FALSE;
 
   int surface_flags_window = SURFACE_FLAGS;
 #if defined(TARGET_SDL2)
@@ -421,27 +422,50 @@ static SDL_Surface *SDLCreateScreen(DrawBuffer **backbuffer,
 #endif
 
   if ((*backbuffer)->surface)
+  {
     SDL_FreeSurface((*backbuffer)->surface);
+    (*backbuffer)->surface = NULL;
+  }
 
   if (sdl_texture)
+  {
     SDL_DestroyTexture(sdl_texture);
+    sdl_texture = NULL;
+  }
 
-  if (sdl_renderer)
-    SDL_DestroyRenderer(sdl_renderer);
+  if (!(fullscreen && fullscreen_enabled))
+  {
+    if (sdl_renderer)
+    {
+      SDL_DestroyRenderer(sdl_renderer);
+      sdl_renderer = NULL;
+    }
 
-  if (sdl_window)
-    SDL_DestroyWindow(sdl_window);
+    if (sdl_window)
+    {
+      SDL_DestroyWindow(sdl_window);
+      sdl_window = NULL;
+    }
+  }
 
-  sdl_window = SDL_CreateWindow(program.window_title,
-                               SDL_WINDOWPOS_CENTERED,
-                               SDL_WINDOWPOS_CENTERED,
-                               (int)(screen_scaling_factor * width),
-                               (int)(screen_scaling_factor * height),
-                               surface_flags);
+  Error(ERR_INFO, "::: checking 'sdl_window' ...");
+
+  if (sdl_window == NULL)
+    Error(ERR_INFO, "::: calling SDL_CreateWindow() [%d, %d, %d] ...",
+         setup.fullscreen, fullscreen, fullscreen_enabled);
+
+  if (sdl_window == NULL)
+    sdl_window = SDL_CreateWindow(program.window_title,
+                                 SDL_WINDOWPOS_CENTERED,
+                                 SDL_WINDOWPOS_CENTERED,
+                                 (int)(screen_scaling_factor * width),
+                                 (int)(screen_scaling_factor * height),
+                                 surface_flags);
 
   if (sdl_window != NULL)
   {
-    sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
+    if (sdl_renderer == NULL)
+      sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
 
     if (sdl_renderer != NULL)
     {
@@ -509,6 +533,10 @@ static SDL_Surface *SDLCreateScreen(DrawBuffer **backbuffer,
   new_surface = SDL_SetVideoMode(width, height, video.depth, surface_flags);
 #endif
 
+  // store fullscreen state ("video.fullscreen_enabled" may not reflect this!)
+  if (new_surface != NULL)
+    fullscreen_enabled = fullscreen;
+
   return new_surface;
 }
 
index 5652613ac59915a6d32e848bb17a3800e8db9307..244544d8237311709626b39b6db49c3470d136c6 100644 (file)
@@ -49,7 +49,8 @@
 
 #if defined(PLATFORM_ANDROID)
 #define WINDOW_SCALING_STATUS  WINDOW_SCALING_NOT_AVAILABLE
-#define FULLSCREEN_STATUS      FULLSCREEN_NOT_AVAILABLE
+#define FULLSCREEN_STATUS      FULLSCREEN_AVAILABLE
+#define USE_DESKTOP_FULLSCREEN TRUE
 #elif defined(TARGET_SDL2)
 #define WINDOW_SCALING_STATUS  WINDOW_SCALING_AVAILABLE
 #define FULLSCREEN_STATUS      FULLSCREEN_AVAILABLE
index 39c78b3fef57230c58ae320f6632572ff1f1d64c..59e5fd61c27c711c46e7a6cd07603505e8c26bc4 100644 (file)
@@ -438,6 +438,10 @@ void CloseVideoDisplay(void)
 
 void InitVideoBuffer(int width, int height, int depth, boolean fullscreen)
 {
+#if 0
+  static boolean initialized = FALSE;
+#endif
+
   video.width = width;
   video.height = height;
   video.depth = GetRealDepth(depth);
@@ -451,6 +455,13 @@ void InitVideoBuffer(int width, int height, int depth, boolean fullscreen)
 
   video.window_scaling_available = WINDOW_SCALING_STATUS;
 
+#if 0
+#if defined(PLATFORM_ANDROID)
+  if (!initialized)
+    video.fullscreen_enabled = TRUE;
+#endif
+#endif
+
 #if defined(TARGET_SDL)
   SDLInitVideoBuffer(&backbuffer, &window, fullscreen);
 #else
@@ -458,6 +469,10 @@ void InitVideoBuffer(int width, int height, int depth, boolean fullscreen)
 #endif
 
   drawto = backbuffer;
+
+#if 0
+  initialized = TRUE;
+#endif
 }
 
 inline static void FreeBitmapPointers(Bitmap *bitmap)
index 720f1574cdff405c282f75dcb4cdd11bba647f89..3c9d2386f165c1d4166f1f00360ff314ea245db9 100644 (file)
@@ -4322,6 +4322,7 @@ static void execSetupGraphics()
   DrawSetupScreen();
 }
 
+#if !defined(PLATFORM_ANDROID)
 #if defined(TARGET_SDL2)
 static void execSetupChooseWindowSize()
 {
@@ -4345,6 +4346,7 @@ static void execSetupChooseScreenMode()
   DrawSetupScreen();
 }
 #endif
+#endif
 
 static void execSetupChooseScrollDelay()
 {
@@ -4694,6 +4696,7 @@ static struct TokenInfo setup_info_editor[] =
 
 static struct TokenInfo setup_info_graphics[] =
 {
+#if !defined(PLATFORM_ANDROID)
   { TYPE_SWITCH,       &setup.fullscreen,      "Fullscreen:"           },
 #if defined(TARGET_SDL2)
   { TYPE_ENTER_LIST,   execSetupChooseWindowSize, "Window Scaling:"    },
@@ -4702,6 +4705,7 @@ static struct TokenInfo setup_info_graphics[] =
   { TYPE_ENTER_LIST,   execSetupChooseScreenMode, "Fullscreen Mode:"   },
   { TYPE_STRING,       &screen_mode_text,      ""                      },
 #endif
+#endif
 #if 0
   { TYPE_SWITCH,       &setup.scroll_delay,    "Scroll Delay:"         },
 #endif