Hello community,

here is the log from the commit of package gupnp for openSUSE:Factory checked 
in at 2016-02-18 11:06:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gupnp (Old)
 and      /work/SRC/openSUSE:Factory/.gupnp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gupnp"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gupnp/gupnp.changes      2016-01-09 
23:12:43.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gupnp.new/gupnp.changes 2016-02-18 
12:35:36.000000000 +0100
@@ -1,0 +2,14 @@
+Tue Feb  9 08:41:16 UTC 2016 - dims...@opensuse.org
+
+- Update to version 0.20.16:
+  + Don't hardcode python path in gupnp-binding-tool.
+  + Check for IFA_FLAGS to not bind ourselves to a recent kernel
+    version.
+  + Add missing m4 files.
+  + Fix issues with introspection.
+  + Make GUPnPServiceAction boxed.
+  + Some JavaScript examples.
+  + Distribute VAPI file in tarball.
+  + Bugs fixed: bgo#760217, bgo#760430, bgo#761265.
+
+-------------------------------------------------------------------

Old:
----
  gupnp-0.20.15.tar.xz

New:
----
  gupnp-0.20.16.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gupnp.spec ++++++
--- /var/tmp/diff_new_pack.iD4edQ/_old  2016-02-18 12:35:37.000000000 +0100
+++ /var/tmp/diff_new_pack.iD4edQ/_new  2016-02-18 12:35:37.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           gupnp
-Version:        0.20.15
+Version:        0.20.16
 Release:        0
 Summary:        Implementation of the UPnP specification
 License:        LGPL-2.0+

++++++ gupnp-0.20.15.tar.xz -> gupnp-0.20.16.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/NEWS new/gupnp-0.20.16/NEWS
--- old/gupnp-0.20.15/NEWS      2015-12-31 11:36:35.000000000 +0100
+++ new/gupnp-0.20.16/NEWS      2016-02-08 23:08:00.000000000 +0100
@@ -1,3 +1,23 @@
+0.20.16
+=======
+
+- Don't hardcode python path in gupnp-binding-tool
+- Check for IFA_FLAGS to not bind ourselves to a recent kernel version
+- Add missing m4 files
+- Fix issues with introspection
+- Make GUPnPServiceAction boxed
+- Some JavaScript examples
+- Distribute VAPI file in tarball
+
+Bugs fixed in this release:
+ - https://bugzilla.gnome.org/show_bug.cgi?id=760217
+ - https://bugzilla.gnome.org/show_bug.cgi?id=760430
+ - https://bugzilla.gnome.org/show_bug.cgi?id=761265
+
+All contributors to this release:
+ - Jens Georg <m...@jensge.org>
+ - Ting-Wei Lan <la...@src.gnome.org>
+
 0.20.15
 =======
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/configure new/gupnp-0.20.16/configure
--- old/gupnp-0.20.15/configure 2015-12-31 11:38:30.000000000 +0100
+++ new/gupnp-0.20.16/configure 2016-02-08 23:10:12.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gupnp 0.20.15.
+# Generated by GNU Autoconf 2.69 for gupnp 0.20.16.
 #
 # Report bugs to 
<http://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp>.
 #
@@ -651,8 +651,8 @@
 # Identity of this package.
 PACKAGE_NAME='gupnp'
 PACKAGE_TARNAME='gupnp'
-PACKAGE_VERSION='0.20.15'
-PACKAGE_STRING='gupnp 0.20.15'
+PACKAGE_VERSION='0.20.16'
+PACKAGE_STRING='gupnp 0.20.16'
 
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp'
 PACKAGE_URL='http://www.gupnp.org/'
 
@@ -1464,7 +1464,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gupnp 0.20.15 to adapt to many kinds of systems.
+\`configure' configures gupnp 0.20.16 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1535,7 +1535,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gupnp 0.20.15:";;
+     short | recursive ) echo "Configuration of gupnp 0.20.16:";;
    esac
   cat <<\_ACEOF
 
@@ -1677,7 +1677,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gupnp configure 0.20.15
+gupnp configure 0.20.16
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2046,7 +2046,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gupnp $as_me 0.20.15, which was
+It was created by gupnp $as_me 0.20.16, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3029,7 +3029,7 @@
 
 # Define the identity of the package.
  PACKAGE='gupnp'
- VERSION='0.20.15'
+ VERSION='0.20.16'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15225,7 +15225,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gupnp $as_me 0.20.15, which was
+This file was extended by gupnp $as_me 0.20.16, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15292,7 +15292,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gupnp config.status 0.20.15
+gupnp config.status 0.20.16
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/configure.ac 
new/gupnp-0.20.16/configure.ac
--- old/gupnp-0.20.15/configure.ac      2015-12-08 21:32:38.000000000 +0100
+++ new/gupnp-0.20.16/configure.ac      2016-02-05 20:56:15.000000000 +0100
@@ -1,6 +1,6 @@
 AC_PREREQ([2.64])
 AC_INIT([gupnp],
-        [0.20.15],
+        [0.20.16],
         
[http://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp],
         [gupnp],
         [http://www.gupnp.org/])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/doc/html/GUPnPServiceProxy.html 
new/gupnp-0.20.16/doc/html/GUPnPServiceProxy.html
--- old/gupnp-0.20.15/doc/html/GUPnPServiceProxy.html   2015-12-31 
11:47:46.000000000 +0100
+++ new/gupnp-0.20.16/doc/html/GUPnPServiceProxy.html   2016-02-08 
23:11:29.000000000 +0100
@@ -492,6 +492,7 @@
 <span class="type">GHashTable</span>s for runtime determined parameter 
lists.</p>
 <p>Do not use this function in newly written code; it cannot guarantee the
 order of arguments and thus breaks interaction with many devices.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not 
necessarily available in other languages."><span 
class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
 <a 
name="gupnp-service-proxy-send-action-hash.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -550,6 +551,7 @@
                                       <em class="parameter"><code><span 
class="type">GList</span> **out_values</code></em>);</pre>
 <p>The synchronous variant of <a class="link" 
href="GUPnPServiceProxy.html#gupnp-service-proxy-begin-action-list" 
title="gupnp_service_proxy_begin_action_list ()"><span 
class="type">gupnp_service_proxy_begin_action_list</span></a> and
 <a class="link" 
href="GUPnPServiceProxy.html#gupnp-service-proxy-end-action-list" 
title="gupnp_service_proxy_end_action_list ()"><span 
class="type">gupnp_service_proxy_end_action_list</span></a>.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not 
necessarily available in other languages."><span 
class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
 <a 
name="gupnp-service-proxy-send-action-list.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -760,6 +762,7 @@
 for runtime generated parameter lists.</p>
 <p>Do not use this function in newly written code; it cannot guarantee the
 order of arguments and thus breaks interaction with many devices.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not 
necessarily available in other languages."><span 
class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
 <a 
name="gupnp-service-proxy-begin-action-hash.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
@@ -1015,7 +1018,7 @@
 <td class="parameter_name"><p>hash</p></td>
 <td class="parameter_description"><p> A <span class="type">GHashTable</span> of
 out parameter name and initialised <span class="type">GValue</span> pairs. 
</p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym 
title="Generics and defining elements of containers and arrays."><span 
class="acronym">element-type</span></acronym> utf8 GValue][<acronym 
title="Parameter for input and for returning results. Default is transfer 
full."><span class="acronym">inout</span></acronym>][<acronym title="Don't free 
data after the code is done."><span class="acronym">transfer 
none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym 
title="Generics and defining elements of containers and arrays."><span 
class="acronym">element-type</span></acronym> utf8 GValue][<acronym title="Out 
parameter, where caller must allocate storage."><span class="acronym">out 
caller-allocates</span></acronym>][<acronym title="Don't free data after the 
code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -1040,6 +1043,7 @@
 in <em class="parameter"><code>out_values</code></em>
  must be freed using <span class="type">g_list_free</span> and each element in 
it using
 <span class="type">g_value_unset</span> and <span 
class="type">g_slice_free</span>.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not 
necessarily available in other languages."><span 
class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
 <a 
name="gupnp-service-proxy-end-action-list.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table width="100%" border="0">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/doc/html/annotation-glossary.html 
new/gupnp-0.20.16/doc/html/annotation-glossary.html
--- old/gupnp-0.20.15/doc/html/annotation-glossary.html 2015-12-31 
11:47:46.000000000 +0100
+++ new/gupnp-0.20.16/doc/html/annotation-glossary.html 2016-02-08 
23:11:29.000000000 +0100
@@ -50,6 +50,8 @@
 <a name="glsO"></a><h3 class="title">O</h3>
 <dt><span class="glossterm"><a 
name="annotation-glossterm-out"></a>out</span></dt>
 <dd class="glossdef"><p>Parameter for returning results. Default is <acronym 
title="Free data after the code is done."><span class="acronym">transfer 
full</span></acronym>.</p></dd>
+<dt><span class="glossterm"><a 
name="annotation-glossterm-out%20caller-allocates"></a>out 
caller-allocates</span></dt>
+<dd class="glossdef"><p>Out parameter, where caller must allocate 
storage.</p></dd>
 <a name="glsP"></a><h3 class="title">P</h3>
 <dt><span class="glossterm"><a 
name="annotation-glossterm-Private"></a>Private</span></dt>
 <dd class="glossdef"><p>An interface that can be used within the GNOME stack 
itself, but that is not
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/doc/html/index.html 
new/gupnp-0.20.16/doc/html/index.html
--- old/gupnp-0.20.15/doc/html/index.html       2015-12-31 11:47:46.000000000 
+0100
+++ new/gupnp-0.20.16/doc/html/index.html       2016-02-08 23:11:29.000000000 
+0100
@@ -14,7 +14,7 @@
 <div class="titlepage">
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" 
cellspacing="0"><tr><th valign="middle"><p class="title">GUPnP Reference 
Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">Version 0.20.15
+<div><p class="releaseinfo">Version 0.20.16
 </p></div>
 <div><p class="copyright">Copyright © 2007, 2008, 2009 OpenedHand Ltd, Nokia 
Corporation</p></div>
 <div><div class="legalnotice">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/libgupnp/gupnp-linux-context-manager.c 
new/gupnp-0.20.16/libgupnp/gupnp-linux-context-manager.c
--- old/gupnp-0.20.15/libgupnp/gupnp-linux-context-manager.c    2015-12-31 
10:50:37.000000000 +0100
+++ new/gupnp-0.20.16/libgupnp/gupnp-linux-context-manager.c    2016-02-05 
21:33:02.000000000 +0100
@@ -128,7 +128,9 @@
                 case IFA_ANYCAST: label = "IFA_ANYCAST"; break;
                 case IFA_CACHEINFO: label = "IFA_CACHEINFO"; break;
                 case IFA_MULTICAST: label = "IFA_MULTICAST"; break;
+#if defined(IFA_FLAGS)
                 case IFA_FLAGS: label = "IFA_FLAGS"; break;
+#endif
                 default: label = "Unknown"; break;
         }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/libgupnp/gupnp-service-proxy.c 
new/gupnp-0.20.16/libgupnp/gupnp-service-proxy.c
--- old/gupnp-0.20.15/libgupnp/gupnp-service-proxy.c    2015-08-01 
13:34:17.000000000 +0200
+++ new/gupnp-0.20.16/libgupnp/gupnp-service-proxy.c    2016-02-05 
23:02:54.000000000 +0100
@@ -81,6 +81,7 @@
 static guint signals[LAST_SIGNAL];
 
 struct _GUPnPServiceProxyAction {
+        volatile gint ref_count;
         GUPnPServiceProxy *proxy;
 
         SoupMessage *msg;
@@ -122,19 +123,49 @@
 static void
 unsubscribe (GUPnPServiceProxy *proxy);
 
+static GUPnPServiceProxyAction *
+gupnp_service_proxy_action_ref (GUPnPServiceProxyAction *action);
+
 static void
-gupnp_service_proxy_action_free (GUPnPServiceProxyAction *action)
+gupnp_service_proxy_action_unref (GUPnPServiceProxyAction *action);
+
+static GUPnPServiceProxyAction *
+gupnp_service_proxy_action_ref (GUPnPServiceProxyAction *action)
 {
-        action->proxy->priv->pending_actions =
-                g_list_remove (action->proxy->priv->pending_actions, action);
+        g_return_val_if_fail (action, NULL);
+        g_return_val_if_fail (action->ref_count > 0, NULL);
 
-        if (action->msg != NULL)
-                g_object_unref (action->msg);
+        g_atomic_int_inc (&action->ref_count);
 
-        g_slice_free (GUPnPServiceProxyAction, action);
+        return action;
 }
 
 static void
+gupnp_service_proxy_action_unref (GUPnPServiceProxyAction *action)
+{
+
+        g_return_if_fail (action);
+        g_return_if_fail (action->ref_count > 0);
+
+
+        if (g_atomic_int_dec_and_test (&action->ref_count)) {
+                if (action->proxy != NULL) {
+                        g_object_remove_weak_pointer (G_OBJECT (action->proxy),
+                                                      (gpointer 
*)&(action->proxy));
+                        action->proxy->priv->pending_actions =
+                                g_list_remove 
(action->proxy->priv->pending_actions, action);
+                }
+
+                if (action->msg != NULL)
+                        g_object_unref (action->msg);
+
+                g_slice_free (GUPnPServiceProxyAction, action);
+        }
+}
+
+G_DEFINE_BOXED_TYPE (GUPnPServiceProxyAction, gupnp_service_proxy_action, 
gupnp_service_proxy_action_ref, gupnp_service_proxy_action_unref)
+
+static void
 callback_data_free (CallbackData *data)
 {
         if (data->notify)
@@ -263,6 +294,9 @@
                 GUPnPServiceProxyAction *action;
 
                 action = proxy->priv->pending_actions->data;
+                proxy->priv->pending_actions =
+                        g_list_delete_link (proxy->priv->pending_actions,
+                                            proxy->priv->pending_actions);
 
                 gupnp_service_proxy_cancel_action (proxy, action);
         }
@@ -628,7 +662,7 @@
 }
 
 /**
- * gupnp_service_proxy_send_action_hash:
+ * gupnp_service_proxy_send_action_hash: (skip)
  * @proxy: A #GUPnPServiceProxy
  * @action: An action
  * @error: (allow-none): The location where to store any error, or %NULL
@@ -693,7 +727,42 @@
 }
 
 /**
- * gupnp_service_proxy_send_action_list:
+ * gupnp_service_proxy_send_action_list_gi: (rename-to 
gupnp_service_proxy_send_action_list)
+ * @proxy: (transfer none) : A #GUPnPServiceProxy
+ * @action: An action
+ * @error: The location where to store any error, or %NULL
+ * @in_names: (element-type utf8) (transfer none): #GList of 'in' parameter
+ * names (as strings)
+ * @in_values: (element-type GValue) (transfer none): #GList of values (as
+ * #GValue) that line up with @in_names
+ * @out_names: (element-type utf8) (transfer none): #GList of 'out' parameter
+ * names (as strings)
+ * @out_types: (element-type GType) (transfer none): #GList of types (as 
#GType)
+ * that line up with @out_names
+ * @out_values: (element-type GValue) (transfer full) (out): #GList of values
+ * (as #GValue) that line up with @out_names and @out_types.
+ *
+ * The synchronous variant of #gupnp_service_proxy_begin_action_list and
+ * #gupnp_service_proxy_end_action_list.
+ *
+ * Return value: %TRUE if sending the action was succesful.
+ *
+ **/
+gboolean
+gupnp_service_proxy_send_action_list_gi (GUPnPServiceProxy *proxy,
+                                         const char        *action,
+                                         GList             *in_names,
+                                         GList             *in_values,
+                                         GList             *out_names,
+                                         GList             *out_types,
+                                         GList            **out_values,
+                                         GError           **error)
+{
+    return gupnp_service_proxy_send_action_list (proxy, action, error, 
in_names, in_values, out_names, out_types, out_values);
+}
+
+/**
+ * gupnp_service_proxy_send_action_list: (skip)
  * @proxy: A #GUPnPServiceProxy
  * @action: An action
  * @error: (allow-none): The location where to store any error, or %NULL
@@ -816,8 +885,10 @@
 
         /* Create action structure */
         ret = g_slice_new (GUPnPServiceProxyAction);
+        ret->ref_count = 1;
 
         ret->proxy = proxy;
+        g_object_add_weak_pointer (G_OBJECT (proxy), (gpointer 
*)&(ret->proxy));
 
         ret->callback  = callback;
         ret->user_data = user_data;
@@ -1113,7 +1184,7 @@
 }
 
 /**
- * gupnp_service_proxy_begin_action_hash:
+ * gupnp_service_proxy_begin_action_hash: (skip)
  * @proxy: A #GUPnPServiceProxy
  * @action: An action
  * @callback: (scope async): The callback to call when sending the action has 
succeeded
@@ -1405,7 +1476,38 @@
 }
 
 /**
- * gupnp_service_proxy_end_action_list:
+ * gupnp_service_proxy_end_action_list_gi: (rename-to 
gupnp_service_proxy_end_action_list)
+ * @proxy: A #GUPnPServiceProxy
+ * @action: A #GUPnPServiceProxyAction handle
+ * @error: The location where to store any error, or %NULL
+ * @out_names: (element-type utf8) (transfer none): #GList of 'out' parameter
+ * names (as strings)
+ * @out_types: (element-type GType) (transfer none): #GList of types (as 
#GType)
+ * that line up with @out_names
+ * @out_values: (element-type GValue) (transfer full) (out): #GList of values
+ * (as #GValue) that line up with @out_names and @out_types.
+ *
+ * A variant of #gupnp_service_proxy_end_action that takes lists of
+ * out-parameter names, types and place-holders for values. The returned list
+ * in @out_values must be freed using #g_list_free and each element in it using
+ * #g_value_unset and #g_slice_free.
+ *
+ * Return value : %TRUE on success.
+ *
+ **/
+gboolean
+gupnp_service_proxy_end_action_list_gi (GUPnPServiceProxy       *proxy,
+                                        GUPnPServiceProxyAction *action,
+                                        GList                   *out_names,
+                                        GList                   *out_types,
+                                        GList                  **out_values,
+                                        GError                 **error)
+{
+    return gupnp_service_proxy_end_action_list (proxy, action, error, 
out_names, out_types, out_values);
+}
+
+/**
+ * gupnp_service_proxy_end_action_list: (skip)
  * @proxy: A #GUPnPServiceProxy
  * @action: A #GUPnPServiceProxyAction handle
  * @error: (allow-none): The location where to store any error, or %NULL
@@ -1422,6 +1524,7 @@
  * #g_value_unset and #g_slice_free.
  *
  * Returns: %TRUE on success.
+ *
  **/
 gboolean
 gupnp_service_proxy_end_action_list (GUPnPServiceProxy       *proxy,
@@ -1446,7 +1549,7 @@
         /* Check for saved error from begin_action() */
         if (action->error) {
                 g_propagate_error (error, action->error);
-                gupnp_service_proxy_action_free (action);
+                gupnp_service_proxy_action_unref (action);
 
                 return FALSE;
         }
@@ -1454,7 +1557,7 @@
         /* Check response for errors and do initial parsing */
         response = check_action_response (proxy, action, &params, error);
         if (response == NULL) {
-                gupnp_service_proxy_action_free (action);
+                gupnp_service_proxy_action_unref (action);
 
                 return FALSE;
         }
@@ -1477,7 +1580,7 @@
         *out_values = out_values_list;
 
         /* Cleanup */
-        gupnp_service_proxy_action_free (action);
+        gupnp_service_proxy_action_unref (action);
 
         xmlFreeDoc (response);
 
@@ -1485,7 +1588,7 @@
 }
 
 /**
- * gupnp_service_proxy_end_action_hash:
+ * gupnp_service_proxy_end_action_hash_gi: (rename-to 
gupnp_service_proxy_end_action_hash)
  * @proxy: A #GUPnPServiceProxy
  * @action: A #GUPnPServiceProxyAction handle
  * @error: The location where to store any error, or %NULL
@@ -1496,6 +1599,29 @@
  * runtime generated parameter lists.
  *
  * Return value: %TRUE on success.
+ *
+ **/
+gboolean
+gupnp_service_proxy_end_action_hash_gi (GUPnPServiceProxy       *proxy,
+                                        GUPnPServiceProxyAction *action,
+                                        GHashTable              *hash,
+                                        GError                 **error)
+{
+    return gupnp_service_proxy_end_action_hash (proxy, action, error, hash);
+}
+
+/**
+ * gupnp_service_proxy_end_action_hash:
+ * @proxy: A #GUPnPServiceProxy
+ * @action: A #GUPnPServiceProxyAction handle
+ * @error: The location where to store any error, or %NULL
+ * @hash: (element-type utf8 GValue) (out caller-allocates) (transfer none): A 
#GHashTable of
+ * out parameter name and initialised #GValue pairs
+ *
+ * See gupnp_service_proxy_end_action(); this version takes a #GHashTable for
+ * runtime generated parameter lists.
+ *
+ * Return value: %TRUE on success.
  **/
 gboolean
 gupnp_service_proxy_end_action_hash (GUPnPServiceProxy       *proxy,
@@ -1513,7 +1639,7 @@
         /* Check for saved error from begin_action() */
         if (action->error) {
                 g_propagate_error (error, action->error);
-                gupnp_service_proxy_action_free (action);
+                gupnp_service_proxy_action_unref (action);
 
                 return FALSE;
         }
@@ -1521,7 +1647,7 @@
         /* Check response for errors and do initial parsing */
         response = check_action_response (proxy, action, &params, error);
         if (response == NULL) {
-                gupnp_service_proxy_action_free (action);
+                gupnp_service_proxy_action_unref (action);
 
                 return FALSE;
         }
@@ -1530,7 +1656,7 @@
         g_hash_table_foreach (hash, (GHFunc) read_out_parameter, params);
 
         /* Cleanup */
-        gupnp_service_proxy_action_free (action);
+        gupnp_service_proxy_action_unref (action);
 
         xmlFreeDoc (response);
 
@@ -1568,7 +1694,7 @@
         if (action->error != NULL)
                 g_error_free (action->error);
 
-        gupnp_service_proxy_action_free (action);
+        gupnp_service_proxy_action_unref (action);
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/libgupnp/gupnp-service-proxy.h 
new/gupnp-0.20.16/libgupnp/gupnp-service-proxy.h
--- old/gupnp-0.20.15/libgupnp/gupnp-service-proxy.h    2015-03-30 
19:49:17.000000000 +0200
+++ new/gupnp-0.20.16/libgupnp/gupnp-service-proxy.h    2016-02-05 
23:02:54.000000000 +0100
@@ -30,6 +30,9 @@
 GType
 gupnp_service_proxy_get_type (void) G_GNUC_CONST;
 
+GType
+gupnp_service_proxy_action_get_type (void) G_GNUC_CONST;
+
 #define GUPNP_TYPE_SERVICE_PROXY \
                 (gupnp_service_proxy_get_type ())
 #define GUPNP_SERVICE_PROXY(obj) \
@@ -140,7 +143,6 @@
                                     GHashTable                     *out_hash) 
G_GNUC_DEPRECATED;
 #endif
 
-
 gboolean
 gupnp_service_proxy_send_action_list (GUPnPServiceProxy *proxy,
                                       const char        *action,
@@ -151,7 +153,15 @@
                                       GList             *out_types,
                                       GList            **out_values);
 
-
+gboolean
+gupnp_service_proxy_send_action_list_gi (GUPnPServiceProxy *proxy,
+                                         const char        *action,
+                                         GList             *in_names,
+                                         GList             *in_values,
+                                         GList             *out_names,
+                                         GList             *out_types,
+                                         GList            **out_values,
+                                         GError           **error);
 GUPnPServiceProxyAction *
 gupnp_service_proxy_begin_action   (GUPnPServiceProxy              *proxy,
                                     const char                     *action,
@@ -209,6 +219,22 @@
                                    GList                  **out_values);
 
 gboolean
+gupnp_service_proxy_end_action_list_gi
+                                  (GUPnPServiceProxy       *proxy,
+                                   GUPnPServiceProxyAction *action,
+                                   GList                   *out_names,
+                                   GList                   *out_types,
+                                   GList                  **out_values,
+                                   GError                  **error);
+
+gboolean
+gupnp_service_proxy_end_action_hash_gi
+                                   (GUPnPServiceProxy              *proxy,
+                                    GUPnPServiceProxyAction        *action,
+                                    GHashTable                     *hash,
+                                    GError                        **error);
+
+gboolean
 gupnp_service_proxy_end_action_hash
                                    (GUPnPServiceProxy              *proxy,
                                     GUPnPServiceProxyAction        *action,
@@ -259,6 +285,7 @@
 gboolean
 gupnp_service_proxy_get_subscribed (GUPnPServiceProxy              *proxy);
 
+
 G_END_DECLS
 
 #endif /* __GUPNP_SERVICE_PROXY_H__ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/tools/gupnp-binding-tool 
new/gupnp-0.20.16/tools/gupnp-binding-tool
--- old/gupnp-0.20.15/tools/gupnp-binding-tool  2015-03-30 19:49:17.000000000 
+0200
+++ new/gupnp-0.20.16/tools/gupnp-binding-tool  2016-02-05 20:56:15.000000000 
+0100
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#! /usr/bin/env python
 
 # Copyright (C) 2008 OpenedHand Ltd
 # Copyright (C) 2008 Intel Corporation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/vala/GUPnP-1.0.metadata 
new/gupnp-0.20.16/vala/GUPnP-1.0.metadata
--- old/gupnp-0.20.15/vala/GUPnP-1.0.metadata   2015-08-01 13:34:17.000000000 
+0200
+++ new/gupnp-0.20.16/vala/GUPnP-1.0.metadata   2016-02-05 23:02:54.000000000 
+0100
@@ -30,9 +30,12 @@
     .add_notify skip=false
     .begin_action skip=false
     .end_action_hash skip
+    .end_action_hash_gi skip
     .end_action_list skip
+    .end_action_list_gi skip
     .send_action_hash skip
     .send_action_list skip
+    .send_action_list_gi skip
 WhiteList
     .entries skip
 ControlError skip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/vala/Makefile.am 
new/gupnp-0.20.16/vala/Makefile.am
--- old/gupnp-0.20.15/vala/Makefile.am  2015-03-30 19:49:17.000000000 +0200
+++ new/gupnp-0.20.16/vala/Makefile.am  2016-02-05 23:09:52.000000000 +0100
@@ -16,6 +16,6 @@
 vapidir = $(datadir)/vala/vapi
 vapi_DATA = gupnp-1.0.vapi $(srcdir)/gupnp-1.0.deps
 CLEANFILES = gupnp-1.0.vapi gupnp-1.0.stamp
-EXTRA_DIST = gupnp-1.0.deps GUPnP-1.0.metadata gupnp-1.0-custom.vala
+EXTRA_DIST = gupnp-1.0.deps GUPnP-1.0.metadata gupnp-1.0-custom.vala 
gupnp-1.0.vapi gupnp-1.0.stamp
 endif
 endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/vala/Makefile.in 
new/gupnp-0.20.16/vala/Makefile.in
--- old/gupnp-0.20.15/vala/Makefile.in  2015-12-31 11:38:35.000000000 +0100
+++ new/gupnp-0.20.16/vala/Makefile.in  2016-02-08 23:10:15.000000000 +0100
@@ -324,7 +324,7 @@
 @HAVE_INTROSPECTION_TRUE@@HAVE_VAPIGEN_TRUE@vapidir = $(datadir)/vala/vapi
 @HAVE_INTROSPECTION_TRUE@@HAVE_VAPIGEN_TRUE@vapi_DATA = gupnp-1.0.vapi 
$(srcdir)/gupnp-1.0.deps
 @HAVE_INTROSPECTION_TRUE@@HAVE_VAPIGEN_TRUE@CLEANFILES = gupnp-1.0.vapi 
gupnp-1.0.stamp
-@HAVE_INTROSPECTION_TRUE@@HAVE_VAPIGEN_TRUE@EXTRA_DIST = gupnp-1.0.deps 
GUPnP-1.0.metadata gupnp-1.0-custom.vala
+@HAVE_INTROSPECTION_TRUE@@HAVE_VAPIGEN_TRUE@EXTRA_DIST = gupnp-1.0.deps 
GUPnP-1.0.metadata gupnp-1.0-custom.vala gupnp-1.0.vapi gupnp-1.0.stamp
 all: all-am
 
 .SUFFIXES:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/vala/gupnp-1.0.stamp 
new/gupnp-0.20.16/vala/gupnp-1.0.stamp
--- old/gupnp-0.20.15/vala/gupnp-1.0.stamp      1970-01-01 01:00:00.000000000 
+0100
+++ new/gupnp-0.20.16/vala/gupnp-1.0.stamp      2016-02-08 23:11:08.000000000 
+0100
@@ -0,0 +1 @@
+timestmap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gupnp-0.20.15/vala/gupnp-1.0.vapi 
new/gupnp-0.20.16/vala/gupnp-1.0.vapi
--- old/gupnp-0.20.15/vala/gupnp-1.0.vapi       1970-01-01 01:00:00.000000000 
+0100
+++ new/gupnp-0.20.16/vala/gupnp-1.0.vapi       2016-02-08 23:11:08.000000000 
+0100
@@ -0,0 +1,411 @@
+/* gupnp-1.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "GUPnP", gir_namespace = "GUPnP", gir_version = "1.0", 
lower_case_cprefix = "gupnp_")]
+namespace GUPnP {
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = 
"gupnp_bin_base64_get_type ()")]
+       [Compact]
+       public class BinBase64 {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = 
"gupnp_bin_hex_get_type ()")]
+       [Compact]
+       public class BinHex {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_context_get_type ()")]
+       public class Context : GSSDP.Client, GLib.Initable {
+               [CCode (has_construct_function = false)]
+               public Context (GLib.MainContext? main_context, string? iface, 
uint port) throws GLib.Error;
+               [Version (since = "0.20.11")]
+               public void add_server_handler (bool use_acl, string path, 
owned Soup.ServerCallback callback);
+               [Version (since = "0.20.11")]
+               public unowned GUPnP.Acl get_acl ();
+               [Version (since = "0.17.0")]
+               public unowned string get_default_language ();
+               [Version (deprecated = true, deprecated_since = "0.12.7")]
+               public unowned string get_host_ip ();
+               public uint get_port ();
+               public unowned Soup.Server get_server ();
+               [Version (since = "0.12.3")]
+               public unowned Soup.Session get_session ();
+               public uint get_subscription_timeout ();
+               public void host_path (string local_path, string server_path);
+               [Version (since = "0.13.3")]
+               public bool host_path_for_agent (string local_path, string 
server_path, GLib.Regex user_agent);
+               [Version (since = "0.20.11")]
+               public void remove_server_handler (string path);
+               [Version (since = "0.20.11")]
+               public void set_acl (GUPnP.Acl? acl);
+               [Version (since = "0.17.0")]
+               public void set_default_language (string language);
+               public void set_subscription_timeout (uint timeout);
+               public void unhost_path (string server_path);
+               [Version (since = "0.20.11")]
+               public GUPnP.Acl acl { get; set construct; }
+               [Version (since = "0.17.0")]
+               public string default_language { get; set construct; }
+               public uint port { get; construct; }
+               public Soup.Server server { get; }
+               public Soup.Session session { get; }
+               public uint subscription_timeout { get; construct; }
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_context_manager_get_type ()")]
+       public abstract class ContextManager : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected ContextManager ();
+               [Version (since = "0.17.2")]
+               public static GUPnP.ContextManager create (uint port);
+               [Version (since = "0.19.1")]
+               public uint get_port ();
+               public unowned GUPnP.WhiteList get_white_list ();
+               [Version (since = "0.13.0")]
+               public void manage_control_point (GUPnP.ControlPoint 
control_point);
+               [Version (since = "0.13.0")]
+               public void manage_root_device (GUPnP.RootDevice root_device);
+               [Version (since = "0.20.3")]
+               public void rescan_control_points ();
+               public uint port { get; construct; }
+               public GUPnP.WhiteList white_list { get; }
+               public signal void context_available (GUPnP.Context context);
+               public signal void context_unavailable (GUPnP.Context context);
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_control_point_get_type ()")]
+       public class ControlPoint : GSSDP.ResourceBrowser {
+               [CCode (has_construct_function = false)]
+               public ControlPoint (GUPnP.Context context, string target);
+               [CCode (has_construct_function = false)]
+               public ControlPoint.full (GUPnP.Context context, 
GUPnP.ResourceFactory factory, string target);
+               public unowned GUPnP.Context get_context ();
+               public unowned GUPnP.ResourceFactory get_resource_factory ();
+               public unowned GLib.List<GUPnP.DeviceProxy> list_device_proxies 
();
+               public unowned GLib.List<GUPnP.ServiceProxy> 
list_service_proxies ();
+               public GUPnP.ResourceFactory resource_factory { get; construct; 
}
+               public virtual signal void device_proxy_available 
(GUPnP.DeviceProxy proxy);
+               public virtual signal void device_proxy_unavailable 
(GUPnP.DeviceProxy proxy);
+               public virtual signal void service_proxy_available 
(GUPnP.ServiceProxy proxy);
+               public virtual signal void service_proxy_unavailable 
(GUPnP.ServiceProxy proxy);
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = "gupnp_date_get_type 
()")]
+       [Compact]
+       public class Date {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = 
"gupnp_date_time_get_type ()")]
+       [Compact]
+       public class DateTime {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = 
"gupnp_date_time_tz_get_type ()")]
+       [Compact]
+       public class DateTimeTZ {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_device_get_type ()")]
+       public class Device : GUPnP.DeviceInfo {
+               [CCode (has_construct_function = false)]
+               protected Device ();
+               [NoAccessorMethod]
+               public GUPnP.RootDevice root_device { owned get; construct; }
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_device_info_get_type ()")]
+       public abstract class DeviceInfo : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected DeviceInfo ();
+               public unowned GUPnP.Context get_context ();
+               [Version (since = "0.13.0")]
+               public string get_description_value (string element);
+               public GUPnP.DeviceInfo? get_device (string type);
+               public unowned string get_device_type ();
+               public string get_friendly_name ();
+               public string get_icon_url (string? requested_mime_type, int 
requested_depth, int requested_width, int requested_height, bool prefer_bigger, 
out string mime_type, out int depth, out int width, out int height);
+               public unowned string get_location ();
+               public string get_manufacturer ();
+               public string get_manufacturer_url ();
+               public string get_model_description ();
+               public string get_model_name ();
+               public string get_model_number ();
+               public string get_model_url ();
+               public string get_presentation_url ();
+               public unowned GUPnP.ResourceFactory get_resource_factory ();
+               public string get_serial_number ();
+               public GUPnP.ServiceInfo? get_service (string type);
+               public unowned string get_udn ();
+               public string get_upc ();
+               public unowned Soup.URI get_url_base ();
+               public GLib.List<string> list_device_types ();
+               public GLib.List<GUPnP.DeviceInfo> list_devices ();
+               [Version (since = "0.13.0")]
+               public GLib.List<string> list_dlna_capabilities ();
+               [Version (since = "0.20.4")]
+               public GLib.List<string> list_dlna_device_class_identifier ();
+               public GLib.List<string> list_service_types ();
+               public GLib.List<GUPnP.ServiceInfo> list_services ();
+               public GUPnP.Context context { get; construct; }
+               public string device_type { get; construct; }
+               public string location { get; construct; }
+               public GUPnP.ResourceFactory resource_factory { get; construct; 
}
+               public string udn { get; construct; }
+               public Soup.URI url_base { get; construct; }
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_device_proxy_get_type ()")]
+       public class DeviceProxy : GUPnP.DeviceInfo {
+               [CCode (has_construct_function = false)]
+               protected DeviceProxy ();
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_resource_factory_get_type ()")]
+       public class ResourceFactory : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public ResourceFactory ();
+               public static unowned GUPnP.ResourceFactory get_default ();
+               public void register_resource_proxy_type (string upnp_type, 
GLib.Type type);
+               public void register_resource_type (string upnp_type, GLib.Type 
type);
+               public bool unregister_resource_proxy_type (string upnp_type);
+               public bool unregister_resource_type (string upnp_type);
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_root_device_get_type ()")]
+       public class RootDevice : GUPnP.Device {
+               [CCode (has_construct_function = false)]
+               public RootDevice (GUPnP.Context context, string 
description_path, string description_dir);
+               [CCode (has_construct_function = false)]
+               public RootDevice.full (GUPnP.Context context, 
GUPnP.ResourceFactory factory, GUPnP.XMLDoc description_doc, string 
description_path, string description_dir);
+               public bool get_available ();
+               public unowned string get_description_dir ();
+               public unowned string get_description_path ();
+               public unowned string get_relative_location ();
+               [Version (since = "0.19.2")]
+               public unowned GSSDP.ResourceGroup get_ssdp_resource_group ();
+               public void set_available (bool available);
+               public bool available { get; set; }
+               public string description_dir { get; construct; }
+               [Version (since = "0.13.0")]
+               public GUPnP.XMLDoc description_doc { construct; }
+               [Version (since = "0.13.0")]
+               public string description_path { get; construct; }
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_service_get_type ()")]
+       public class Service : GUPnP.ServiceInfo {
+               [CCode (has_construct_function = false)]
+               protected Service ();
+               public void freeze_notify ();
+               public void notify (...);
+               public void notify_value (string variable, GLib.Value value);
+               public void thaw_notify ();
+               [NoAccessorMethod]
+               public GUPnP.RootDevice root_device { owned get; construct; }
+               public virtual signal void action_invoked (GUPnP.ServiceAction 
action);
+               public signal void notify_failed (GLib.List<Soup.URI> 
callback_url, GLib.Error reason);
+               public virtual signal void query_variable (string variable, ref 
GLib.Value value);
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = 
"gupnp_service_action_get_type ()")]
+       [Compact]
+       public class ServiceAction {
+               public void @get (...);
+               [Version (since = "0.17.0")]
+               public uint get_argument_count ();
+               [Version (since = "0.13.3")]
+               public GLib.Value? get_gvalue (string argument, GLib.Type type);
+               public GLib.List<string> get_locales ();
+               [Version (since = "0.13.0")]
+               public Soup.Message get_message ();
+               public unowned string get_name ();
+               public void get_value (string argument, ref GLib.Value value);
+               [Version (since = "0.13.3")]
+               public GLib.List<GLib.Value?> get_values (GLib.List<string> 
arg_names, GLib.List<GLib.Type?> arg_types);
+               public void @return ();
+               public void return_error (uint error_code, string 
error_description);
+               public void @set (...);
+               public void set_value (string argument, GLib.Value value);
+               [Version (since = "0.13.3")]
+               public void set_values (GLib.List<string> arg_names, 
GLib.List<GLib.Value?> arg_values);
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_service_info_get_type ()")]
+       public abstract class ServiceInfo : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected ServiceInfo ();
+               public unowned GUPnP.Context get_context ();
+               public string get_control_url ();
+               public string get_event_subscription_url ();
+               public string get_id ();
+               [Version (deprecated = true, deprecated_since = "0.20.15.")]
+               public GUPnP.ServiceIntrospection? get_introspection () throws 
GLib.Error;
+               public void get_introspection_async ([CCode (scope = "async")] 
GUPnP.ServiceIntrospectionCallback callback);
+               [Version (since = "0.20.9.")]
+               public void get_introspection_async_full ([CCode 
(delegate_target_pos = 2.1, scope = "async")] 
GUPnP.ServiceIntrospectionCallback callback, GLib.Cancellable? cancellable);
+               public unowned string get_location ();
+               public string get_scpd_url ();
+               public unowned string get_service_type ();
+               public unowned string get_udn ();
+               public unowned Soup.URI get_url_base ();
+               public GUPnP.Context context { get; construct; }
+               public string location { get; construct; }
+               public string service_type { get; construct; }
+               public string udn { get; construct; }
+               public Soup.URI url_base { get; construct; }
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_service_introspection_get_type ()")]
+       public class ServiceIntrospection : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected ServiceIntrospection ();
+               public unowned GUPnP.ServiceActionInfo? get_action (string 
action_name);
+               public unowned GUPnP.ServiceStateVariableInfo? 
get_state_variable (string variable_name);
+               public unowned GLib.List<string> list_action_names ();
+               public unowned GLib.List<GUPnP.ServiceActionInfo> list_actions 
();
+               public unowned GLib.List<string> list_state_variable_names ();
+               public unowned GLib.List<GUPnP.ServiceStateVariableInfo> 
list_state_variables ();
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h")]
+       public class ServiceProxy : GUPnP.ServiceInfo {
+               [CCode (has_construct_function = false)]
+               protected ServiceProxy ();
+               public bool add_notify (string variable, GLib.Type type, [CCode 
(scope = "async")] GUPnP.ServiceProxyNotifyCallback callback);
+               [Version (since = "0.20.12")]
+               public bool add_notify_full (string variable, GLib.Type type, 
owned GUPnP.ServiceProxyNotifyCallback callback);
+               [Version (since = "0.20.12")]
+               public bool add_raw_notify (owned 
GUPnP.ServiceProxyNotifyCallback callback);
+               public unowned GUPnP.ServiceProxyAction begin_action (string 
action, [CCode (delegate_target_pos = 2.5, scope = "async")] 
GUPnP.ServiceProxyActionCallback callback, ...);
+               [Version (since = "0.13.3")]
+               public unowned GUPnP.ServiceProxyAction begin_action_list 
(string action, GLib.List<string> in_names, GLib.List<GLib.Value?> in_values, 
[CCode (scope = "async")] GUPnP.ServiceProxyActionCallback callback);
+               public void cancel_action (GUPnP.ServiceProxyAction action);
+               public bool end_action (GUPnP.ServiceProxyAction action, ...) 
throws GLib.Error;
+               public bool end_action_hash (GUPnP.ServiceProxyAction action, 
[CCode (pos = -0.9)] GLib.HashTable<string,weak GLib.Value*> hash) throws 
GLib.Error;
+               public bool end_action_list (GUPnP.ServiceProxyAction action, 
[CCode (pos = -0.9)] GLib.List<string> out_names, [CCode (pos = -0.8)] 
GLib.List<GLib.Type?> out_types, [CCode (pos = -0.7)] out GLib.List<weak 
GLib.Value*> out_values) throws GLib.Error;
+               public bool get_subscribed ();
+               public bool remove_notify (string variable, 
GUPnP.ServiceProxyNotifyCallback callback);
+               public bool remove_raw_notify (GUPnP.ServiceProxyNotifyCallback 
callback);
+               public bool send_action (string action, ...) throws GLib.Error;
+               public bool send_action_hash (string action, [CCode (pos = 
-0.9)] GLib.HashTable<string,GLib.Value?> in_hash, [CCode (pos = -0.8)] 
GLib.HashTable<string,weak GLib.Value*> out_hash) throws GLib.Error;
+               public bool send_action_list (string action, [CCode (pos = 
-0.9)] GLib.List<string> in_names, [CCode (pos = -0.8)] GLib.List<weak 
GLib.Value?> in_values, [CCode (pos = -0.7)] GLib.List<string> out_names, 
[CCode (pos = -0.6)] GLib.List<GLib.Type?> out_types, [CCode (pos = -0.5)] out 
GLib.List<weak GLib.Value*> out_values) throws GLib.Error;
+               public void set_subscribed (bool subscribed);
+               public bool subscribed { get; set; }
+               public virtual signal void subscription_lost (GLib.Error 
reason);
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = 
"gupnp_service_proxy_action_get_type ()")]
+       [Compact]
+       public class ServiceProxyAction {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = "gupnp_time_get_type 
()")]
+       [Compact]
+       public class Time {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = 
"gupnp_time_tz_get_type ()")]
+       [Compact]
+       public class TimeTZ {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = "gupnp_uri_get_type 
()")]
+       [Compact]
+       public class URI {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", copy_function = 
"g_boxed_copy", free_function = "g_boxed_free", type_id = "gupnp_uuid_get_type 
()")]
+       [Compact]
+       public class UUID {
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_white_list_get_type ()")]
+       public class WhiteList : GLib.Object {
+               [CCode (has_construct_function = false)]
+               [Version (since = "0.20.5")]
+               public WhiteList ();
+               [Version (since = "0.20.5")]
+               public bool add_entry (string entry);
+               [Version (since = "0.20.8")]
+               public void add_entryv ([CCode (array_length = false, 
array_null_terminated = true)] string[] entries);
+               [Version (since = "0.20.5")]
+               public bool check_context (GUPnP.Context context);
+               [Version (since = "0.20.5")]
+               public void clear ();
+               [Version (since = "0.20.5")]
+               public bool get_enabled ();
+               [Version (since = "0.20.5")]
+               public unowned GLib.List<string> get_entries ();
+               [Version (since = "0.20.5")]
+               public bool is_empty ();
+               [Version (since = "0.20.5")]
+               public bool remove_entry (string entry);
+               [Version (since = "0.20.5")]
+               public void set_enabled (bool enable);
+               [Version (since = "0.20.5")]
+               public bool enabled { get; set construct; }
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_id = 
"gupnp_xml_doc_get_type ()")]
+       public class XMLDoc : GLib.Object {
+               public weak Xml.Doc doc;
+               [CCode (has_construct_function = false)]
+               [Version (since = "0.13.0")]
+               public XMLDoc (Xml.Doc xml_doc);
+               [CCode (has_construct_function = false)]
+               [Version (since = "0.13.0")]
+               public XMLDoc.from_path (string path) throws GLib.Error;
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", type_cname = 
"GUPnPAclInterface")]
+       public interface Acl : GLib.Object {
+               [Version (since = "0.20.11")]
+               public abstract bool can_sync ();
+               public abstract bool is_allowed (GUPnP.Device? device, 
GUPnP.Service? service, string path, string address, string? agent);
+               public abstract async bool is_allowed_async (GUPnP.Device? 
device, GUPnP.Service? service, string path, string address, string? agent, 
GLib.Cancellable? cancellable) throws GLib.Error;
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", has_type_id = false)]
+       public struct ServiceActionArgInfo {
+               public weak string name;
+               public GUPnP.ServiceActionArgDirection direction;
+               public weak string related_state_variable;
+               public bool retval;
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", has_type_id = false)]
+       public struct ServiceActionInfo {
+               public weak string name;
+               public weak GLib.List<GUPnP.ServiceActionArgInfo> arguments;
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", has_type_id = false)]
+       public struct ServiceStateVariableInfo {
+               public weak string name;
+               public bool send_events;
+               public bool is_numeric;
+               public GLib.Type type;
+               public GLib.Value default_value;
+               public GLib.Value minimum;
+               public GLib.Value maximum;
+               public GLib.Value step;
+               public weak GLib.List<string> allowed_values;
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", cprefix = 
"GUPNP_SERVICE_ACTION_ARG_DIRECTION_", has_type_id = false)]
+       public enum ServiceActionArgDirection {
+               IN,
+               OUT
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", cprefix = 
"GUPNP_CONTROL_ERROR_")]
+       public errordomain ControlError {
+               INVALID_ACTION,
+               INVALID_ARGS,
+               OUT_OF_SYNC,
+               ACTION_FAILED;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", cprefix = 
"GUPNP_EVENTING_ERROR_")]
+       public errordomain EventingError {
+               SUBSCRIPTION_FAILED,
+               SUBSCRIPTION_LOST,
+               NOTIFY_FAILED;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", cprefix = 
"GUPNP_SERVER_ERROR_")]
+       public errordomain ServerError {
+               INTERNAL_SERVER_ERROR,
+               NOT_FOUND,
+               NOT_IMPLEMENTED,
+               INVALID_RESPONSE,
+               INVALID_URL,
+               OTHER;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", cprefix = 
"GUPNP_XML_ERROR_")]
+       public errordomain XMLError {
+               PARSE,
+               NO_NODE,
+               EMPTY_NODE,
+               INVALID_ATTRIBUTE,
+               OTHER;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "libgupnp/gupnp.h", instance_pos = 3.9)]
+       public delegate void ServiceIntrospectionCallback (GUPnP.ServiceInfo 
info, GUPnP.ServiceIntrospection introspection, GLib.Error error);
+       [CCode (cheader_filename = "libgupnp/gupnp.h", instance_pos = 2.9)]
+       public delegate void ServiceProxyActionCallback (GUPnP.ServiceProxy 
proxy, GUPnP.ServiceProxyAction action);
+       [CCode (cheader_filename = "libgupnp/gupnp.h", instance_pos = 3.9)]
+       public delegate void ServiceProxyNotifyCallback (GUPnP.ServiceProxy 
proxy, string variable, GLib.Value value);
+       [CCode (cheader_filename = "libgupnp/gupnp.h")]
+       public static string get_uuid ();
+}


Reply via email to