summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Hooper <dave@beermex.com>2009-07-18 12:33:13 +0000
committerDave Hooper <dave@beermex.com>2009-07-18 12:33:13 +0000
commite5472c91cc81c2fc5f1db5265676fb1af048d41d (patch)
tree077a7744ba57a378d499f6000b1190ee4cc0366e
parent17b8805b49e1f3c096b885982b6e81a6742f6662 (diff)
downloadrockbox-e5472c91cc81c2fc5f1db5265676fb1af048d41d.tar.gz
rockbox-e5472c91cc81c2fc5f1db5265676fb1af048d41d.zip
Make clix playable on ipod by fixing keymap (so up doesn't quit), button repeat logic (so holding down select doesn't repeatedly fire select events), and not clearing button queue so repeat/release events get detected
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21951 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/clix.c36
1 files changed, 27 insertions, 9 deletions
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c
index bfe33b90de..e0cf88bf08 100644
--- a/apps/plugins/clix.c
+++ b/apps/plugins/clix.c
@@ -65,12 +65,16 @@ PLUGIN_HEADER
65#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ 65#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
66 (CONFIG_KEYPAD == IPOD_3G_PAD) || \ 66 (CONFIG_KEYPAD == IPOD_3G_PAD) || \
67 (CONFIG_KEYPAD == IPOD_1G2G_PAD) 67 (CONFIG_KEYPAD == IPOD_1G2G_PAD)
68#define CLIX_BUTTON_QUIT BUTTON_MENU 68#define CLIX_BUTTON_QUIT (BUTTON_SELECT | BUTTON_MENU)
69#define CLIX_BUTTON_UP BUTTON_SCROLL_BACK 69#define CLIX_BUTTON_UP BUTTON_MENU
70#define CLIX_BUTTON_DOWN BUTTON_SCROLL_FWD 70#define CLIX_BUTTON_DOWN BUTTON_PLAY
71#define CLIX_BUTTON_CLICK BUTTON_SELECT 71#define CLIX_BUTTON_SCROLL_FWD BUTTON_SCROLL_FWD
72#define CLIX_BUTTON_RIGHT BUTTON_RIGHT 72#define CLIX_BUTTON_SCROLL_BACK BUTTON_SCROLL_BACK
73#define CLIX_BUTTON_LEFT BUTTON_LEFT 73#define CLIX_BUTTON_CLICK (BUTTON_SELECT | BUTTON_REL)
74#define CLIX_BUTTON_CLICK_PRE BUTTON_SELECT
75#define CLIX_BUTTON_CLICK_PRE2 (BUTTON_SELECT | BUTTON_REPEAT)
76#define CLIX_BUTTON_RIGHT BUTTON_RIGHT
77#define CLIX_BUTTON_LEFT BUTTON_LEFT
74 78
75#elif (CONFIG_KEYPAD == GIGABEAT_PAD) 79#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
76#define CLIX_BUTTON_QUIT BUTTON_POWER 80#define CLIX_BUTTON_QUIT BUTTON_POWER
@@ -694,6 +698,8 @@ static int clix_handle_game(struct clix_game_state_t* state)
694 int start; 698 int start;
695 int end; 699 int end;
696 int oldx, oldy; 700 int oldx, oldy;
701
702 int lastbutton = BUTTON_NONE;
697 703
698 while(true) 704 while(true)
699 { 705 {
@@ -710,9 +716,7 @@ static int clix_handle_game(struct clix_game_state_t* state)
710 oldx = state->x; 716 oldx = state->x;
711 oldy = state->y; 717 oldy = state->y;
712 718
713 rb->button_get_w_tmo(end - *rb->current_tick); 719 button = rb->button_get_w_tmo(end - *rb->current_tick);
714 button = rb->button_status();
715 rb->button_clear_queue();
716#ifdef HAVE_TOUCHSCREEN 720#ifdef HAVE_TOUCHSCREEN
717 if(button & BUTTON_TOUCHSCREEN) 721 if(button & BUTTON_TOUCHSCREEN)
718 { 722 {
@@ -745,6 +749,7 @@ static int clix_handle_game(struct clix_game_state_t* state)
745#ifndef HAVE_TOUCHSCREEN 749#ifndef HAVE_TOUCHSCREEN
746#ifdef CLIX_BUTTON_SCROLL_BACK 750#ifdef CLIX_BUTTON_SCROLL_BACK
747 case CLIX_BUTTON_SCROLL_BACK: 751 case CLIX_BUTTON_SCROLL_BACK:
752 case CLIX_BUTTON_SCROLL_BACK|BUTTON_REPEAT:
748#endif 753#endif
749 case CLIX_BUTTON_UP: 754 case CLIX_BUTTON_UP:
750 if( state->y == 0 || 755 if( state->y == 0 ||
@@ -767,6 +772,7 @@ static int clix_handle_game(struct clix_game_state_t* state)
767 break; 772 break;
768#ifdef CLIX_BUTTON_SCROLL_FWD 773#ifdef CLIX_BUTTON_SCROLL_FWD
769 case CLIX_BUTTON_SCROLL_FWD: 774 case CLIX_BUTTON_SCROLL_FWD:
775 case CLIX_BUTTON_SCROLL_FWD|BUTTON_REPEAT:
770#endif 776#endif
771 case CLIX_BUTTON_DOWN: 777 case CLIX_BUTTON_DOWN:
772 if( state->y == (BOARD_HEIGHT - 1)) 778 if( state->y == (BOARD_HEIGHT - 1))
@@ -788,6 +794,15 @@ static int clix_handle_game(struct clix_game_state_t* state)
788#endif 794#endif
789 case CLIX_BUTTON_CLICK: 795 case CLIX_BUTTON_CLICK:
790 { 796 {
797#ifdef CLIX_BUTTON_CLICK_PRE
798#ifdef CLIX_BUTTON_CLICK_PRE2
799 if (lastbutton != CLIX_BUTTON_CLICK_PRE
800 && lastbutton != CLIX_BUTTON_CLICK_PRE2)
801#else
802 if (lastbutton != CLIX_BUTTON_CLICK_PRE)
803#endif
804 break;
805#endif
791 if (state->selected_count > 1) { 806 if (state->selected_count > 1) {
792 switch( clix_clear_selected( state)) 807 switch( clix_clear_selected( state))
793 { 808 {
@@ -842,6 +857,9 @@ static int clix_handle_game(struct clix_game_state_t* state)
842 857
843 break; 858 break;
844 } 859 }
860
861 if(button != BUTTON_NONE)
862 lastbutton = button;
845 863
846 if( (oldx != state->x || oldy != state->y) && 864 if( (oldx != state->x || oldy != state->y) &&
847 state->board_selected[ XYPOS( oldx, oldy)] != 865 state->board_selected[ XYPOS( oldx, oldy)] !=