summaryrefslogtreecommitdiffstats
path: root/firmware/target/hosted/android/button-android.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/hosted/android/button-android.c')
-rw-r--r--firmware/target/hosted/android/button-android.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/firmware/target/hosted/android/button-android.c b/firmware/target/hosted/android/button-android.c
index c072e3e38b..9bf15c25a2 100644
--- a/firmware/target/hosted/android/button-android.c
+++ b/firmware/target/hosted/android/button-android.c
@@ -28,7 +28,7 @@
#include "kernel.h"
#include "system.h"
#include "touchscreen.h"
-
+#include "debug.h"
static int last_y, last_x;
static int last_btns;
static long last_button_tick;
@@ -44,7 +44,7 @@ static enum {
* began or stopped the touch action + where (pixel coordinates) */
JNIEXPORT void JNICALL
Java_org_rockbox_RockboxFramebuffer_touchHandler(JNIEnv*env, jobject this,
- bool down, int x, int y)
+ jboolean down, jint x, jint y)
{
(void)env;
(void)this;
@@ -63,12 +63,23 @@ Java_org_rockbox_RockboxFramebuffer_touchHandler(JNIEnv*env, jobject this,
* generated by pressing/releasing them to a variable */
JNIEXPORT bool JNICALL
Java_org_rockbox_RockboxFramebuffer_buttonHandler(JNIEnv*env, jobject this,
- int keycode, bool state)
+ jint keycode, jboolean state)
{
(void)env;
(void)this;
- int button = key_to_button(keycode);
+ unsigned button = 0;
+
+ if (!state)
+ button = multimedia_to_button((int)keycode);
+
+ if (button)
+ { /* multimeida buttons are handled differently */
+ queue_post(&button_queue, button, 0);
+ return true;
+ }
+
+ button = key_to_button(keycode);
if (button == BUTTON_NONE)
return false;