accept patch FS#4761 - putting the player on hold will now pause games. this should be
fitted to pong and rockblox as well. credit Lukas Sabota for the initial work, and, my very
own first commit!
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10365 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index 2bd01e7..6eb21fe 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -1740,6 +1740,12 @@
int move_button,button;
int button_right,button_left;
button=rb->button_get(false);
+
+#ifdef HAS_BUTTON_HOLD
+ if (rb->button_hold())
+ button = QUIT;
+#endif
+
move_button=rb->button_status();
button_right=((move_button & RIGHT) || (SCROLL_FWD(button)));
diff --git a/apps/plugins/bubbles.c b/apps/plugins/bubbles.c
index f2676f7..11e4158 100755
--- a/apps/plugins/bubbles.c
+++ b/apps/plugins/bubbles.c
@@ -2368,6 +2368,12 @@
long start;
button = rb->button_get_w_tmo(timeout);
+
+#ifdef HAS_BUTTON_HOLD
+ if (rb->button_hold())
+ button = BUBBLES_START;
+#endif
+
switch(button){
case (BUBBLES_LEFT|BUTTON_REPEAT):
if(bb->angle > MIN_ANGLE) bb->angle -= 4;
diff --git a/apps/plugins/pacbox/pacbox.c b/apps/plugins/pacbox/pacbox.c
index 7b524a7..d66c637 100644
--- a/apps/plugins/pacbox/pacbox.c
+++ b/apps/plugins/pacbox/pacbox.c
@@ -283,6 +283,11 @@
/* Check the button status */
status = rb->button_status();
+#ifdef HAS_BUTTON_HOLD
+ if (rb->button_hold())
+ status = PACMAN_MENU;
+#endif
+
if ((status & PACMAN_MENU) == PACMAN_MENU
#ifdef PACMAN_RC_MENU
|| status == PACMAN_RC_MENU
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index 55b3cbf..ab8e5f3 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -267,6 +267,12 @@
rb->sleep(HZ/level);
button=rb->button_get(false);
+
+#ifdef HAS_BUTTON_HOLD
+ if (rb->button_hold())
+ button = SNAKE_PLAYPAUSE;
+#endif
+
switch (button) {
case SNAKE_UP:
if (dir!=2) dir=0;
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index f3dc4be..bb89d86 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -1113,6 +1113,12 @@
rb->sleep(HZ/speed);
button = rb->button_get(false);
+
+#ifdef HAS_BUTTON_HOLD
+ if (rb->button_hold())
+ button = SNAKE2_PLAYPAUSE;
+#endif
+
switch (button)
{
case SNAKE2_UP:
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 32ab4bd..2cc3db9 100755
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -1525,6 +1525,12 @@
rb->lcd_update();
button = rb->button_get(false);
+
+#ifdef HAS_BUTTON_HOLD
+ if (rb->button_hold())
+ game_state = PAUSE_MODE;
+#endif
+
switch(button)
{
case(AST_PAUSE):
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 1da772d..7dc0ecd 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -1479,6 +1479,11 @@
int i;
long cycle_duration=0;
+#ifdef HAS_BUTTON_HOLD
+ if (rb->button_hold())
+ paused = true;
+#endif
+
switch (button) {
case BTN_STARTPAUSE:
paused = !paused;
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index 3ae9e22..bf2d96e 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -766,6 +766,14 @@
while (!quit) {
end = *rb->current_tick + (CYCLETIME * HZ) / 1000;
+
+#ifdef HAS_BUTTON_HOLD
+ if (rb->button_hold()) {
+ pause = true;
+ rb->splash (HZ, true, "PAUSED");
+ }
+#endif
+
button = rb->button_get_w_tmo (true);
switch (button) {
case UP:
diff --git a/docs/CREDITS b/docs/CREDITS
index e71ae8c..269c558 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -217,3 +217,4 @@
Rainer Sinsch
Plácido Revilla
Michael Sevakis
+Lukas Sabota