core/audio: Move audio_stop() out of the audio namespace

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2015-12-16 08:16:46 -05:00
parent e1abe94b28
commit d1d722a163
5 changed files with 27 additions and 37 deletions

View File

@ -162,6 +162,12 @@ bool audio_pause()
return __audio_change_state(GST_STATE_PAUSED); return __audio_change_state(GST_STATE_PAUSED);
} }
bool audio_stop()
{
audio_pause();
return audio_seek(0);
}
bool audio_seek(gint64 offset) bool audio_seek(gint64 offset)
{ {
if (!audio_track) if (!audio_track)
@ -172,12 +178,6 @@ bool audio_seek(gint64 offset)
offset); offset);
} }
void audio :: stop()
{
audio_pause();
audio_seek(0);
}
gint64 audio_position() gint64 audio_position()
{ {
gint64 position; gint64 position;

View File

@ -178,6 +178,11 @@ void gst :: pause()
} }
} }
void gst :: stop() {
if (audio_stop())
on_pause();
}
void gst :: next() void gst :: next()
{ {
audio :: next(); audio :: next();
@ -218,7 +223,7 @@ void gst :: init_pre()
o_play->signal_clicked().connect(sigc::ptr_fun(gst :: play)); o_play->signal_clicked().connect(sigc::ptr_fun(gst :: play));
o_prev->signal_clicked().connect(sigc::ptr_fun(audio :: prev)); o_prev->signal_clicked().connect(sigc::ptr_fun(audio :: prev));
o_seek->signal_change_value().connect(sigc::ptr_fun(on_seek)); o_seek->signal_change_value().connect(sigc::ptr_fun(on_seek));
o_stop->signal_clicked().connect(sigc::ptr_fun(audio :: stop)); o_stop->signal_clicked().connect(sigc::ptr_fun(gst :: stop));
o_count->signal_changed().connect(sigc::ptr_fun(on_pause_count)); o_count->signal_changed().connect(sigc::ptr_fun(on_pause_count));
o_enabled->signal_toggled().connect(sigc::ptr_fun(on_pause_enabled)); o_enabled->signal_toggled().connect(sigc::ptr_fun(on_pause_enabled));

View File

@ -52,11 +52,6 @@ public:
namespace audio namespace audio
{ {
/**
* Stop playback and seek to the beginning of the track.
*/
void stop();
void next(); /**< Find and load the next track that should be played. */ void next(); /**< Find and load the next track that should be played. */
void prev(); /**< Call the deck :: previous() function and load the result. */ void prev(); /**< Call the deck :: previous() function and load the result. */
@ -112,6 +107,9 @@ bool audio_play();
/* Called to pause playback. */ /* Called to pause playback. */
bool audio_pause(); bool audio_pause();
/* Called to stop playback. */
bool audio_stop();
/* Called to seek playback to a specific offset, in nanoseconds. */ /* Called to seek playback to a specific offset, in nanoseconds. */
bool audio_seek(gint64); bool audio_seek(gint64);

View File

@ -45,6 +45,7 @@ namespace gst
{ {
void play(); void play();
void pause(); void pause();
void stop();
void next(); void next();
void toggle(); void toggle();
void init_pre(); void init_pre();

View File

@ -68,6 +68,7 @@ static void test_init()
test_equal(audio_load(NULL), false); test_equal(audio_load(NULL), false);
test_equal(audio_play(), false); test_equal(audio_play(), false);
test_equal(audio_pause(), false); test_equal(audio_pause(), false);
test_equal(audio_stop(), false);
test_equal(audio_seek(7), false); test_equal(audio_seek(7), false);
test_equal(audio_position(), 0); test_equal(audio_position(), 0);
test_equal(audio_duration(), 0); test_equal(audio_duration(), 0);
@ -107,7 +108,15 @@ static void test_playback()
test_equal(test_audio_seek(5 * GST_SECOND), true); test_equal(test_audio_seek(5 * GST_SECOND), true);
test_equal(audio_position(), 5 * GST_SECOND); test_equal(audio_position(), 5 * GST_SECOND);
test_equal(test_audio_seek(0), true); test_equal(audio_stop(), true);
test_equal(audio_position(), 0);
test_equal(test_audio_seek(42 * GST_SECOND), true);
test_equal(audio_position(), 42 * GST_SECOND);
test_equal(audio_play(), true);
test_equal(audio_stop(), true);
test_equal(audio_pause(), false);
test_equal(audio_position(), 0); test_equal(audio_position(), 0);
/* Check duration again now that track is fully loaded. */ /* Check duration again now that track is fully loaded. */
@ -135,7 +144,7 @@ void test_pre_init()
driver->playing = true; driver->playing = true;
audio_pause(); audio_pause();
test_equal(driver->playing, true); test_equal(driver->playing, true);
audio :: stop(); audio_stop();
test_equal(driver->playing, true); test_equal(driver->playing, true);
driver->playing = false; driver->playing = false;
@ -166,28 +175,6 @@ void test_init2()
test_not_equal(track, TRACK_NULL); test_not_equal(track, TRACK_NULL);
} }
void test_playback_controls()
{
TestDriver *driver = (TestDriver *)audio :: get_driver();
driver->playing = audio_play();
test_equal(driver->playing, true);
driver->playing = audio_pause();
test_equal(driver->playing, false);
audio_seek(4242);
test_equal(audio_position(), (long)4242);
audio_play();
audio :: stop();
test_equal(driver->playing, false);
audio_seek(4242);
test_equal(audio_position(), (long)4242);
test_equal(audio_duration(), (long)424242);
}
void test_track_controls() void test_track_controls()
{ {
struct track *track = NULL; struct track *track = NULL;
@ -262,6 +249,5 @@ DECLARE_UNIT_TESTS(
UNIT_TEST("Audio Deinitialization", test_deinit), UNIT_TEST("Audio Deinitialization", test_deinit),
UNIT_TEST("Test Audio Pre-Init", test_pre_init), UNIT_TEST("Test Audio Pre-Init", test_pre_init),
UNIT_TEST("Test Audio Init 2", test_init2), UNIT_TEST("Test Audio Init 2", test_init2),
UNIT_TEST("Test Audio Playback Controls", test_playback_controls),
UNIT_TEST("Test Audio Automatic Pausing", test_autopause), UNIT_TEST("Test Audio Automatic Pausing", test_autopause),
); );