Fixed initial display orientation at Android app start
diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c
index a88f2f2..cc7be09 100644
--- a/src/core/android/SDL_android.c
+++ b/src/core/android/SDL_android.c
@@ -284,6 +284,7 @@
static jfieldID fidSeparateMouseAndTouch;
/* Accelerometer data storage */
+static SDL_DisplayOrientation displayOrientation;
static float fLastAccelerometer[3];
static SDL_bool bHasNewData;
@@ -399,7 +400,7 @@
/* Creation of local storage mThreadKey */
static void
-Android_JNI_CreateKey()
+Android_JNI_CreateKey(void)
{
int status = pthread_key_create(&mThreadKey, Android_JNI_ThreadDestroyed);
if (status < 0) {
@@ -408,7 +409,7 @@
}
static void
-Android_JNI_CreateKey_once()
+Android_JNI_CreateKey_once(void)
{
int status = pthread_once(&key_once, Android_JNI_CreateKey);
if (status < 0) {
@@ -423,7 +424,7 @@
return JNI_VERSION_1_4;
}
-void checkJNIReady()
+void checkJNIReady(void)
{
if (!mActivityClass || !mAudioManagerClass || !mControllerManagerClass) {
/* We aren't fully initialized, let's just return. */
@@ -739,11 +740,8 @@
{
SDL_LockMutex(Android_ActivityMutex);
- if (Android_Window)
- {
- SDL_VideoDisplay *display = SDL_GetDisplay(0);
- SDL_SendDisplayEvent(display, SDL_DISPLAYEVENT_ORIENTATION, orientation);
- }
+ displayOrientation = (SDL_DisplayOrientation)orientation;
+ SDL_SendDisplayEvent(SDL_GetDisplay(0), SDL_DISPLAYEVENT_ORIENTATION, orientation);
SDL_UnlockMutex(Android_ActivityMutex);
}
@@ -1418,6 +1416,11 @@
return 0;
}
+SDL_DisplayOrientation Android_JNI_GetDisplayOrientation(void)
+{
+ return displayOrientation;
+}
+
int Android_JNI_GetDisplayDPI(float *ddpi, float *xdpi, float *ydpi)
{
JNIEnv *env = Android_JNI_GetEnv();
@@ -2263,7 +2266,7 @@
Android_JNI_SendMessage(COMMAND_TEXTEDIT_HIDE, 0);
}
-SDL_bool Android_JNI_IsScreenKeyboardShown()
+SDL_bool Android_JNI_IsScreenKeyboardShown(void)
{
JNIEnv *env = Android_JNI_GetEnv();
jboolean is_shown = 0;
@@ -2595,7 +2598,7 @@
return (*env)->CallStaticBooleanMethod(env, mActivityClass, midSetSystemCursor, cursorID);
}
-SDL_bool Android_JNI_SupportsRelativeMouse()
+SDL_bool Android_JNI_SupportsRelativeMouse(void)
{
JNIEnv *env = Android_JNI_GetEnv();
return (*env)->CallStaticBooleanMethod(env, mActivityClass, midSupportsRelativeMouse);
diff --git a/src/core/android/SDL_android.h b/src/core/android/SDL_android.h
index f437ab1..8373786 100644
--- a/src/core/android/SDL_android.h
+++ b/src/core/android/SDL_android.h
@@ -33,6 +33,7 @@
#include "SDL_audio.h"
#include "SDL_rect.h"
+#include "SDL_video.h"
/* Interface from the SDL library into the Android Java activity */
extern void Android_JNI_SetActivityTitle(const char *title);
@@ -46,6 +47,7 @@
extern ANativeWindow* Android_JNI_GetNativeWindow(void);
extern void Android_JNI_SetSurfaceViewFormat(int format);
+extern SDL_DisplayOrientation Android_JNI_GetDisplayOrientation(void);
extern int Android_JNI_GetDisplayDPI(float *ddpi, float *xdpi, float *ydpi);
/* Audio support */
@@ -58,8 +60,8 @@
extern void Android_JNI_AudioSetThreadPriority(int iscapture, int device_id);
/* Detecting device type */
-extern SDL_bool Android_IsDeXMode();
-extern SDL_bool Android_IsChromebook();
+extern SDL_bool Android_IsDeXMode(void);
+extern SDL_bool Android_IsChromebook(void);
#include "SDL_rwops.h"
diff --git a/src/video/android/SDL_androidvideo.c b/src/video/android/SDL_androidvideo.c
index 283b105..9ee60d7 100644
--- a/src/video/android/SDL_androidvideo.c
+++ b/src/video/android/SDL_androidvideo.c
@@ -172,8 +172,10 @@
int
Android_VideoInit(_THIS)
{
- SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;
- SDL_DisplayMode mode;
+ SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;
+ int display_index;
+ SDL_VideoDisplay *display;
+ SDL_DisplayMode mode;
videodata->isPaused = SDL_FALSE;
videodata->isPausing = SDL_FALSE;
@@ -184,9 +186,12 @@
mode.refresh_rate = Android_ScreenRate;
mode.driverdata = NULL;
- if (SDL_AddBasicVideoDisplay(&mode) < 0) {
+ display_index = SDL_AddBasicVideoDisplay(&mode);
+ if (display_index < 0) {
return -1;
}
+ display = SDL_GetDisplay(display_index);
+ display->orientation = Android_JNI_GetDisplayOrientation();
SDL_AddDisplayMode(&_this->displays[0], &mode);