forked from len0rd/rockbox
Android: use NewGlobalRef for references that are used globally
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29568 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
7228f2fa9f
commit
2e5b7aebde
6 changed files with 64 additions and 29 deletions
|
|
@ -47,8 +47,16 @@ static bool display_on;
|
|||
void connect_with_java(JNIEnv* env, jobject fb_instance)
|
||||
{
|
||||
JNIEnv e = *env;
|
||||
static bool have_class;
|
||||
RockboxFramebuffer_instance = fb_instance;
|
||||
|
||||
/* Update RockboxFramebuffer_instance */
|
||||
if (!e->IsSameObject(env, RockboxFramebuffer_instance, fb_instance)) {
|
||||
if (RockboxFramebuffer_instance != NULL)
|
||||
e->DeleteGlobalRef(env, RockboxFramebuffer_instance);
|
||||
|
||||
RockboxFramebuffer_instance = e->NewGlobalRef(env, fb_instance);
|
||||
}
|
||||
|
||||
static bool have_class = false;
|
||||
if (!have_class)
|
||||
{
|
||||
jclass fb_class = e->GetObjectClass(env, fb_instance);
|
||||
|
|
@ -70,10 +78,13 @@ 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,
|
||||
|
||||
jobject buffer = e->NewDirectByteBuffer(env,
|
||||
lcd_framebuffer,
|
||||
(jlong)sizeof(lcd_framebuffer));
|
||||
|
||||
native_buffer = e->NewGlobalRef(env, buffer);
|
||||
|
||||
have_class = true;
|
||||
}
|
||||
/* we need to setup parts for the java object every time */
|
||||
|
|
@ -81,6 +92,12 @@ void connect_with_java(JNIEnv* env, jobject fb_instance)
|
|||
(jint)LCD_WIDTH, (jint)LCD_HEIGHT, native_buffer);
|
||||
}
|
||||
|
||||
void lcd_deinit(void)
|
||||
{
|
||||
(*env_ptr)->DeleteGlobalRef(env_ptr, RockboxFramebuffer_instance);
|
||||
(*env_ptr)->DeleteGlobalRef(env_ptr, native_buffer);
|
||||
}
|
||||
|
||||
/*
|
||||
* Do nothing here and connect with the java object later (if it isn't already)
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue