+/**
+ * Copyright (C) 2011-2012 Juho Vähä-Herttua
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ */
+
#include "raopservice.h"
#include <QDebug>
#include <QFile>
-static void
-audio_init(void *cls, void **session, int bits, int channels, int samplerate)
+static void*
+audio_init(void *cls, int bits, int channels, int samplerate)
{
+ void *session;
QMetaObject::invokeMethod((QObject*)cls, "audioInit", Qt::BlockingQueuedConnection,
- Q_ARG(void*, (void*)session),
+ Q_ARG(void*, (void*)&session),
Q_ARG(int, bits),
Q_ARG(int, channels),
Q_ARG(int, samplerate));
+ return session;
}
static void
bool RaopService::init()
{
- const char hwaddr[] = { 0x48, 0x5d, 0x60, 0x7c, 0xee, 0x22 };
raop_callbacks_t raop_cbs;
int error;
QByteArray array = file.read(file.size());
array.append('\0');
- m_raop = raop_init(&raop_cbs, array.data(), hwaddr, sizeof(hwaddr));
+ m_raop = raop_init(&raop_cbs, array.data());
if (!m_raop) {
return false;
}
- m_dnssd = dnssd_init(hwaddr, sizeof(hwaddr), &error);
+ m_dnssd = dnssd_init(&error);
if (!m_dnssd) {
raop_destroy(m_raop);
m_raop = NULL;
bool RaopService::start(const QString & name, quint16 port)
{
+ const char hwaddr[] = { 0x48, 0x5d, 0x60, 0x7c, 0xee, 0x22 };
+
if (!m_raop || !m_dnssd || m_thread.isRunning()) {
return false;
}
m_thread.start();
- if (raop_start(m_raop, &port) < 0) {
+ if (raop_start(m_raop, &port, hwaddr, sizeof(hwaddr), NULL) < 0) {
m_thread.quit();
m_thread.wait();
return false;
}
- if (dnssd_register_raop(m_dnssd, name.toUtf8(), port) < 0) {
+ if (dnssd_register_raop(m_dnssd, name.toUtf8(), port, hwaddr, sizeof(hwaddr), 0) < 0) {
raop_stop(m_raop);
m_thread.quit();
m_thread.wait();