summaryrefslogtreecommitdiff
path: root/firmware/target/hosted/android/system-android.c
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2011-03-11 18:34:31 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2011-03-11 18:34:31 +0000
commit2e5b7aebde6426058ea7b69424b0335a844a6a18 (patch)
tree2ce54c30eb646b1d78d38ff34ff3eb3f76955bff /firmware/target/hosted/android/system-android.c
parent7228f2fa9faf587bab51f2e3c1727b7ca962b441 (diff)
downloadrockbox-2e5b7aebde6426058ea7b69424b0335a844a6a18.zip
rockbox-2e5b7aebde6426058ea7b69424b0335a844a6a18.tar.gz
rockbox-2e5b7aebde6426058ea7b69424b0335a844a6a18.tar.bz2
rockbox-2e5b7aebde6426058ea7b69424b0335a844a6a18.tar.xz
Android: use NewGlobalRef for references that are used globally
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29568 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/hosted/android/system-android.c')
-rw-r--r--firmware/target/hosted/android/system-android.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/firmware/target/hosted/android/system-android.c b/firmware/target/hosted/android/system-android.c
index 92c2d7c..66de4e0 100644
--- a/firmware/target/hosted/android/system-android.c
+++ b/firmware/target/hosted/android/system-android.c
@@ -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();
}