From d488d796f45a89eb20ef1f8dba6824706e1384d9 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 8 Aug 2012 22:18:08 +0200 Subject: player_control: add GError attribute Rewrite of the pc_get_error_message() function, now using a GError object instead of the complicated "errored_song" attribute. --- src/player_thread.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/player_thread.c') diff --git a/src/player_thread.c b/src/player_thread.c index be314849b..486a8c96e 100644 --- a/src/player_thread.c +++ b/src/player_thread.c @@ -235,10 +235,10 @@ player_wait_for_decoder(struct player *player) player->queued = false; - if (decoder_lock_has_failed(dc)) { + GError *error = dc_lock_get_error(dc); + if (error != NULL) { player_lock(pc); - pc->errored_song = dc->song; - pc->error_type = PLAYER_ERROR_DECODER; + pc_set_error(pc, PLAYER_ERROR_DECODER, error); pc->next_song = NULL; player_unlock(pc); @@ -318,7 +318,6 @@ player_open_output(struct player *player) return true; } else { g_warning("%s", error->message); - g_error_free(error); player->output_open = false; @@ -327,7 +326,7 @@ player_open_output(struct player *player) player->paused = true; player_lock(pc); - pc->error_type = PLAYER_ERROR_OUTPUT; + pc_set_error(pc, PLAYER_ERROR_OUTPUT, error); pc->state = PLAYER_STATE_PAUSE; player_unlock(pc); @@ -352,13 +351,13 @@ player_check_decoder_startup(struct player *player) decoder_lock(dc); - if (decoder_has_failed(dc)) { + GError *error = dc_get_error(dc); + if (error != NULL) { /* the decoder failed */ decoder_unlock(dc); player_lock(pc); - pc->errored_song = dc->song; - pc->error_type = PLAYER_ERROR_DECODER; + pc_set_error(pc, PLAYER_ERROR_DECODER, error); player_unlock(pc); return false; @@ -797,13 +796,12 @@ play_next_chunk(struct player *player) if (!play_chunk(player->pc, player->song, chunk, &player->play_audio_format, &error)) { g_warning("%s", error->message); - g_error_free(error); music_buffer_return(player_buffer, chunk); player_lock(pc); - pc->error_type = PLAYER_ERROR_OUTPUT; + pc_set_error(pc, PLAYER_ERROR_OUTPUT, error); /* pause: the user may resume playback as soon as an audio output becomes available */ -- cgit v1.2.3