From 5068891477a7890bef94092fd184f7b30aa17b9d Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Mon, 16 Aug 2010 20:12:10 +0000 Subject: [PATCH] Android port: simplify sending touch events from Java->C git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27833 a1c6a512-1295-4272-9138-f99709370657 --- .../src/org/rockbox/RockboxFramebuffer.java | 19 +++++++++-------- .../target/hosted/android/button-android.c | 21 ++++++------------- 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/android/src/org/rockbox/RockboxFramebuffer.java b/android/src/org/rockbox/RockboxFramebuffer.java index 1734b4fab1..6d11e1af14 100644 --- a/android/src/org/rockbox/RockboxFramebuffer.java +++ b/android/src/org/rockbox/RockboxFramebuffer.java @@ -80,20 +80,22 @@ public class RockboxFramebuffer extends View public boolean onTouchEvent(MotionEvent me) { + int x = (int) me.getX(); + int y = (int) me.getY(); + switch (me.getAction()) { case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: - touchHandler(0); - break; + touchHandler(false, x, y); + return true; case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_DOWN: - touchHandler(1); - break; - + touchHandler(true, x, y); + return true; } - pixelHandler((int)me.getX(), (int)me.getY()); - return true; + + return false; } public boolean onKeyDown(int keyCode, KeyEvent event) @@ -118,7 +120,6 @@ public class RockboxFramebuffer extends View } public native void set_lcd_active(int active); - public native void pixelHandler(int x, int y); - public native void touchHandler(int down); + public native void touchHandler(boolean down, int x, int y); public native boolean buttonHandler(int keycode, boolean state); } diff --git a/firmware/target/hosted/android/button-android.c b/firmware/target/hosted/android/button-android.c index 50e347e714..a7ac9baec8 100644 --- a/firmware/target/hosted/android/button-android.c +++ b/firmware/target/hosted/android/button-android.c @@ -38,32 +38,23 @@ static enum { STATE_DOWN, } last_state = STATE_UNKNOWN; -/* - * this writes in an interrupt-like fashion the last pixel coordinates - * that the user pressed on the screen */ -JNIEXPORT void JNICALL -Java_org_rockbox_RockboxFramebuffer_pixelHandler(JNIEnv*env, jobject this, - int x, int y) -{ - (void)env; - (void)this; - last_x = x; - last_y = y; -} - /* * this notifies us in an interrupt-like fashion whether the user just - * began or stopped the touch action */ + * began or stopped the touch action + where (pixel coordinates) */ JNIEXPORT void JNICALL Java_org_rockbox_RockboxFramebuffer_touchHandler(JNIEnv*env, jobject this, - int down) + bool down, int x, int y) { (void)env; (void)this; + if (down) last_state = STATE_DOWN; else last_state = STATE_UP; + + last_x = x; + last_y = y; } /*