Android port: simplify sending touch events from Java->C

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27833 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Maurus Cuelenaere 2010-08-16 20:12:10 +00:00
parent 934a5a5808
commit 5068891477
2 changed files with 16 additions and 24 deletions

View file

@ -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);
}

View file

@ -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;
}
/*