aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Main.cxx5
-rw-r--r--src/PlayerControl.cxx42
-rw-r--r--src/PlayerControl.hxx10
-rw-r--r--test/run_output.cxx6
4 files changed, 29 insertions, 34 deletions
diff --git a/src/Main.cxx b/src/Main.cxx
index b10e0f32..b4b5cbb8 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 7d729bfd..554033e7 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 3b536b8b..1a050320 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.
diff --git a/test/run_output.cxx b/test/run_output.cxx
index 18967ead..e3d7163e 100644
--- a/test/run_output.cxx
+++ b/test/run_output.cxx
@@ -98,6 +98,10 @@ find_named_config_block(const char *block, const char *name)
return NULL;
}
+player_control::player_control(gcc_unused unsigned _buffer_chunks,
+ gcc_unused unsigned _buffered_before_play) {}
+player_control::~player_control() {}
+
static struct audio_output *
load_audio_output(const char *name)
{
@@ -110,7 +114,7 @@ load_audio_output(const char *name)
return nullptr;
}
- static struct player_control dummy_player_control;
+ static struct player_control dummy_player_control(32, 4);
struct audio_output *ao =
audio_output_new(param, &dummy_player_control, &error);