mirror of https://github.com/encounter/SDL.git
Ensure we wait on the surface resize before returning from setting fullscreen mode.
This commit is contained in:
parent
31596f23ce
commit
74638ea3c5
|
@ -643,7 +643,22 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
||||||
Message msg = commandHandler.obtainMessage();
|
Message msg = commandHandler.obtainMessage();
|
||||||
msg.arg1 = command;
|
msg.arg1 = command;
|
||||||
msg.obj = data;
|
msg.obj = data;
|
||||||
return commandHandler.sendMessage(msg);
|
boolean result = commandHandler.sendMessage(msg);
|
||||||
|
|
||||||
|
// Ensure we don't return until the resize has actually happened,
|
||||||
|
// or 250ms have passed.
|
||||||
|
if (command == COMMAND_CHANGE_WINDOW_STYLE) {
|
||||||
|
synchronized(SDLActivity.getContext()) {
|
||||||
|
try {
|
||||||
|
SDLActivity.getContext().wait(250);
|
||||||
|
}
|
||||||
|
catch (InterruptedException ie) {
|
||||||
|
ie.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// C functions we call
|
// C functions we call
|
||||||
|
@ -1577,6 +1592,10 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
||||||
}
|
}
|
||||||
catch ( java.lang.Throwable throwable ) {}
|
catch ( java.lang.Throwable throwable ) {}
|
||||||
|
|
||||||
|
synchronized(SDLActivity.getContext()) {
|
||||||
|
SDLActivity.getContext().notifyAll();
|
||||||
|
}
|
||||||
|
|
||||||
Log.v("SDL", "Window size: " + width + "x" + height);
|
Log.v("SDL", "Window size: " + width + "x" + height);
|
||||||
Log.v("SDL", "Device size: " + nDeviceWidth + "x" + nDeviceHeight);
|
Log.v("SDL", "Device size: " + nDeviceWidth + "x" + nDeviceHeight);
|
||||||
SDLActivity.onNativeResize(width, height, nDeviceWidth, nDeviceHeight, sdlFormat, mDisplay.getRefreshRate());
|
SDLActivity.onNativeResize(width, height, nDeviceWidth, nDeviceHeight, sdlFormat, mDisplay.getRefreshRate());
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
#include "../../SDL_internal.h"
|
#include "../../SDL_internal.h"
|
||||||
|
#include "SDL_system.h"
|
||||||
|
|
||||||
/* Set up for C function definitions, even when using C++ */
|
/* Set up for C function definitions, even when using C++ */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -53,6 +54,10 @@ extern int Android_JNI_CaptureAudioBuffer(void *buffer, int buflen);
|
||||||
extern void Android_JNI_FlushCapturedAudio(void);
|
extern void Android_JNI_FlushCapturedAudio(void);
|
||||||
extern void Android_JNI_CloseAudioDevice(const int iscapture);
|
extern void Android_JNI_CloseAudioDevice(const int iscapture);
|
||||||
|
|
||||||
|
/* Detecting device type */
|
||||||
|
extern SDL_bool Android_IsDeXMode();
|
||||||
|
extern SDL_bool Android_IsChromebook();
|
||||||
|
|
||||||
#include "SDL_rwops.h"
|
#include "SDL_rwops.h"
|
||||||
|
|
||||||
int Android_JNI_FileOpen(SDL_RWops* ctx, const char* fileName, const char* mode);
|
int Android_JNI_FileOpen(SDL_RWops* ctx, const char* fileName, const char* mode);
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#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 "../../events/SDL_windowevents_c.h"
|
||||||
|
#include "../../core/android/SDL_android.h"
|
||||||
|
|
||||||
#include "SDL_androidvideo.h"
|
#include "SDL_androidvideo.h"
|
||||||
#include "SDL_androidwindow.h"
|
#include "SDL_androidwindow.h"
|
||||||
|
@ -109,6 +110,10 @@ Android_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * displ
|
||||||
// Samsung DeX or Chromebooks or other windowed Android environemtns, our window may
|
// Samsung DeX or Chromebooks or other windowed Android environemtns, our window may
|
||||||
// still not be the full display size.
|
// still not be the full display size.
|
||||||
//
|
//
|
||||||
|
if (!SDL_IsDeXMode() && !SDL_IsChromebook()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
SDL_WindowData * data = (SDL_WindowData *)window->driverdata;
|
SDL_WindowData * data = (SDL_WindowData *)window->driverdata;
|
||||||
|
|
||||||
if (!data || !data->native_window) {
|
if (!data || !data->native_window) {
|
||||||
|
|
Loading…
Reference in New Issue