util/Error: new error passing library
Replaces GLib's GError.
This commit is contained in:
@@ -21,6 +21,8 @@
|
||||
#include "OSXOutputPlugin.hxx"
|
||||
#include "OutputAPI.hxx"
|
||||
#include "util/fifo_buffer.h"
|
||||
#include "util/Error.hxx"
|
||||
#include "util/Domain.hxx"
|
||||
#include "thread/Mutex.hxx"
|
||||
#include "thread/Cond.hxx"
|
||||
|
||||
@@ -47,14 +49,7 @@ struct OSXOutput {
|
||||
struct fifo_buffer *buffer;
|
||||
};
|
||||
|
||||
/**
|
||||
* The quark used for GError.domain.
|
||||
*/
|
||||
static inline GQuark
|
||||
osx_output_quark(void)
|
||||
{
|
||||
return g_quark_from_static_string("osx_output");
|
||||
}
|
||||
static constexpr Domain osx_output_domain("osx_output");
|
||||
|
||||
static bool
|
||||
osx_output_test_default_device(void)
|
||||
@@ -85,10 +80,10 @@ osx_output_configure(OSXOutput *oo, const config_param ¶m)
|
||||
}
|
||||
|
||||
static struct audio_output *
|
||||
osx_output_init(const config_param ¶m, GError **error_r)
|
||||
osx_output_init(const config_param ¶m, Error &error)
|
||||
{
|
||||
OSXOutput *oo = new OSXOutput();
|
||||
if (!ao_base_init(&oo->base, &osx_output_plugin, param, error_r)) {
|
||||
if (!ao_base_init(&oo->base, &osx_output_plugin, param, error)) {
|
||||
delete oo;
|
||||
return NULL;
|
||||
}
|
||||
@@ -107,7 +102,7 @@ osx_output_finish(struct audio_output *ao)
|
||||
}
|
||||
|
||||
static bool
|
||||
osx_output_set_device(OSXOutput *oo, GError **error)
|
||||
osx_output_set_device(OSXOutput *oo, Error &error)
|
||||
{
|
||||
bool ret = true;
|
||||
OSStatus status;
|
||||
@@ -124,9 +119,9 @@ osx_output_set_device(OSXOutput *oo, GError **error)
|
||||
&size,
|
||||
NULL);
|
||||
if (status != noErr) {
|
||||
g_set_error(error, osx_output_quark(), status,
|
||||
"Unable to determine number of OS X audio devices: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
error.Format(osx_output_domain, status,
|
||||
"Unable to determine number of OS X audio devices: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@@ -138,9 +133,9 @@ osx_output_set_device(OSXOutput *oo, GError **error)
|
||||
&size,
|
||||
deviceids);
|
||||
if (status != noErr) {
|
||||
g_set_error(error, osx_output_quark(), status,
|
||||
"Unable to determine OS X audio device IDs: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
error.Format(osx_output_domain, status,
|
||||
"Unable to determine OS X audio device IDs: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@@ -152,11 +147,11 @@ osx_output_set_device(OSXOutput *oo, GError **error)
|
||||
kAudioDevicePropertyDeviceName,
|
||||
&size, name);
|
||||
if (status != noErr) {
|
||||
g_set_error(error, osx_output_quark(), status,
|
||||
"Unable to determine OS X device name "
|
||||
"(device %u): %s",
|
||||
(unsigned int) deviceids[i],
|
||||
GetMacOSStatusCommentString(status));
|
||||
error.Format(osx_output_domain, status,
|
||||
"Unable to determine OS X device name "
|
||||
"(device %u): %s",
|
||||
(unsigned int) deviceids[i],
|
||||
GetMacOSStatusCommentString(status));
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@@ -180,9 +175,9 @@ osx_output_set_device(OSXOutput *oo, GError **error)
|
||||
&(deviceids[i]),
|
||||
sizeof(AudioDeviceID));
|
||||
if (status != noErr) {
|
||||
g_set_error(error, osx_output_quark(), status,
|
||||
"Unable to set OS X audio output device: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
error.Format(osx_output_domain, status,
|
||||
"Unable to set OS X audio output device: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@@ -237,7 +232,7 @@ osx_render(void *vdata,
|
||||
}
|
||||
|
||||
static bool
|
||||
osx_output_enable(struct audio_output *ao, GError **error_r)
|
||||
osx_output_enable(struct audio_output *ao, Error &error)
|
||||
{
|
||||
OSXOutput *oo = (OSXOutput *)ao;
|
||||
|
||||
@@ -250,20 +245,20 @@ osx_output_enable(struct audio_output *ao, GError **error_r)
|
||||
|
||||
Component comp = FindNextComponent(NULL, &desc);
|
||||
if (comp == 0) {
|
||||
g_set_error(error_r, osx_output_quark(), 0,
|
||||
"Error finding OS X component");
|
||||
error.Set(osx_output_domain,
|
||||
"Error finding OS X component");
|
||||
return false;
|
||||
}
|
||||
|
||||
OSStatus status = OpenAComponent(comp, &oo->au);
|
||||
if (status != noErr) {
|
||||
g_set_error(error_r, osx_output_quark(), status,
|
||||
"Unable to open OS X component: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
error.Format(osx_output_domain, status,
|
||||
"Unable to open OS X component: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!osx_output_set_device(oo, error_r)) {
|
||||
if (!osx_output_set_device(oo, error)) {
|
||||
CloseComponent(oo->au);
|
||||
return false;
|
||||
}
|
||||
@@ -279,8 +274,8 @@ osx_output_enable(struct audio_output *ao, GError **error_r)
|
||||
&callback, sizeof(callback));
|
||||
if (result != noErr) {
|
||||
CloseComponent(oo->au);
|
||||
g_set_error(error_r, osx_output_quark(), result,
|
||||
"unable to set callback for OS X audio unit");
|
||||
error.Set(osx_output_domain, result,
|
||||
"unable to set callback for OS X audio unit");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -316,7 +311,8 @@ osx_output_close(struct audio_output *ao)
|
||||
}
|
||||
|
||||
static bool
|
||||
osx_output_open(struct audio_output *ao, AudioFormat &audio_format, GError **error)
|
||||
osx_output_open(struct audio_output *ao, AudioFormat &audio_format,
|
||||
Error &error)
|
||||
{
|
||||
OSXOutput *od = (OSXOutput *)ao;
|
||||
|
||||
@@ -359,16 +355,16 @@ osx_output_open(struct audio_output *ao, AudioFormat &audio_format, GError **err
|
||||
&stream_description,
|
||||
sizeof(stream_description));
|
||||
if (result != noErr) {
|
||||
g_set_error(error, osx_output_quark(), result,
|
||||
"Unable to set format on OS X device");
|
||||
error.Set(osx_output_domain, result,
|
||||
"Unable to set format on OS X device");
|
||||
return false;
|
||||
}
|
||||
|
||||
OSStatus status = AudioUnitInitialize(od->au);
|
||||
if (status != noErr) {
|
||||
g_set_error(error, osx_output_quark(), status,
|
||||
"Unable to initialize OS X audio unit: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
error.Set(osx_output_domain, status,
|
||||
"Unable to initialize OS X audio unit: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -379,9 +375,9 @@ osx_output_open(struct audio_output *ao, AudioFormat &audio_format, GError **err
|
||||
status = AudioOutputUnitStart(od->au);
|
||||
if (status != 0) {
|
||||
AudioUnitUninitialize(od->au);
|
||||
g_set_error(error, osx_output_quark(), status,
|
||||
"unable to start audio output: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
error.Format(osx_output_domain, status,
|
||||
"unable to start audio output: %s",
|
||||
GetMacOSStatusCommentString(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -390,7 +386,7 @@ osx_output_open(struct audio_output *ao, AudioFormat &audio_format, GError **err
|
||||
|
||||
static size_t
|
||||
osx_output_play(struct audio_output *ao, const void *chunk, size_t size,
|
||||
gcc_unused GError **error)
|
||||
gcc_unused Error &error)
|
||||
{
|
||||
OSXOutput *od = (OSXOutput *)ao;
|
||||
|
||||
|
Reference in New Issue
Block a user