forked from len0rd/rockbox
Improve sometimes glitchy touchscreen handling in the pitchscreen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29166 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
c402519e31
commit
5e3d8f961c
1 changed files with 24 additions and 7 deletions
|
|
@ -636,6 +636,7 @@ static int pitchscreen_do_touchscreen(struct viewport vps[])
|
||||||
short x, y;
|
short x, y;
|
||||||
struct viewport *this_vp = &vps[PITCH_TOP];
|
struct viewport *this_vp = &vps[PITCH_TOP];
|
||||||
int ret;
|
int ret;
|
||||||
|
static bool wait_for_release = false;
|
||||||
ret = action_get_touchscreen_press_in_vp(&x, &y, this_vp);
|
ret = action_get_touchscreen_press_in_vp(&x, &y, this_vp);
|
||||||
|
|
||||||
/* top row */
|
/* top row */
|
||||||
|
|
@ -651,7 +652,7 @@ static int pitchscreen_do_touchscreen(struct viewport vps[])
|
||||||
{ /* center column pressed */
|
{ /* center column pressed */
|
||||||
if (ret == BUTTON_REPEAT)
|
if (ret == BUTTON_REPEAT)
|
||||||
return ACTION_PS_INC_BIG;
|
return ACTION_PS_INC_BIG;
|
||||||
else if (ret == BUTTON_TOUCHSCREEN)
|
else if (ret & BUTTON_REL)
|
||||||
return ACTION_PS_INC_SMALL;
|
return ACTION_PS_INC_SMALL;
|
||||||
}
|
}
|
||||||
return ACTION_NONE;
|
return ACTION_NONE;
|
||||||
|
|
@ -668,21 +669,37 @@ static int pitchscreen_do_touchscreen(struct viewport vps[])
|
||||||
if (x < column)
|
if (x < column)
|
||||||
{ /* left column */
|
{ /* left column */
|
||||||
if (ret & BUTTON_REL)
|
if (ret & BUTTON_REL)
|
||||||
|
{
|
||||||
|
wait_for_release = false;
|
||||||
return ACTION_PS_NUDGE_LEFTOFF;
|
return ACTION_PS_NUDGE_LEFTOFF;
|
||||||
|
}
|
||||||
else if (ret & BUTTON_REPEAT)
|
else if (ret & BUTTON_REPEAT)
|
||||||
return ACTION_PS_SLOWER;
|
return ACTION_PS_SLOWER;
|
||||||
return ACTION_PS_NUDGE_LEFT;
|
if (!wait_for_release)
|
||||||
|
{
|
||||||
|
wait_for_release = true;
|
||||||
|
return ACTION_PS_NUDGE_LEFT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (x > (2*column))
|
else if (x > (2*column))
|
||||||
{ /* right column */
|
{ /* right column */
|
||||||
|
debugf("%s(): %8x", __func__, ret);
|
||||||
if (ret & BUTTON_REL)
|
if (ret & BUTTON_REL)
|
||||||
|
{
|
||||||
|
wait_for_release = false;
|
||||||
return ACTION_PS_NUDGE_LEFTOFF;
|
return ACTION_PS_NUDGE_LEFTOFF;
|
||||||
|
}
|
||||||
else if (ret & BUTTON_REPEAT)
|
else if (ret & BUTTON_REPEAT)
|
||||||
return ACTION_PS_FASTER;
|
return ACTION_PS_FASTER;
|
||||||
return ACTION_PS_NUDGE_LEFT;
|
if (!wait_for_release)
|
||||||
|
{
|
||||||
|
wait_for_release = true;
|
||||||
|
return ACTION_PS_NUDGE_LEFT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* center column was pressed */
|
else
|
||||||
return ACTION_PS_RESET;
|
/* center column was pressed */
|
||||||
|
return ACTION_PS_RESET;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now the bottom row */
|
/* now the bottom row */
|
||||||
|
|
@ -698,9 +715,9 @@ static int pitchscreen_do_touchscreen(struct viewport vps[])
|
||||||
return ACTION_PS_EXIT;
|
return ACTION_PS_EXIT;
|
||||||
else if (x >= column && x <= (2*column))
|
else if (x >= column && x <= (2*column))
|
||||||
{ /* center column was pressed */
|
{ /* center column was pressed */
|
||||||
if (ret == BUTTON_REPEAT)
|
if (ret & BUTTON_REPEAT)
|
||||||
return ACTION_PS_DEC_BIG;
|
return ACTION_PS_DEC_BIG;
|
||||||
else if (ret == BUTTON_TOUCHSCREEN)
|
else if (ret & BUTTON_REL)
|
||||||
return ACTION_PS_DEC_SMALL;
|
return ACTION_PS_DEC_SMALL;
|
||||||
}
|
}
|
||||||
return ACTION_NONE;
|
return ACTION_NONE;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue