Skip to content

Commit

Permalink
Fixed initial display orientation at Android app start
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Mar 12, 2019
1 parent 1a8e3a0 commit d05eec7
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 15 deletions.
23 changes: 13 additions & 10 deletions src/core/android/SDL_android.c
Expand Up @@ -284,6 +284,7 @@ static jmethodID midHapticStop;
static jfieldID fidSeparateMouseAndTouch;

/* Accelerometer data storage */
static SDL_DisplayOrientation displayOrientation;
static float fLastAccelerometer[3];
static SDL_bool bHasNewData;

Expand Down Expand Up @@ -399,7 +400,7 @@ Android_JNI_ThreadDestroyed(void *value)

/* 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) {
Expand All @@ -408,7 +409,7 @@ Android_JNI_CreateKey()
}

static void
Android_JNI_CreateKey_once()
Android_JNI_CreateKey_once(void)
{
int status = pthread_once(&key_once, Android_JNI_CreateKey);
if (status < 0) {
Expand All @@ -423,7 +424,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
return JNI_VERSION_1_4;
}

void checkJNIReady()
void checkJNIReady(void)
{
if (!mActivityClass || !mAudioManagerClass || !mControllerManagerClass) {
/* We aren't fully initialized, let's just return. */
Expand Down Expand Up @@ -739,11 +740,8 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(onNativeOrientationChanged)(
{
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);
}
Expand Down Expand Up @@ -1418,6 +1416,11 @@ int Android_JNI_OpenAudioDevice(int iscapture, SDL_AudioSpec *spec)
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();
Expand Down Expand Up @@ -2263,7 +2266,7 @@ void Android_JNI_HideTextInput(void)
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;
Expand Down Expand Up @@ -2595,7 +2598,7 @@ SDL_bool Android_JNI_SetSystemCursor(int cursorID)
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);
Expand Down
6 changes: 4 additions & 2 deletions src/core/android/SDL_android.h
Expand Up @@ -33,6 +33,7 @@ extern "C" {

#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);
Expand All @@ -46,6 +47,7 @@ extern SDL_bool Android_JNI_IsScreenKeyboardShown(void);
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 */
Expand All @@ -58,8 +60,8 @@ extern void Android_JNI_CloseAudioDevice(const int iscapture);
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"

Expand Down
11 changes: 8 additions & 3 deletions src/video/android/SDL_androidvideo.c
Expand Up @@ -172,8 +172,10 @@ VideoBootStrap Android_bootstrap = {
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;
Expand All @@ -184,9 +186,12 @@ Android_VideoInit(_THIS)
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);

Expand Down

0 comments on commit d05eec7

Please sign in to comment.