output/roar: use std::string

This commit is contained in:
Max Kellermann 2013-10-15 22:55:17 +02:00
parent 6db77dcf75
commit 85003429af

View File

@ -29,6 +29,8 @@
#include <glib.h> #include <glib.h>
#include <string>
/* libroar/services.h declares roar_service_stream::new - work around /* libroar/services.h declares roar_service_stream::new - work around
this C++ problem */ this C++ problem */
#define new _new #define new _new
@ -38,10 +40,10 @@
class RoarOutput { class RoarOutput {
struct audio_output base; struct audio_output base;
std::string host, name;
roar_vs_t * vss; roar_vs_t * vss;
int err; int err;
char *host;
char *name;
int role; int role;
struct roar_connection con; struct roar_connection con;
struct roar_audio_info info; struct roar_audio_info info;
@ -50,13 +52,7 @@ class RoarOutput {
public: public:
RoarOutput() RoarOutput()
:err(ROAR_ERROR_NONE), :err(ROAR_ERROR_NONE) {}
host(nullptr), name(nullptr) {}
~RoarOutput() {
g_free(host);
g_free(name);
}
operator audio_output *() { operator audio_output *() {
return &base; return &base;
@ -133,8 +129,8 @@ roar_output_set_volume(RoarOutput *roar, unsigned volume)
inline void inline void
RoarOutput::Configure(const config_param &param) RoarOutput::Configure(const config_param &param)
{ {
host = param.DupBlockString("server", nullptr); host = param.GetBlockValue("server", "");
name = param.DupBlockString("name", "MPD"); name = param.GetBlockValue("name", "MPD");
const char *_role = param.GetBlockValue("role", "music"); const char *_role = param.GetBlockValue("role", "music");
role = _role != nullptr role = _role != nullptr
@ -205,7 +201,9 @@ RoarOutput::Open(AudioFormat &audio_format, Error &error)
{ {
const ScopeLock protect(mutex); const ScopeLock protect(mutex);
if (roar_simple_connect(&con, host, name) < 0) { if (roar_simple_connect(&con,
host.empty() ? nullptr : host.c_str(),
name.c_str()) < 0) {
error.Set(roar_output_domain, error.Set(roar_output_domain,
"Failed to connect to Roar server"); "Failed to connect to Roar server");
return false; return false;