diff options
author | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2011-03-12 00:35:18 +0000 |
---|---|---|
committer | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2011-03-12 00:35:18 +0000 |
commit | 8aa90b6b0be0125ba645af30757524055acbb185 (patch) | |
tree | 32888a41d6aae1386077884d940c3986b3d12e5a /firmware | |
parent | 204ac257fe97dafdcd106c9051386ccf09710c4f (diff) | |
download | rockbox-8aa90b6b0be0125ba645af30757524055acbb185.tar.gz rockbox-8aa90b6b0be0125ba645af30757524055acbb185.zip |
Android: allocate native_buffer locally, which does away with the need to hold
a global reference to it (fixes bug).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29576 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/hosted/android/lcd-android.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/firmware/target/hosted/android/lcd-android.c b/firmware/target/hosted/android/lcd-android.c index 172e832c2a..19f077010f 100644 --- a/firmware/target/hosted/android/lcd-android.c +++ b/firmware/target/hosted/android/lcd-android.c @@ -34,7 +34,6 @@ static jobject RockboxFramebuffer_instance; static jmethodID java_lcd_update; static jmethodID java_lcd_update_rect; static jmethodID java_lcd_init; -static jobject native_buffer; static int dpi; static int scroll_threshold; @@ -69,15 +68,17 @@ void connect_with_java(JNIEnv* env, jobject fb_instance) java_lcd_init = e->GetMethodID(env, fb_class, "java_lcd_init", "(IILjava/nio/ByteBuffer;)V"); - - native_buffer = e->NewDirectByteBuffer(env, - lcd_framebuffer, - (jlong)sizeof(lcd_framebuffer)); + have_class = true; } + + /* Create native_buffer */ + jobject buffer = (*env)->NewDirectByteBuffer(env, lcd_framebuffer, + (jlong) sizeof(lcd_framebuffer)); + /* we need to setup parts for the java object every time */ (*env)->CallVoidMethod(env, fb_instance, java_lcd_init, - (jint)LCD_WIDTH, (jint)LCD_HEIGHT, native_buffer); + (jint)LCD_WIDTH, (jint)LCD_HEIGHT, buffer); } /* @@ -116,8 +117,10 @@ Java_org_rockbox_RockboxFramebuffer_surfaceCreated(JNIEnv *env, jobject this, jobject surfaceholder) { (void)surfaceholder; + /* Update RockboxFramebuffer_instance */ RockboxFramebuffer_instance = (*env)->NewGlobalRef(env, this); + /* possibly a new instance - reconnect */ connect_with_java(env, this); display_on = true; |