diff options
Diffstat (limited to 'apps/hosted/keyboard.c')
-rw-r--r-- | apps/hosted/keyboard.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/apps/hosted/keyboard.c b/apps/hosted/keyboard.c index 6cc14d654f..ab461cf52d 100644 --- a/apps/hosted/keyboard.c +++ b/apps/hosted/keyboard.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <stdbool.h> | 25 | #include <stdbool.h> |
26 | #include "string-extra.h" | 26 | #include "string-extra.h" |
27 | #include "kernel.h" | 27 | #include "kernel.h" |
28 | #include "lang.h" | ||
28 | 29 | ||
29 | extern JNIEnv *env_ptr; | 30 | extern JNIEnv *env_ptr; |
30 | static jclass RockboxKeyboardInput_class; | 31 | static jclass RockboxKeyboardInput_class; |
@@ -67,7 +68,10 @@ static void kdb_init(void) | |||
67 | RockboxKeyboardInput_class, | 68 | RockboxKeyboardInput_class, |
68 | constructor); | 69 | constructor); |
69 | kbd_inputfunc = e->GetMethodID(env_ptr, RockboxKeyboardInput_class, | 70 | kbd_inputfunc = e->GetMethodID(env_ptr, RockboxKeyboardInput_class, |
70 | "kbd_input", "(Ljava/lang/String;)V"); | 71 | "kbd_input", |
72 | "(Ljava/lang/String;" | ||
73 | "Ljava/lang/String;" | ||
74 | "Ljava/lang/String;)V"); | ||
71 | kbd_is_usable = e->GetMethodID(env_ptr, RockboxKeyboardInput_class, | 75 | kbd_is_usable = e->GetMethodID(env_ptr, RockboxKeyboardInput_class, |
72 | "is_usable", "()Z"); | 76 | "is_usable", "()Z"); |
73 | } | 77 | } |
@@ -80,12 +84,15 @@ static void kdb_init(void) | |||
80 | 84 | ||
81 | int kbd_input(char* text, int buflen) | 85 | int kbd_input(char* text, int buflen) |
82 | { | 86 | { |
83 | JNIEnv e = *env_ptr; | 87 | JNIEnv e = *env_ptr; |
84 | jstring str = e->NewStringUTF(env_ptr, text); | 88 | jstring str = e->NewStringUTF(env_ptr, text); |
89 | jstring ok_text = e->NewStringUTF(env_ptr, str(LANG_KBD_OK)); | ||
90 | jstring cancel_text = e->NewStringUTF(env_ptr, str(LANG_KBD_CANCEL)); | ||
85 | const char *utf8_string; | 91 | const char *utf8_string; |
86 | kdb_init(); | 92 | kdb_init(); |
87 | 93 | ||
88 | e->CallVoidMethod(env_ptr, RockboxKeyboardInput_instance,kbd_inputfunc,str); | 94 | e->CallVoidMethod(env_ptr, RockboxKeyboardInput_instance,kbd_inputfunc, |
95 | str, ok_text, cancel_text); | ||
89 | 96 | ||
90 | wakeup_wait(&kbd_wakeup, TIMEOUT_BLOCK); | 97 | wakeup_wait(&kbd_wakeup, TIMEOUT_BLOCK); |
91 | 98 | ||
@@ -96,6 +103,9 @@ int kbd_input(char* text, int buflen) | |||
96 | e->ReleaseStringUTFChars(env_ptr, new_string, utf8_string); | 103 | e->ReleaseStringUTFChars(env_ptr, new_string, utf8_string); |
97 | e->DeleteGlobalRef(env_ptr, new_string); | 104 | e->DeleteGlobalRef(env_ptr, new_string); |
98 | } | 105 | } |
106 | e->DeleteGlobalRef(env_ptr, str); | ||
107 | e->DeleteGlobalRef(env_ptr, ok_text); | ||
108 | e->DeleteGlobalRef(env_ptr, cancel_text); | ||
99 | 109 | ||
100 | return !accepted; /* return 0 on success */ | 110 | return !accepted; /* return 0 on success */ |
101 | } | 111 | } |