Update the python bindings to the latest API version
[deb_shairplay.git] / AirTV-Qt / raopservice.cpp
index 79472c1f0b047f43ed158c85db7fcc243add5f0f..1c3519dbeb567a0876f796e88b65b825cc77d1f5 100644 (file)
@@ -1,16 +1,32 @@
+/**
+ *  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
@@ -65,7 +81,6 @@ RaopService::~RaopService()
 
 bool RaopService::init()
 {
-    const char hwaddr[] = { 0x48, 0x5d, 0x60, 0x7c, 0xee, 0x22 };
     raop_callbacks_t raop_cbs;
     int error;
 
@@ -92,12 +107,12 @@ bool RaopService::init()
     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;
@@ -109,17 +124,19 @@ bool RaopService::init()
 
 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();