diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Main.cxx | 5 | ||||
-rw-r--r-- | src/PlayerControl.cxx | 42 | ||||
-rw-r--r-- | src/PlayerControl.hxx | 10 |
3 files changed, 24 insertions, 33 deletions
diff --git a/src/Main.cxx b/src/Main.cxx index b10e0f328..b4b5cbb8e 100644 --- a/src/Main.cxx +++ b/src/Main.cxx @@ -306,7 +306,8 @@ initialize_decoder_and_player(void) if (buffered_before_play > buffered_chunks) buffered_before_play = buffered_chunks; - global_player_control = pc_new(buffered_chunks, buffered_before_play); + global_player_control = new player_control(buffered_chunks, + buffered_before_play); } /** @@ -538,7 +539,7 @@ int mpd_main(int argc, char *argv[]) volume_finish(); mapper_finish(); path_global_finish(); - pc_free(global_player_control); + delete global_player_control; command_finish(); update_global_finish(); decoder_plugin_deinit_all(); diff --git a/src/PlayerControl.cxx b/src/PlayerControl.cxx index 7d729bfdc..554033e74 100644 --- a/src/PlayerControl.cxx +++ b/src/PlayerControl.cxx @@ -35,36 +35,28 @@ extern "C" { static void pc_enqueue_song_locked(struct player_control *pc, struct song *song); -struct player_control * -pc_new(unsigned buffer_chunks, unsigned int buffered_before_play) +player_control::player_control(unsigned _buffer_chunks, + unsigned _buffered_before_play) + :buffer_chunks(_buffer_chunks), + buffered_before_play(_buffered_before_play), + mutex(g_mutex_new()), + cond(g_cond_new()), + command(PLAYER_COMMAND_NONE), + state(PLAYER_STATE_STOP), + error_type(PLAYER_ERROR_NONE), + cross_fade_seconds(0), + mixramp_db(0), + mixramp_delay_seconds(nanf("")) { - struct player_control *pc = g_new0(struct player_control, 1); - - pc->buffer_chunks = buffer_chunks; - pc->buffered_before_play = buffered_before_play; - - pc->mutex = g_mutex_new(); - pc->cond = g_cond_new(); - - pc->command = PLAYER_COMMAND_NONE; - pc->error_type = PLAYER_ERROR_NONE; - pc->state = PLAYER_STATE_STOP; - pc->cross_fade_seconds = 0; - pc->mixramp_db = 0; - pc->mixramp_delay_seconds = nanf(""); - - return pc; } -void -pc_free(struct player_control *pc) +player_control::~player_control() { - if (pc->next_song != NULL) - song_free(pc->next_song); + if (next_song != nullptr) + song_free(next_song); - g_cond_free(pc->cond); - g_mutex_free(pc->mutex); - g_free(pc); + g_cond_free(cond); + g_mutex_free(mutex); } void diff --git a/src/PlayerControl.hxx b/src/PlayerControl.hxx index 3b536b8ba..1a0503209 100644 --- a/src/PlayerControl.hxx +++ b/src/PlayerControl.hxx @@ -146,13 +146,11 @@ struct player_control { * time. */ bool border_pause; -}; - -struct player_control * -pc_new(unsigned buffer_chunks, unsigned buffered_before_play); -void -pc_free(struct player_control *pc); + player_control(unsigned buffer_chunks, + unsigned buffered_before_play); + ~player_control(); +}; /** * Locks the #player_control object. |