summaryrefslogtreecommitdiff
path: root/apps/plugins/metronome.c
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-08-23 17:12:26 +0000
committerThomas Martitz <kugel@rockbox.org>2010-08-23 17:12:26 +0000
commit93cb949372630d807615f53a8a6379937ed6819f (patch)
tree2dcb5001a9247447a1c64fd0129e64b9d8aba4e6 /apps/plugins/metronome.c
parentabdc5935beb7dc3fa63bffeec584921ad2a4c8bd (diff)
downloadrockbox-93cb949372630d807615f53a8a6379937ed6819f.zip
rockbox-93cb949372630d807615f53a8a6379937ed6819f.tar.gz
rockbox-93cb949372630d807615f53a8a6379937ed6819f.tar.bz2
rockbox-93cb949372630d807615f53a8a6379937ed6819f.tar.xz
Revert "Introduce plugin_crt0.c that every plugin links."
Too much errors and no time to fix them now. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27863 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/metronome.c')
-rw-r--r--apps/plugins/metronome.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c
index b38f0bb..37a7329 100644
--- a/apps/plugins/metronome.c
+++ b/apps/plugins/metronome.c
@@ -20,9 +20,8 @@
****************************************************************************/
#include "plugin.h"
#include "lib/pluginlib_actions.h"
-#include "lib/pluginlib_exit.h"
-
+PLUGIN_HEADER
#if CONFIG_CODEC != SWCODEC
/* tick sound from a metronome */
@@ -847,14 +846,13 @@ void timer_callback(void)
}
}
-void cleanup(void)
+void cleanup(void *parameter)
{
+ (void)parameter;
+
rb->timer_unregister();
MET_PLAY_STOP; /* stop audio ISR */
rb->led(0);
-#if CONFIG_CODEC == SWCODEC
- rb->pcm_set_frequency(HW_SAMPR_DEFAULT);
-#endif
}
void tap(void)
@@ -887,9 +885,9 @@ enum plugin_status plugin_start(const void* parameter)
{
int button;
static int last_button = BUTTON_NONE;
+ enum plugin_status status;
(void)parameter;
- atexit(cleanup);
if (MET_IS_PLAYING)
MET_PLAY_STOP; /* stop audio IS */
@@ -929,7 +927,9 @@ enum plugin_status plugin_start(const void* parameter)
case METRONOME_QUIT:
/* get out of here */
- return PLUGIN_OK;
+ cleanup(NULL);
+ status = PLUGIN_OK;
+ goto metronome_exit;
case METRONOME_PAUSE:
if(!sound_paused)
@@ -981,7 +981,12 @@ enum plugin_status plugin_start(const void* parameter)
#endif
default:
- exit_on_usb(button);
+ if (rb->default_event_handler_ex(button, cleanup, NULL)
+ == SYS_USB_CONNECTED)
+ {
+ status = PLUGIN_USB_CONNECTED;
+ goto metronome_exit;
+ }
reset_tap = false;
break;
@@ -993,5 +998,11 @@ enum plugin_status plugin_start(const void* parameter)
}
rb->yield();
}
+
+metronome_exit:
+#if CONFIG_CODEC == SWCODEC
+ rb->pcm_set_frequency(HW_SAMPR_DEFAULT);
+#endif
+ return status;
}