mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
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
|
@ -59,14 +59,17 @@ static void kdb_init(void)
|
|||
{
|
||||
semaphore_init(&kbd_wakeup, 1, 0);
|
||||
/* get the class and its constructor */
|
||||
RockboxKeyboardInput_class = e->FindClass(env_ptr,
|
||||
jclass kbInput_class = e->FindClass(env_ptr,
|
||||
"org/rockbox/RockboxKeyboardInput");
|
||||
RockboxKeyboardInput_class = e->NewGlobalRef(env_ptr, kbInput_class);
|
||||
jmethodID constructor = e->GetMethodID(env_ptr,
|
||||
RockboxKeyboardInput_class,
|
||||
"<init>", "()V");
|
||||
RockboxKeyboardInput_instance = e->NewObject(env_ptr,
|
||||
RockboxKeyboardInput_class,
|
||||
constructor);
|
||||
jobject kbInput_instance = e->NewObject(env_ptr,
|
||||
RockboxKeyboardInput_class,
|
||||
constructor);
|
||||
RockboxKeyboardInput_instance = e->NewGlobalRef(env_ptr,
|
||||
kbInput_instance);
|
||||
kbd_inputfunc = e->GetMethodID(env_ptr, RockboxKeyboardInput_class,
|
||||
"kbd_input",
|
||||
"(Ljava/lang/String;"
|
||||
|
|
|
@ -125,13 +125,14 @@ void notification_init(void)
|
|||
JNIEnv e = *env_ptr;
|
||||
jfieldID nNM = e->GetFieldID(env_ptr, RockboxService_class,
|
||||
"fg_runner", "Lorg/rockbox/Helper/RunForegroundManager;");
|
||||
NotificationManager_instance = e->GetObjectField(env_ptr,
|
||||
RockboxService_instance, nNM);
|
||||
if (NotificationManager_instance == NULL)
|
||||
jobject nMN_instance = e->GetObjectField(env_ptr,
|
||||
RockboxService_instance, nNM);
|
||||
if (nMN_instance == NULL)
|
||||
{
|
||||
DEBUGF("Failed to get RunForegroundManager instance. Performance will be bad");
|
||||
return;
|
||||
}
|
||||
NotificationManager_instance = e->NewGlobalRef(env_ptr, nMN_instance);
|
||||
|
||||
jclass class = e->GetObjectClass(env_ptr, NotificationManager_instance);
|
||||
updateNotification = e->GetMethodID(env_ptr, class, "updateNotification",
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
#include "kernel.h"
|
||||
|
||||
extern JNIEnv *env_ptr;
|
||||
static jclass RockboxYesno_class = NULL;
|
||||
static jobject RockboxYesno_instance = NULL;
|
||||
static jmethodID yesno_func;
|
||||
static struct semaphore yesno_done;
|
||||
|
@ -49,24 +48,25 @@ static void yesno_init(void)
|
|||
{
|
||||
JNIEnv e = *env_ptr;
|
||||
static jmethodID yesno_is_usable;
|
||||
if (RockboxYesno_class == NULL)
|
||||
if (RockboxYesno_instance == NULL)
|
||||
{
|
||||
semaphore_init(&yesno_done, 1, 0);
|
||||
/* get the class and its constructor */
|
||||
RockboxYesno_class = e->FindClass(env_ptr,
|
||||
"org/rockbox/RockboxYesno");
|
||||
jclass yesno_class = e->FindClass(env_ptr,
|
||||
"org/rockbox/RockboxYesno");
|
||||
jmethodID constructor = e->GetMethodID(env_ptr,
|
||||
RockboxYesno_class,
|
||||
yesno_class,
|
||||
"<init>", "()V");
|
||||
RockboxYesno_instance = e->NewObject(env_ptr,
|
||||
RockboxYesno_class,
|
||||
constructor);
|
||||
yesno_func = e->GetMethodID(env_ptr, RockboxYesno_class,
|
||||
jobject yesno_instance = e->NewObject(env_ptr,
|
||||
yesno_class,
|
||||
constructor);
|
||||
RockboxYesno_instance = e->NewGlobalRef(env_ptr, yesno_instance);
|
||||
yesno_func = e->GetMethodID(env_ptr, yesno_class,
|
||||
"yesno_display",
|
||||
"(Ljava/lang/String;"
|
||||
"Ljava/lang/String;"
|
||||
"Ljava/lang/String;)V");
|
||||
yesno_is_usable = e->GetMethodID(env_ptr, RockboxYesno_class,
|
||||
yesno_is_usable = e->GetMethodID(env_ptr, yesno_class,
|
||||
"is_usable", "()Z");
|
||||
}
|
||||
/* need to get it every time incase the activity died/restarted */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue