diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/hosted/keyboard.c | 31 |
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 | ||
29 | extern JNIEnv *env_ptr; | 29 | extern JNIEnv *env_ptr; |
30 | static jclass RockboxKeyboardInput_class = NULL; | 30 | static jclass RockboxKeyboardInput_class; |
31 | static jobject RockboxKeyboardInput_instance; | 31 | static jobject RockboxKeyboardInput_instance; |
32 | static jmethodID kbd_inputfunc, kbd_result; | 32 | static 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); |