Skip to content

Commit

Permalink
Fixed bug 2816 - [patch] Android: Expose screen refresh rate
Browse files Browse the repository at this point in the history
Jonas Kulla

Display::getRefreshRate() is available on all API levels.
  • Loading branch information
philippwiesemann committed Jan 23, 2015
1 parent f15d13d commit a26a4e9
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 7 deletions.
4 changes: 2 additions & 2 deletions android-project/src/org/libsdl/app/SDLActivity.java
Expand Up @@ -392,7 +392,7 @@ boolean sendCommand(int command, Object data) {
public static native void nativeQuit();
public static native void nativePause();
public static native void nativeResume();
public static native void onNativeResize(int x, int y, int format);
public static native void onNativeResize(int x, int y, int format, float rate);
public static native int onNativePadDown(int device_id, int keycode);
public static native int onNativePadUp(int device_id, int keycode);
public static native void onNativeJoy(int device_id, int axis,
Expand Down Expand Up @@ -1041,7 +1041,7 @@ public void surfaceChanged(SurfaceHolder holder,

mWidth = width;
mHeight = height;
SDLActivity.onNativeResize(width, height, sdlFormat);
SDLActivity.onNativeResize(width, height, sdlFormat, mDisplay.getRefreshRate());
Log.v("SDL", "Window size:" + width + "x"+height);

// Set mIsSurfaceReady to 'true' *before* making a call to handleResume
Expand Down
4 changes: 2 additions & 2 deletions src/core/android/SDL_android.c
Expand Up @@ -143,9 +143,9 @@ JNIEXPORT void JNICALL SDL_Android_Init(JNIEnv* mEnv, jclass cls)
/* Resize */
JNIEXPORT void JNICALL Java_org_libsdl_app_SDLActivity_onNativeResize(
JNIEnv* env, jclass jcls,
jint width, jint height, jint format)
jint width, jint height, jint format, jfloat rate)
{
Android_SetScreenResolution(width, height, format);
Android_SetScreenResolution(width, height, format, rate);
}

/* Paddown */
Expand Down
7 changes: 5 additions & 2 deletions src/video/android/SDL_androidvideo.c
Expand Up @@ -64,6 +64,8 @@ extern int Android_GLES_LoadLibrary(_THIS, const char *path);
int Android_ScreenWidth = 0;
int Android_ScreenHeight = 0;
Uint32 Android_ScreenFormat = SDL_PIXELFORMAT_UNKNOWN;
int Android_ScreenRate = 0;

SDL_sem *Android_PauseSem = NULL, *Android_ResumeSem = NULL;

/* Currently only one window */
Expand Down Expand Up @@ -166,7 +168,7 @@ Android_VideoInit(_THIS)
mode.format = Android_ScreenFormat;
mode.w = Android_ScreenWidth;
mode.h = Android_ScreenHeight;
mode.refresh_rate = 0;
mode.refresh_rate = Android_ScreenRate;
mode.driverdata = NULL;
if (SDL_AddBasicVideoDisplay(&mode) < 0) {
return -1;
Expand All @@ -189,11 +191,12 @@ Android_VideoQuit(_THIS)

/* This function gets called before VideoInit() */
void
Android_SetScreenResolution(int width, int height, Uint32 format)
Android_SetScreenResolution(int width, int height, Uint32 format, float rate)
{
Android_ScreenWidth = width;
Android_ScreenHeight = height;
Android_ScreenFormat = format;
Android_ScreenRate = rate;

if (Android_Window) {
SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_RESIZED, width, height);
Expand Down
2 changes: 1 addition & 1 deletion src/video/android/SDL_androidvideo.h
Expand Up @@ -28,7 +28,7 @@
#include "../SDL_sysvideo.h"

/* Called by the JNI layer when the screen changes size or format */
extern void Android_SetScreenResolution(int width, int height, Uint32 format);
extern void Android_SetScreenResolution(int width, int height, Uint32 format, float rate);

/* Private display data */

Expand Down

0 comments on commit a26a4e9

Please sign in to comment.