mirror of https://github.com/encounter/SDL.git
Deal with fullscreen limitations under windowed Android environments (Chromebook, DeX, etc.) (Thanks Rachel!)
This commit is contained in:
parent
41da7b79c0
commit
4a4bac95eb
|
@ -1289,8 +1289,15 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
|
||||||
|
|
||||||
/* Generate a mode change event here */
|
/* Generate a mode change event here */
|
||||||
if (resized) {
|
if (resized) {
|
||||||
|
#ifndef ANDROID
|
||||||
|
// Android may not resize the window to exactly what our fullscreen mode is, especially on
|
||||||
|
// windowed Android environments like the Chromebook or Samsung DeX. Given this, we shouldn't
|
||||||
|
// use fullscreen_mode.w and fullscreen_mode.h, but rather get our current native size. As such,
|
||||||
|
// Android's SetWindowFullscreen will generate the window event for us with the proper final size.
|
||||||
|
|
||||||
SDL_SendWindowEvent(other, SDL_WINDOWEVENT_RESIZED,
|
SDL_SendWindowEvent(other, SDL_WINDOWEVENT_RESIZED,
|
||||||
fullscreen_mode.w, fullscreen_mode.h);
|
fullscreen_mode.w, fullscreen_mode.h);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
SDL_OnWindowResized(other);
|
SDL_OnWindowResized(other);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "../SDL_sysvideo.h"
|
#include "../SDL_sysvideo.h"
|
||||||
#include "../../events/SDL_keyboard_c.h"
|
#include "../../events/SDL_keyboard_c.h"
|
||||||
#include "../../events/SDL_mouse_c.h"
|
#include "../../events/SDL_mouse_c.h"
|
||||||
|
#include "../../events/SDL_windowevents_c.h"
|
||||||
|
|
||||||
#include "SDL_androidvideo.h"
|
#include "SDL_androidvideo.h"
|
||||||
#include "SDL_androidwindow.h"
|
#include "SDL_androidwindow.h"
|
||||||
|
@ -101,6 +102,28 @@ void
|
||||||
Android_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen)
|
Android_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen)
|
||||||
{
|
{
|
||||||
Android_JNI_SetWindowStyle(fullscreen);
|
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.
|
||||||
|
//
|
||||||
|
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
|
void
|
||||||
|
|
Loading…
Reference in New Issue