From 9cd2e9ec8fc0127393dfce9c0359d500c8c238be Mon Sep 17 00:00:00 2001
From: Edward Rudd <urkle@outoforder.cc>
Date: Tue, 09 Apr 2019 02:22:50 +0000
Subject: [PATCH] updae source to 2.0.9 source

---
 source/src/video/android/SDL_androidwindow.c |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/source/src/video/android/SDL_androidwindow.c b/source/src/video/android/SDL_androidwindow.c
index f1cbf58..cf18e67 100644
--- a/source/src/video/android/SDL_androidwindow.c
+++ b/source/src/video/android/SDL_androidwindow.c
@@ -26,6 +26,8 @@
 #include "../SDL_sysvideo.h"
 #include "../../events/SDL_keyboard_c.h"
 #include "../../events/SDL_mouse_c.h"
+#include "../../events/SDL_windowevents_c.h"
+#include "../../core/android/SDL_android.h"
 
 #include "SDL_androidvideo.h"
 #include "SDL_androidwindow.h"
@@ -49,8 +51,8 @@
     /* Adjust the window data to match the screen */
     window->x = 0;
     window->y = 0;
-    window->w = Android_ScreenWidth;
-    window->h = Android_ScreenHeight;
+    window->w = Android_SurfaceWidth;
+    window->h = Android_SurfaceHeight;
 
     window->flags &= ~SDL_WINDOW_RESIZABLE;     /* window is NEVER resizeable */
     window->flags &= ~SDL_WINDOW_HIDDEN;
@@ -100,7 +102,36 @@
 void
 Android_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen)
 {
-    Android_JNI_SetWindowStyle(fullscreen);
+    /* If the window is being destroyed don't change visible state */
+    if (!window->is_destroying) {
+        Android_JNI_SetWindowStyle(fullscreen);
+    }
+
+    /* Ensure our size matches reality after we've executed the window style change.
+     *
+     * It is possible that we've set width and height to the full-size display, but on
+     * Samsung DeX or Chromebooks or other windowed Android environemtns, our window may 
+     * still not be the full display size.
+     */
+    if (!SDL_IsDeXMode() && !SDL_IsChromebook()) {
+        return;
+    }
+
+    SDL_WindowData * data = (SDL_WindowData *)window->driverdata;
+
+    if (!data || !data->native_window) {
+        return;
+    }
+
+    int old_w = window->w;
+    int old_h = window->h;
+
+    int new_w = ANativeWindow_getWidth(data->native_window);
+    int new_h = ANativeWindow_getHeight(data->native_window);
+
+    if (old_w != new_w || old_h != new_h) {
+        SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, new_w, new_h);
+    }
 }
 
 void

--
Gitblit v1.9.3