Date: Thursday, March 14, 2019 @ 12:22:11
  Author: heftig
Revision: 347943

0.6.0-2

Added:
  dleyna-renderer/trunk/gupnp-1.2.diff
Modified:
  dleyna-renderer/trunk/PKGBUILD

----------------+
 PKGBUILD       |   13 +++--
 gupnp-1.2.diff |  134 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 143 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2019-03-14 12:22:09 UTC (rev 347942)
+++ PKGBUILD    2019-03-14 12:22:11 UTC (rev 347943)
@@ -2,7 +2,7 @@
 
 pkgname=dleyna-renderer
 pkgver=0.6.0
-pkgrel=1
+pkgrel=2
 pkgdesc="Library to discover and manipulate Digital Media Renderers"
 arch=(x86_64)
 url="http://01.org/dleyna";
@@ -10,8 +10,10 @@
 depends=(dleyna-connector-dbus gupnp-av gupnp-dlna libsoup)
 makedepends=(git)
 _commit=334baba53e253957637b86764347dcc27cf091ab  # tags/0.6.0
-source=("git+https://github.com/01org/dleyna-renderer#commit=$_commit";)
-sha256sums=('SKIP')
+source=("git+https://github.com/01org/dleyna-renderer#commit=$_commit";
+        gupnp-1.2.diff)
+sha256sums=('SKIP'
+            '91ee8a1bf00d94865f2caef3b16da2c74c42ff37e6620718592304617d27b4f1')
 
 pkgver() {
   cd $pkgname
@@ -20,13 +22,16 @@
 
 prepare() {
   cd $pkgname
+  patch -Np1 -i ../gupnp-1.2.diff
   NOCONFIGURE=1 ./autogen.sh
 }
 
 build() {
   cd $pkgname
+  CFLAGS+=" -Wno-deprecated-declarations"
   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
-    --disable-static --libexecdir=/usr/lib/$pkgname
+    --disable-static --libexecdir=/usr/lib
+  sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
   make
 }
 

Added: gupnp-1.2.diff
===================================================================
--- gupnp-1.2.diff                              (rev 0)
+++ gupnp-1.2.diff      2019-03-14 12:22:11 UTC (rev 347943)
@@ -0,0 +1,134 @@
+ configure.ac                |  4 ++--
+ libdleyna/renderer/device.c | 55 +++++++++++++++++++++++++++++++++++++++++++--
+ libdleyna/renderer/upnp.c   |  4 ++--
+ 3 files changed, 57 insertions(+), 6 deletions(-)
+
+diff --git c/configure.ac i/configure.ac
+index 271ee92..364659d 100644
+--- c/configure.ac
++++ i/configure.ac
+@@ -38,8 +38,8 @@ LT_LANG([C])
+ PKG_PROG_PKG_CONFIG(0.16)
+ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.28])
+ PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.28])
+-PKG_CHECK_MODULES([GSSDP], [gssdp-1.0 >= 0.13.2])
+-PKG_CHECK_MODULES([GUPNP], [gupnp-1.0 >= 0.20.5])
++PKG_CHECK_MODULES([GSSDP], [gssdp-1.2 >= 1.2.0])
++PKG_CHECK_MODULES([GUPNP], [gupnp-1.2 >= 1.2.0])
+ PKG_CHECK_MODULES([GUPNPAV], [gupnp-av-1.0 >= 0.11.5])
+ PKG_CHECK_MODULES([GUPNPDLNA], [gupnp-dlna-2.0 >= 0.9.4])
+ PKG_CHECK_MODULES([SOUP], [libsoup-2.4 >= 2.28.2])
+diff --git c/libdleyna/renderer/device.c i/libdleyna/renderer/device.c
+index 7acef89..881f4ac 100644
+--- c/libdleyna/renderer/device.c
++++ i/libdleyna/renderer/device.c
+@@ -2121,33 +2121,84 @@ exit:
+       return;
+ }
+ 
++typedef struct
++{
++  GMainLoop *loop;
++  GUPnPServiceIntrospection **introspection;
++  GError **error;
++} GetIntrospectionAsyncData;
++
++static void
++get_introspection_async_cb (GUPnPServiceInfo           *info,
++                            GUPnPServiceIntrospection  *introspection,
++                            const GError               *error,
++                            gpointer                    user_data)
++{
++  GetIntrospectionAsyncData *data = user_data;
++  *data->introspection = introspection;
++  if (data->error)
++    *data->error = g_error_copy (error);
++  g_main_loop_quit (data->loop);
++}
++
++static GUPnPServiceIntrospection *
++_gupnp_service_info_get_introspection (GUPnPServiceInfo *info,
++                                       GError          **error)
++{
++  GUPnPServiceIntrospection *introspection;
++  GetIntrospectionAsyncData *data;
++  GMainContext *context;
++
++  context = g_main_context_new ();
++  data = g_new0 (GetIntrospectionAsyncData, 1);
++  data->loop = g_main_loop_new (context, FALSE);
++  data->introspection = &introspection;
++  data->error = error;
++
++  g_main_context_push_thread_default (context);
++
++  gupnp_service_info_get_introspection_async (info,
++                                              get_introspection_async_cb,
++                                              data);
++
++  g_main_loop_run (data->loop);
++
++  g_main_context_pop_thread_default (context);
++
++  g_main_loop_unref (data->loop);
++  g_free (data);
++  g_main_context_unref (context);
++
++  return introspection;
++}
++
+ static gboolean prv_get_av_service_states_values(GUPnPServiceProxy *av_proxy,
+                                                GVariant **mpris_tp_speeds,
+                                                GPtrArray **upnp_tp_speeds,
+                                                double *min_rate,
+                                                double *max_rate,
+                                                gboolean *can_get_byte_pos)
+ {
+       const GUPnPServiceStateVariableInfo *svi;
+       const GUPnPServiceActionInfo *sai;
+       GUPnPServiceIntrospection *introspection;
+       GError *error = NULL;
+       GVariant *speeds = NULL;
+       GList *allowed_values;
+       gpointer weak_ref = NULL;
+       gboolean  device_alive = TRUE;
+ 
+       /* TODO: this weak_ref hack is needed as
+          gupnp_service_info_get_introspection iterates the main loop.
+          This can result in our device getting deleted before this
+          function returns.  Ultimately, this code needs to be re-written
+          to use gupnp_service_info_get_introspection_async but this cannot
+          really be done until GUPnP provides a way to cancel this function. */
+ 
+       weak_ref = av_proxy;
+       g_object_add_weak_pointer(G_OBJECT(av_proxy), &weak_ref);
+ 
+-      introspection = gupnp_service_info_get_introspection(
++      introspection = _gupnp_service_info_get_introspection(
+               GUPNP_SERVICE_INFO(av_proxy),
+               &error);
+ 
+@@ -2215,7 +2266,7 @@ static gboolean 
prv_get_rc_service_states_values(GUPnPServiceProxy *rc_proxy,
+       weak_ref = rc_proxy;
+       g_object_add_weak_pointer(G_OBJECT(rc_proxy), &weak_ref);
+ 
+-      introspection = gupnp_service_info_get_introspection(
++      introspection = _gupnp_service_info_get_introspection(
+               GUPNP_SERVICE_INFO(rc_proxy),
+               &error);
+ 
+diff --git c/libdleyna/renderer/upnp.c i/libdleyna/renderer/upnp.c
+index 17cbda7..068912b 100644
+--- c/libdleyna/renderer/upnp.c
++++ i/libdleyna/renderer/upnp.c
+@@ -243,8 +243,8 @@ static void prv_server_unavailable_cb(GUPnPControlPoint 
*cp,
+ 
+       udn = gupnp_device_info_get_udn((GUPnPDeviceInfo *)proxy);
+ 
+-      ip_address = gupnp_context_get_host_ip(
+-              gupnp_control_point_get_context(cp));
++      ip_address = gssdp_client_get_host_ip(
++              GSSDP_CLIENT(gupnp_control_point_get_context(cp)));
+ 
+       if (!udn || !ip_address)
+               goto on_error;

Reply via email to