diff options
author | Teruaki Kawashima <teru@rockbox.org> | 2009-07-09 13:36:22 +0000 |
---|---|---|
committer | Teruaki Kawashima <teru@rockbox.org> | 2009-07-09 13:36:22 +0000 |
commit | 402b8ebeae49b498d725f85262a02e718c8c2f11 (patch) | |
tree | fa16d22e577a65e106227b7c70ee1002c2419428 | |
parent | 96f2a9dad198eee48a7bbb0614e1e668eb21a6d3 (diff) | |
download | rockbox-402b8ebeae49b498d725f85262a02e718c8c2f11.tar.gz rockbox-402b8ebeae49b498d725f85262a02e718c8c2f11.zip |
fix FS#9383 (chessclock freezes on deleting a player), patch by Yoshihisa Uchida.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21733 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/plugins/chessclock.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c index a69b3bb582..514cac174e 100644 --- a/apps/plugins/chessclock.c +++ b/apps/plugins/chessclock.c | |||
@@ -367,17 +367,22 @@ enum plugin_status plugin_start(const void* parameter) | |||
367 | do { | 367 | do { |
368 | int ret=0; | 368 | int ret=0; |
369 | done=true; | 369 | done=true; |
370 | for (i=0; done && i<settings.nr_timers; i++) { | 370 | i = nr; |
371 | do { | ||
371 | if (!timer_holder[i].hidden) | 372 | if (!timer_holder[i].hidden) |
372 | done=false; | 373 | { |
373 | } | 374 | nr = i; |
375 | done = false; | ||
376 | break; | ||
377 | } | ||
378 | if (++i == settings.nr_timers) | ||
379 | i = 0; | ||
380 | } while (i != nr); | ||
381 | |||
374 | if (done) { | 382 | if (done) { |
375 | return PLUGIN_OK; | 383 | return PLUGIN_OK; |
376 | } | 384 | } |
377 | if (!timer_holder[nr].hidden) { | 385 | ret = run_timer(nr); |
378 | done=false; | ||
379 | ret=run_timer(nr); | ||
380 | } | ||
381 | switch (ret) { | 386 | switch (ret) { |
382 | case -1: /* exit */ | 387 | case -1: /* exit */ |
383 | done=true; | 388 | done=true; |
@@ -390,9 +395,11 @@ enum plugin_status plugin_start(const void* parameter) | |||
390 | nr=0; | 395 | nr=0; |
391 | break; | 396 | break; |
392 | case 2: | 397 | case 2: |
393 | nr--; | 398 | do { |
394 | if (nr<0) | 399 | nr--; |
395 | nr=settings.nr_timers-1; | 400 | if (nr<0) |
401 | nr=settings.nr_timers-1; | ||
402 | } while (timer_holder[nr].hidden); | ||
396 | break; | 403 | break; |
397 | } | 404 | } |
398 | } while (!done); | 405 | } while (!done); |
@@ -521,7 +528,7 @@ static int run_timer(int nr) | |||
521 | switch(rb->do_menu(&menu, NULL, NULL, false)) | 528 | switch(rb->do_menu(&menu, NULL, NULL, false)) |
522 | { | 529 | { |
523 | case 0: | 530 | case 0: |
524 | /* delete timer */ | 531 | /* delete player */ |
525 | timer_holder[nr].hidden=true; | 532 | timer_holder[nr].hidden=true; |
526 | retval=1; | 533 | retval=1; |
527 | done=true; | 534 | done=true; |