aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2011-01-10 20:46:04 +0100
committerMax Kellermann <max@duempel.org>2011-01-10 20:46:04 +0100
commitb77e62260aa1f3d36d742d947610c13f235bb67a (patch)
tree9be88302670f1913027595215552eafc83bac4d9 /src
parentb6995ca0113611613d311250eabfc354658d46a7 (diff)
decoder_control: replace dc_init() with dc_new()
dc_new() allocates the object and returns it. dc_free() frees it (replaces dc_deinit()).
Diffstat (limited to 'src')
-rw-r--r--src/decoder_control.c14
-rw-r--r--src/decoder_control.h7
-rw-r--r--src/player_thread.c11
3 files changed, 17 insertions, 15 deletions
diff --git a/src/decoder_control.c b/src/decoder_control.c
index 6cc2849c..2ad7dbef 100644
--- a/src/decoder_control.c
+++ b/src/decoder_control.c
@@ -27,9 +27,11 @@
#undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "decoder_control"
-void
-dc_init(struct decoder_control *dc, struct player_control *pc)
+struct decoder_control *
+dc_new(struct player_control *pc)
{
+ struct decoder_control *dc = g_new(struct decoder_control, 1);
+
dc->player_control = pc;
dc->thread = NULL;
@@ -44,19 +46,19 @@ dc_init(struct decoder_control *dc, struct player_control *pc)
dc->mixramp_start = NULL;
dc->mixramp_end = NULL;
dc->mixramp_prev_end = NULL;
+
+ return dc;
}
void
-dc_deinit(struct decoder_control *dc)
+dc_free(struct decoder_control *dc)
{
g_cond_free(dc->cond);
g_mutex_free(dc->mutex);
g_free(dc->mixramp_start);
g_free(dc->mixramp_end);
g_free(dc->mixramp_prev_end);
- dc->mixramp_start = NULL;
- dc->mixramp_end = NULL;
- dc->mixramp_prev_end = NULL;
+ g_free(dc);
}
static void
diff --git a/src/decoder_control.h b/src/decoder_control.h
index fafc6dea..13b89468 100644
--- a/src/decoder_control.h
+++ b/src/decoder_control.h
@@ -105,11 +105,12 @@ struct decoder_control {
char *mixramp_prev_end;
};
-void
-dc_init(struct decoder_control *dc, struct player_control *pc);
+G_GNUC_MALLOC
+struct decoder_control *
+dc_new(struct player_control *pc);
void
-dc_deinit(struct decoder_control *dc);
+dc_free(struct decoder_control *dc);
/**
* Locks the #decoder_control object.
diff --git a/src/player_thread.c b/src/player_thread.c
index d5126347..6be7b888 100644
--- a/src/player_thread.c
+++ b/src/player_thread.c
@@ -1023,10 +1023,9 @@ static gpointer
player_task(gpointer arg)
{
struct player_control *pc = arg;
- struct decoder_control dc;
- dc_init(&dc, pc);
- decoder_thread_start(&dc);
+ struct decoder_control *dc = dc_new(pc);
+ decoder_thread_start(dc);
player_buffer = music_buffer_new(pc->buffer_chunks);
@@ -1037,7 +1036,7 @@ player_task(gpointer arg)
case PLAYER_COMMAND_QUEUE:
assert(pc->next_song != NULL);
- do_play(pc, &dc);
+ do_play(pc, dc);
break;
case PLAYER_COMMAND_STOP:
@@ -1081,8 +1080,8 @@ player_task(gpointer arg)
case PLAYER_COMMAND_EXIT:
player_unlock(pc);
- dc_quit(&dc);
- dc_deinit(&dc);
+ dc_quit(dc);
+ dc_free(dc);
audio_output_all_close();
music_buffer_free(player_buffer);