1
0
Fork 0
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:
Maurus Cuelenaere 2011-03-11 18:34:31 +00:00
parent 7228f2fa9f
commit 2e5b7aebde
6 changed files with 64 additions and 29 deletions

View file

@ -36,10 +36,18 @@ uintptr_t *stackend;
extern int main(void);
extern void telephony_init_device(void);
extern void lcd_deinit(void);
extern void pcm_deinit(void);
void system_exception_wait(void) { }
void system_reboot(void) { }
void power_off(void) { }
void power_off(void)
{
lcd_deinit();
pcm_deinit();
(*env_ptr)->DeleteGlobalRef(env_ptr, RockboxService_class);
}
void system_init(void)
{
@ -51,18 +59,19 @@ void system_init(void)
JNIEXPORT void JNICALL
Java_org_rockbox_RockboxService_main(JNIEnv *env, jobject this)
{
jclass class = (*env)->GetObjectClass(env, this);
/* hack!!! we can't have a valid stack pointer otherwise.
* but we don't really need it anyway, thread.c only needs it
* for overflow detection which doesn't apply for the main thread
* (it's managed by the OS) */
(void)env;
(void)this;
volatile uintptr_t stack = 0;
stackbegin = stackend = (uintptr_t*) &stack;
env_ptr = env;
RockboxService_instance = this;
RockboxService_class = (*env)->GetObjectClass(env, this);
RockboxService_instance = (*env)->NewGlobalRef(env, this);
RockboxService_class = (*env)->NewGlobalRef(env, class);
main();
}