summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/hosted/keyboard.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/apps/hosted/keyboard.c b/apps/hosted/keyboard.c
index be5c70c896..1993164ade 100644
--- a/apps/hosted/keyboard.c
+++ b/apps/hosted/keyboard.c
@@ -26,8 +26,8 @@
26#include <stdio.h> 26#include <stdio.h>
27#include <system.h> 27#include <system.h>
28 28
29extern JNIEnv *env_ptr; 29extern JNIEnv *env_ptr;
30static jclass RockboxKeyboardInput_class = NULL; 30static jclass RockboxKeyboardInput_class;
31static jobject RockboxKeyboardInput_instance; 31static jobject RockboxKeyboardInput_instance;
32static jmethodID kbd_inputfunc, kbd_result; 32static jmethodID kbd_inputfunc, kbd_result;
33 33
@@ -38,18 +38,24 @@ static void kdb_init(void)
38 if (RockboxKeyboardInput_class == NULL) 38 if (RockboxKeyboardInput_class == NULL)
39 { 39 {
40 /* get the class and its constructor */ 40 /* get the class and its constructor */
41 RockboxKeyboardInput_class = e->FindClass(env_ptr, "org/rockbox/RockboxKeyboardInput"); 41 RockboxKeyboardInput_class = e->FindClass(env_ptr,
42 jmethodID constructor = e->GetMethodID(env_ptr, RockboxKeyboardInput_class, "<init>", "()V"); 42 "org/rockbox/RockboxKeyboardInput");
43 RockboxKeyboardInput_instance = e->NewObject(env_ptr, RockboxKeyboardInput_class, constructor); 43 jmethodID constructor = e->GetMethodID(env_ptr,
44 RockboxKeyboardInput_class,
45 "<init>", "()V");
46 RockboxKeyboardInput_instance = e->NewObject(env_ptr,
47 RockboxKeyboardInput_class,
48 constructor);
44 kbd_inputfunc = e->GetMethodID(env_ptr, RockboxKeyboardInput_class, 49 kbd_inputfunc = e->GetMethodID(env_ptr, RockboxKeyboardInput_class,
45 "kbd_input", "(Ljava/lang/String;)V"); 50 "kbd_input", "(Ljava/lang/String;)V");
46 kbd_result = e->GetMethodID(env_ptr, RockboxKeyboardInput_class, 51 kbd_result = e->GetMethodID(env_ptr, RockboxKeyboardInput_class,
47 "get_result", "()Ljava/lang/String;"); 52 "get_result", "()Ljava/lang/String;");
48 } 53 }
49 /* need to get it every time incase the activity died/restarted */ 54 /* need to get it every time incase the activity died/restarted */
50 kbd_is_usable = e->GetMethodID(env_ptr, RockboxKeyboardInput_class, 55 kbd_is_usable = e->GetMethodID(env_ptr, RockboxKeyboardInput_class,
51 "is_usable", "()Z"); 56 "is_usable", "()Z");
52 while (!e->CallBooleanMethod(env_ptr, RockboxKeyboardInput_instance, kbd_is_usable)) 57 while (!e->CallBooleanMethod(env_ptr, RockboxKeyboardInput_instance,
58 kbd_is_usable))
53 sleep(HZ/10); 59 sleep(HZ/10);
54} 60}
55 61
@@ -61,11 +67,12 @@ int kbd_input(char* text, int buflen)
61 const char* retchars; 67 const char* retchars;
62 kdb_init(); 68 kdb_init();
63 69
64 e->CallVoidMethod(env_ptr, RockboxKeyboardInput_instance, kbd_inputfunc, str); 70 e->CallVoidMethod(env_ptr, RockboxKeyboardInput_instance,kbd_inputfunc,str);
65 71
66 do { 72 do {
67 sleep(HZ/10); 73 sleep(HZ/10);
68 ret = e->CallObjectMethod(env_ptr, RockboxKeyboardInput_instance, kbd_result); 74 ret = e->CallObjectMethod(env_ptr, RockboxKeyboardInput_instance,
75 kbd_result);
69 } while (!ret); 76 } while (!ret);
70 77
71 e->ReleaseStringUTFChars(env_ptr, str, NULL); 78 e->ReleaseStringUTFChars(env_ptr, str, NULL);