util/Error: new error passing library

Replaces GLib's GError.
This commit is contained in:
Max Kellermann
2013-08-10 18:02:44 +02:00
parent c9fcc7f148
commit 29030b54c9
256 changed files with 3269 additions and 3371 deletions

View File

@@ -28,6 +28,7 @@
#include "DecoderInternal.hxx"
#include "Song.hxx"
#include "InputStream.hxx"
#include "util/Error.hxx"
#include <glib.h>
@@ -257,8 +258,6 @@ size_t decoder_read(struct decoder *decoder,
void *buffer, size_t length)
{
/* XXX don't allow decoder==NULL */
GError *error = NULL;
size_t nbytes;
assert(decoder == NULL ||
decoder->dc->state == DECODE_STATE_START ||
@@ -283,14 +282,13 @@ size_t decoder_read(struct decoder *decoder,
is->cond.wait(is->mutex);
}
nbytes = input_stream_read(is, buffer, length, &error);
assert(nbytes == 0 || error == NULL);
assert(nbytes > 0 || error != NULL || input_stream_eof(is));
Error error;
size_t nbytes = input_stream_read(is, buffer, length, error);
assert(nbytes == 0 || !error.IsDefined());
assert(nbytes > 0 || error.IsDefined() || input_stream_eof(is));
if (gcc_unlikely(nbytes == 0 && error != nullptr)) {
g_warning("%s", error->message);
g_error_free(error);
}
if (gcc_unlikely(nbytes == 0 && error.IsDefined()))
g_warning("%s", error.GetMessage());
input_stream_unlock(is);
@@ -364,7 +362,6 @@ decoder_data(struct decoder *decoder,
uint16_t kbit_rate)
{
struct decoder_control *dc = decoder->dc;
GError *error = NULL;
enum decoder_command cmd;
assert(dc->state == DECODE_STATE_DECODE);
@@ -397,16 +394,17 @@ decoder_data(struct decoder *decoder,
}
if (dc->in_audio_format != dc->out_audio_format) {
Error error;
data = decoder->conv_state.Convert(dc->in_audio_format,
data, length,
dc->out_audio_format,
&length,
&error);
error);
if (data == NULL) {
/* the PCM conversion has failed - stop
playback, since we have no better way to
bail out */
g_warning("%s", error->message);
g_warning("%s", error.GetMessage());
return DECODE_COMMAND_STOP;
}
}