summaryrefslogtreecommitdiffstats
path: root/apps/plugins/metronome.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2007-06-10 02:10:47 +0000
committerMichael Sevakis <jethead71@rockbox.org>2007-06-10 02:10:47 +0000
commit4597ebe24b5300f9e0009ae5a4e08a0527214e94 (patch)
treea1d5c3e6c305b5033efca4827e9e2d116662bda3 /apps/plugins/metronome.c
parent19cc9d063a22cd5162e164d8f5e2fe98944c3721 (diff)
downloadrockbox-4597ebe24b5300f9e0009ae5a4e08a0527214e94.tar.gz
rockbox-4597ebe24b5300f9e0009ae5a4e08a0527214e94.zip
Plugins that play sound must be sure to set inputs and outputs on audio muxed targets. Add strict adherence to the interface protocols. Make sure playback sets the playback output as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13604 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/metronome.c')
-rw-r--r--apps/plugins/metronome.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c
index 712731462a..83af2eb46b 100644
--- a/apps/plugins/metronome.c
+++ b/apps/plugins/metronome.c
@@ -904,6 +904,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
#else
#define PLA_ARRAY_COUNT 2
#endif
+ enum plugin_status status;
(void)parameter;
rb = api;
@@ -915,7 +916,12 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
rb->bitswap(sound, sizeof(sound));
#else
prepare_tock();
- rb->pcm_set_frequency(44100);
+#if INPUT_SRC_CAPS != 0
+ /* Select playback */
+ rb->audio_set_input_source(AUDIO_SRC_PLAYBACK, SRCF_PLAYBACK);
+ rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
+#endif
+ rb->pcm_set_frequency(SAMPR_44);
#endif
calc_period();
@@ -944,7 +950,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
case METRONOME_QUIT:
/* get out of here */
cleanup(NULL);
- return PLUGIN_OK;
+ status = PLUGIN_OK;
+ goto metronome_exit;
#if CONFIG_KEYPAD == ONDIO_PAD
case METRONOME_PLAY_TAP:
@@ -1013,7 +1020,10 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
default:
if (rb->default_event_handler_ex(button, cleanup, NULL)
== SYS_USB_CONNECTED)
- return PLUGIN_USB_CONNECTED;
+ {
+ status = PLUGIN_USB_CONNECTED;
+ goto metronome_exit;
+ }
reset_tap = false;
break;
@@ -1022,5 +1032,9 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
tap_count = 0;
}
}
+
+metronome_exit:
+ rb->pcm_set_frequency(HW_SAMPR_DEFAULT);
+ return status;
}