summaryrefslogtreecommitdiffstats
path: root/sample/mediaplayer/binding
diff options
context:
space:
mode:
authorKazumasa Mitsunari <kazumasa_mitsunari_za@mail.toyota.co.jp>2017-08-29 20:58:47 +0900
committerKazumasa Mitsunari <kazumasa_mitsunari_za@mail.toyota.co.jp>2017-08-29 20:58:47 +0900
commit2e602801b372b0b68111316b89f567213e3ea378 (patch)
treec7d53d765baba6d1cf2435eb51d913fd6abe6c11 /sample/mediaplayer/binding
parentf743c3428f41b8d127e538ea8a6505a0c882cdb2 (diff)
Add sound manager initial source code
First version 2017/08/29 SoundManager consists of main 4 parts 1. doc Document of sound manager and audio manager architecture This describes application sequence Please open ApplicationGuide.md with browser 2. include Contains API of libsoundmanager LibSoundmanager API is going to be modified, so please don't use for now Update will be done in near future 3. soundmanager_binding Contains soundmanager binding. This is the service midleware If installing this, soundmanager is automatically launched by AppFW(systemd) 4. sample Contains sample applications. These applications follow the AudioManager sequence and using soundmanager binding Change-Id: I75b6c5c652e1dc00b39bc499a2ee6bf1e2aeaf6d Signed-off-by: Kazumasa Mitsunari <kazumasa_mitsunari_za@mail.toyota.co.jp>
Diffstat (limited to 'sample/mediaplayer/binding')
-rw-r--r--sample/mediaplayer/binding/binding.pri6
-rw-r--r--sample/mediaplayer/binding/binding.pro16
-rw-r--r--sample/mediaplayer/binding/export.map1
-rw-r--r--sample/mediaplayer/binding/gdbus/api/org.lightmediascanner.xml75
-rwxr-xr-xsample/mediaplayer/binding/gdbus/generate_interfaces.sh9
-rw-r--r--sample/mediaplayer/binding/gdbus/lightmediascanner_interface.c5755
-rw-r--r--sample/mediaplayer/binding/gdbus/lightmediascanner_interface.h896
-rw-r--r--sample/mediaplayer/binding/mediaplayer-api.c173
-rw-r--r--sample/mediaplayer/binding/mediaplayer-manager.c294
-rw-r--r--sample/mediaplayer/binding/mediaplayer-manager.h103
10 files changed, 7328 insertions, 0 deletions
diff --git a/sample/mediaplayer/binding/binding.pri b/sample/mediaplayer/binding/binding.pri
new file mode 100644
index 0000000..3448a56
--- /dev/null
+++ b/sample/mediaplayer/binding/binding.pri
@@ -0,0 +1,6 @@
+TEMPLATE = lib
+CONFIG += plugin use_c_linker
+CONFIG -= qt
+QMAKE_CFLAGS += -Wextra -Wconversion -Wno-unused-parameter -Werror=maybe-uninitialized -Werror=implicit-function-declaration -ffunction-sections -fdata-sections -Wl,--as-needed -Wl,--gc-sections
+
+DESTDIR = $${OUT_PWD}/../package/root/lib
diff --git a/sample/mediaplayer/binding/binding.pro b/sample/mediaplayer/binding/binding.pro
new file mode 100644
index 0000000..8a3ef73
--- /dev/null
+++ b/sample/mediaplayer/binding/binding.pro
@@ -0,0 +1,16 @@
+TARGET = mediaplayer-binding
+
+HEADERS = mediaplayer-manager.h \
+ gdbus/lightmediascanner_interface.h
+
+SOURCES = mediaplayer-api.c \
+ mediaplayer-manager.c \
+ gdbus/lightmediascanner_interface.c
+
+LIBS += -Wl,--version-script=$$PWD/export.map
+
+CONFIG += link_pkgconfig
+INCLUDEPATH += $$PWD/gdbus
+PKGCONFIG += json-c afb-daemon sqlite3 glib-2.0 gio-2.0 gio-unix-2.0 zlib
+
+include(binding.pri)
diff --git a/sample/mediaplayer/binding/export.map b/sample/mediaplayer/binding/export.map
new file mode 100644
index 0000000..eea0d7b
--- /dev/null
+++ b/sample/mediaplayer/binding/export.map
@@ -0,0 +1 @@
+{ global: afbBindingV2*; local: *; };
diff --git a/sample/mediaplayer/binding/gdbus/api/org.lightmediascanner.xml b/sample/mediaplayer/binding/gdbus/api/org.lightmediascanner.xml
new file mode 100644
index 0000000..1651b47
--- /dev/null
+++ b/sample/mediaplayer/binding/gdbus/api/org.lightmediascanner.xml
@@ -0,0 +1,75 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<!-- GDBus 2.48.2 -->
+<node>
+ <interface name="org.freedesktop.DBus.Properties">
+ <method name="Get">
+ <arg type="s" name="interface_name" direction="in"/>
+ <arg type="s" name="property_name" direction="in"/>
+ <arg type="v" name="value" direction="out"/>
+ </method>
+ <method name="GetAll">
+ <arg type="s" name="interface_name" direction="in"/>
+ <arg type="a{sv}" name="properties" direction="out"/>
+ </method>
+ <method name="Set">
+ <arg type="s" name="interface_name" direction="in"/>
+ <arg type="s" name="property_name" direction="in"/>
+ <arg type="v" name="value" direction="in"/>
+ </method>
+ <signal name="PropertiesChanged">
+ <arg type="s" name="interface_name"/>
+ <arg type="a{sv}" name="changed_properties"/>
+ <arg type="as" name="invalidated_properties"/>
+ </signal>
+ </interface>
+ <interface name="org.freedesktop.DBus.Introspectable">
+ <method name="Introspect">
+ <arg type="s" name="xml_data" direction="out"/>
+ </method>
+ </interface>
+ <interface name="org.freedesktop.DBus.Peer">
+ <method name="Ping"/>
+ <method name="GetMachineId">
+ <arg type="s" name="machine_uuid" direction="out"/>
+ </method>
+ </interface>
+ <interface name="org.lightmediascanner.Scanner1">
+ <method name="Scan">
+ <arg type="a{sv}" name="specification" direction="in">
+ </arg>
+ </method>
+ <method name="Stop">
+ </method>
+ <method name="RequestWriteLock">
+ </method>
+ <method name="ReleaseWriteLock">
+ </method>
+ <signal name="ScanProgress">
+ <arg type="s" name="Category">
+ </arg>
+ <arg type="s" name="Path">
+ </arg>
+ <arg type="t" name="UpToDate">
+ </arg>
+ <arg type="t" name="Processed">
+ </arg>
+ <arg type="t" name="Deleted">
+ </arg>
+ <arg type="t" name="Skipped">
+ </arg>
+ <arg type="t" name="Errors">
+ </arg>
+ </signal>
+ <property type="s" name="DataBasePath" access="read">
+ </property>
+ <property type="b" name="IsScanning" access="read">
+ </property>
+ <property type="b" name="WriteLocked" access="read">
+ </property>
+ <property type="t" name="UpdateID" access="read">
+ </property>
+ <property type="a{sv}" name="Categories" access="read">
+ </property>
+ </interface>
+</node>
diff --git a/sample/mediaplayer/binding/gdbus/generate_interfaces.sh b/sample/mediaplayer/binding/gdbus/generate_interfaces.sh
new file mode 100755
index 0000000..f5cbc66
--- /dev/null
+++ b/sample/mediaplayer/binding/gdbus/generate_interfaces.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+CG=gdbus-codegen
+API=api
+
+$CG \
+ --interface-prefix org.lightmediascanner. \
+ --generate-c-code lightmediascanner_interface \
+ $API/org.lightmediascanner.xml
diff --git a/sample/mediaplayer/binding/gdbus/lightmediascanner_interface.c b/sample/mediaplayer/binding/gdbus/lightmediascanner_interface.c
new file mode 100644
index 0000000..6269a7d
--- /dev/null
+++ b/sample/mediaplayer/binding/gdbus/lightmediascanner_interface.c
@@ -0,0 +1,5755 @@
+/*
+ * Generated by gdbus-codegen 2.52.0. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "lightmediascanner_interface.h"
+
+#include <string.h>
+#ifdef G_OS_UNIX
+# include <gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+ GDBusArgInfo parent_struct;
+ gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+ GDBusMethodInfo parent_struct;
+ const gchar *signal_name;
+ gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+ GDBusSignalInfo parent_struct;
+ const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+ GDBusPropertyInfo parent_struct;
+ const gchar *hyphen_name;
+ gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+ GDBusInterfaceInfo parent_struct;
+ const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+ const _ExtendedGDBusPropertyInfo *info;
+ guint prop_id;
+ GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+ g_value_unset (&data->orig_value);
+ g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+ gboolean ret = FALSE;
+ guint n;
+ if (a == NULL && b == NULL)
+ {
+ ret = TRUE;
+ goto out;
+ }
+ if (a == NULL || b == NULL)
+ goto out;
+ if (g_strv_length (a) != g_strv_length (b))
+ goto out;
+ for (n = 0; a[n] != NULL; n++)
+ if (g_strcmp0 (a[n], b[n]) != 0)
+ goto out;
+ ret = TRUE;
+out:
+ return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+ gboolean ret = FALSE;
+ if (a == NULL && b == NULL)
+ {
+ ret = TRUE;
+ goto out;
+ }
+ if (a == NULL || b == NULL)
+ goto out;
+ ret = g_variant_equal (a, b);
+out:
+ return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+ gboolean ret = FALSE;
+ g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+ switch (G_VALUE_TYPE (a))
+ {
+ case G_TYPE_BOOLEAN:
+ ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+ break;
+ case G_TYPE_UCHAR:
+ ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+ break;
+ case G_TYPE_INT:
+ ret = (g_value_get_int (a) == g_value_get_int (b));
+ break;
+ case G_TYPE_UINT:
+ ret = (g_value_get_uint (a) == g_value_get_uint (b));
+ break;
+ case G_TYPE_INT64:
+ ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+ break;
+ case G_TYPE_UINT64:
+ ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+ break;
+ case G_TYPE_DOUBLE:
+ {
+ /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+ gdouble da = g_value_get_double (a);
+ gdouble db = g_value_get_double (b);
+ ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+ }
+ break;
+ case G_TYPE_STRING:
+ ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+ break;
+ case G_TYPE_VARIANT:
+ ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+ break;
+ default:
+ if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+ ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+ else
+ g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+ break;
+ }
+ return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.freedesktop.DBus.Properties
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgFreedesktopDBusProperties
+ * @title: OrgFreedesktopDBusProperties
+ * @short_description: Generated C code for the org.freedesktop.DBus.Properties D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-DBus-Properties.top_of_page">org.freedesktop.DBus.Properties</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.freedesktop.DBus.Properties ---- */
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_IN_ARG_interface_name =
+{
+ {
+ -1,
+ (gchar *) "interface_name",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_IN_ARG_property_name =
+{
+ {
+ -1,
+ (gchar *) "property_name",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_IN_ARG_pointers[] =
+{
+ &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_interface_name,
+ &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_property_name,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_OUT_ARG_value =
+{
+ {
+ -1,
+ (gchar *) "value",
+ (gchar *) "v",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_OUT_ARG_pointers[] =
+{
+ &_org_freedesktop_dbus_properties_method_info_get_OUT_ARG_value,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_get =
+{
+ {
+ -1,
+ (gchar *) "Get",
+ (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_IN_ARG_pointers,
+ (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-get",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_interface_name =
+{
+ {
+ -1,
+ (gchar *) "interface_name",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_pointers[] =
+{
+ &_org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_interface_name,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_properties =
+{
+ {
+ -1,
+ (gchar *) "properties",
+ (gchar *) "a{sv}",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_pointers[] =
+{
+ &_org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_properties,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_get_all =
+{
+ {
+ -1,
+ (gchar *) "GetAll",
+ (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_all_IN_ARG_pointers,
+ (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_get_all_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-get-all",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_interface_name =
+{
+ {
+ -1,
+ (gchar *) "interface_name",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_property_name =
+{
+ {
+ -1,
+ (gchar *) "property_name",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_method_info_set_IN_ARG_value =
+{
+ {
+ -1,
+ (gchar *) "value",
+ (gchar *) "v",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_method_info_set_IN_ARG_pointers[] =
+{
+ &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_interface_name,
+ &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_property_name,
+ &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_value,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_properties_method_info_set =
+{
+ {
+ -1,
+ (gchar *) "Set",
+ (GDBusArgInfo **) &_org_freedesktop_dbus_properties_method_info_set_IN_ARG_pointers,
+ NULL,
+ NULL
+ },
+ "handle-set",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_properties_method_info_pointers[] =
+{
+ &_org_freedesktop_dbus_properties_method_info_get,
+ &_org_freedesktop_dbus_properties_method_info_get_all,
+ &_org_freedesktop_dbus_properties_method_info_set,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_interface_name =
+{
+ {
+ -1,
+ (gchar *) "interface_name",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_changed_properties =
+{
+ {
+ -1,
+ (gchar *) "changed_properties",
+ (gchar *) "a{sv}",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_invalidated_properties =
+{
+ {
+ -1,
+ (gchar *) "invalidated_properties",
+ (gchar *) "as",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_pointers[] =
+{
+ &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_interface_name,
+ &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_changed_properties,
+ &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_invalidated_properties,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _org_freedesktop_dbus_properties_signal_info_properties_changed =
+{
+ {
+ -1,
+ (gchar *) "PropertiesChanged",
+ (GDBusArgInfo **) &_org_freedesktop_dbus_properties_signal_info_properties_changed_ARG_pointers,
+ NULL
+ },
+ "properties-changed"
+};
+
+static const _ExtendedGDBusSignalInfo * const _org_freedesktop_dbus_properties_signal_info_pointers[] =
+{
+ &_org_freedesktop_dbus_properties_signal_info_properties_changed,
+ NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_properties_interface_info =
+{
+ {
+ -1,
+ (gchar *) "org.freedesktop.DBus.Properties",
+ (GDBusMethodInfo **) &_org_freedesktop_dbus_properties_method_info_pointers,
+ (GDBusSignalInfo **) &_org_freedesktop_dbus_properties_signal_info_pointers,
+ NULL,
+ NULL
+ },
+ "org-freedesktop-dbus-properties",
+};
+
+
+/**
+ * org_freedesktop_dbus_properties_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-DBus-Properties.top_of_page">org.freedesktop.DBus.Properties</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_freedesktop_dbus_properties_interface_info (void)
+{
+ return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct;
+}
+
+/**
+ * org_freedesktop_dbus_properties_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OrgFreedesktopDBusProperties interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_freedesktop_dbus_properties_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+ return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgFreedesktopDBusProperties:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Properties.top_of_page">org.freedesktop.DBus.Properties</link>.
+ */
+
+/**
+ * OrgFreedesktopDBusPropertiesIface:
+ * @parent_iface: The parent interface.
+ * @handle_get: Handler for the #OrgFreedesktopDBusProperties::handle-get signal.
+ * @handle_get_all: Handler for the #OrgFreedesktopDBusProperties::handle-get-all signal.
+ * @handle_set: Handler for the #OrgFreedesktopDBusProperties::handle-set signal.
+ * @properties_changed: Handler for the #OrgFreedesktopDBusProperties::properties-changed signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Properties.top_of_page">org.freedesktop.DBus.Properties</link>.
+ */
+
+typedef OrgFreedesktopDBusPropertiesIface OrgFreedesktopDBusPropertiesInterface;
+G_DEFINE_INTERFACE (OrgFreedesktopDBusProperties, org_freedesktop_dbus_properties, G_TYPE_OBJECT);
+
+static void
+org_freedesktop_dbus_properties_default_init (OrgFreedesktopDBusPropertiesIface *iface)
+{
+ /* GObject signals for incoming D-Bus method calls: */
+ /**
+ * OrgFreedesktopDBusProperties::handle-get:
+ * @object: A #OrgFreedesktopDBusProperties.
+ * @invocation: A #GDBusMethodInvocation.
+ * @arg_interface_name: Argument passed by remote caller.
+ * @arg_property_name: Argument passed by remote caller.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.Get">Get()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_get() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-get",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_get),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 3,
+ G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING);
+
+ /**
+ * OrgFreedesktopDBusProperties::handle-get-all:
+ * @object: A #OrgFreedesktopDBusProperties.
+ * @invocation: A #GDBusMethodInvocation.
+ * @arg_interface_name: Argument passed by remote caller.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.GetAll">GetAll()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_get_all() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-get-all",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_get_all),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+ /**
+ * OrgFreedesktopDBusProperties::handle-set:
+ * @object: A #OrgFreedesktopDBusProperties.
+ * @invocation: A #GDBusMethodInvocation.
+ * @arg_interface_name: Argument passed by remote caller.
+ * @arg_property_name: Argument passed by remote caller.
+ * @arg_value: Argument passed by remote caller.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.Set">Set()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_properties_complete_set() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-set",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, handle_set),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 4,
+ G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT);
+
+ /* GObject signals for received D-Bus signals: */
+ /**
+ * OrgFreedesktopDBusProperties::properties-changed:
+ * @object: A #OrgFreedesktopDBusProperties.
+ * @arg_interface_name: Argument.
+ * @arg_changed_properties: Argument.
+ * @arg_invalidated_properties: Argument.
+ *
+ * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-freedesktop-DBus-Properties.PropertiesChanged">"PropertiesChanged"</link> is received.
+ *
+ * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+ */
+ g_signal_new ("properties-changed",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgFreedesktopDBusPropertiesIface, properties_changed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 3, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRV);
+
+}
+
+/**
+ * org_freedesktop_dbus_properties_emit_properties_changed:
+ * @object: A #OrgFreedesktopDBusProperties.
+ * @arg_interface_name: Argument to pass with the signal.
+ * @arg_changed_properties: Argument to pass with the signal.
+ * @arg_invalidated_properties: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-freedesktop-DBus-Properties.PropertiesChanged">"PropertiesChanged"</link> D-Bus signal.
+ */
+void
+org_freedesktop_dbus_properties_emit_properties_changed (
+ OrgFreedesktopDBusProperties *object,
+ const gchar *arg_interface_name,
+ GVariant *arg_changed_properties,
+ const gchar *const *arg_invalidated_properties)
+{
+ g_signal_emit_by_name (object, "properties-changed", arg_interface_name, arg_changed_properties, arg_invalidated_properties);
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_get:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @arg_interface_name: Argument to pass with the method invocation.
+ * @arg_property_name: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.Get">Get()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_properties_call_get_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_properties_call_get_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_freedesktop_dbus_properties_call_get (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Get",
+ g_variant_new ("(ss)",
+ arg_interface_name,
+ arg_property_name),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_get_finish:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @out_value: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_get().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_freedesktop_dbus_properties_call_get().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_properties_call_get_finish (
+ OrgFreedesktopDBusProperties *proxy,
+ GVariant **out_value,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(@v)",
+ out_value);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_get_sync:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @arg_interface_name: Argument to pass with the method invocation.
+ * @arg_property_name: Argument to pass with the method invocation.
+ * @out_value: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.Get">Get()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_properties_call_get() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_properties_call_get_sync (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GVariant **out_value,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Get",
+ g_variant_new ("(ss)",
+ arg_interface_name,
+ arg_property_name),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(@v)",
+ out_value);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_get_all:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @arg_interface_name: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.GetAll">GetAll()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_properties_call_get_all_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_properties_call_get_all_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_freedesktop_dbus_properties_call_get_all (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "GetAll",
+ g_variant_new ("(s)",
+ arg_interface_name),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_get_all_finish:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_get_all().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_freedesktop_dbus_properties_call_get_all().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_properties_call_get_all_finish (
+ OrgFreedesktopDBusProperties *proxy,
+ GVariant **out_properties,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(@a{sv})",
+ out_properties);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_get_all_sync:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @arg_interface_name: Argument to pass with the method invocation.
+ * @out_properties: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.GetAll">GetAll()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_properties_call_get_all() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_properties_call_get_all_sync (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ GVariant **out_properties,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "GetAll",
+ g_variant_new ("(s)",
+ arg_interface_name),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(@a{sv})",
+ out_properties);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_set:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @arg_interface_name: Argument to pass with the method invocation.
+ * @arg_property_name: Argument to pass with the method invocation.
+ * @arg_value: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.Set">Set()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_properties_call_set_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_properties_call_set_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_freedesktop_dbus_properties_call_set (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GVariant *arg_value,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Set",
+ g_variant_new ("(ss@v)",
+ arg_interface_name,
+ arg_property_name,
+ arg_value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_set_finish:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_call_set().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_freedesktop_dbus_properties_call_set().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_properties_call_set_finish (
+ OrgFreedesktopDBusProperties *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_properties_call_set_sync:
+ * @proxy: A #OrgFreedesktopDBusPropertiesProxy.
+ * @arg_interface_name: Argument to pass with the method invocation.
+ * @arg_property_name: Argument to pass with the method invocation.
+ * @arg_value: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.Set">Set()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_properties_call_set() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_properties_call_set_sync (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GVariant *arg_value,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Set",
+ g_variant_new ("(ss@v)",
+ arg_interface_name,
+ arg_property_name,
+ arg_value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_properties_complete_get:
+ * @object: A #OrgFreedesktopDBusProperties.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @value: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.Get">Get()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_freedesktop_dbus_properties_complete_get (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *value)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(@v)",
+ value));
+}
+
+/**
+ * org_freedesktop_dbus_properties_complete_get_all:
+ * @object: A #OrgFreedesktopDBusProperties.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @properties: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.GetAll">GetAll()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_freedesktop_dbus_properties_complete_get_all (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *properties)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(@a{sv})",
+ properties));
+}
+
+/**
+ * org_freedesktop_dbus_properties_complete_set:
+ * @object: A #OrgFreedesktopDBusProperties.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus-Properties.Set">Set()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_freedesktop_dbus_properties_complete_set (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgFreedesktopDBusPropertiesProxy:
+ *
+ * The #OrgFreedesktopDBusPropertiesProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgFreedesktopDBusPropertiesProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgFreedesktopDBusPropertiesProxy.
+ */
+
+struct _OrgFreedesktopDBusPropertiesProxyPrivate
+{
+ GData *qdata;
+};
+
+static void org_freedesktop_dbus_properties_proxy_iface_init (OrgFreedesktopDBusPropertiesIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesProxy, org_freedesktop_dbus_properties_proxy, G_TYPE_DBUS_PROXY,
+ G_ADD_PRIVATE (OrgFreedesktopDBusPropertiesProxy)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesProxy, org_freedesktop_dbus_properties_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_proxy_iface_init));
+
+#endif
+static void
+org_freedesktop_dbus_properties_proxy_finalize (GObject *object)
+{
+ OrgFreedesktopDBusPropertiesProxy *proxy = ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (object);
+ g_datalist_clear (&proxy->priv->qdata);
+ G_OBJECT_CLASS (org_freedesktop_dbus_properties_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_freedesktop_dbus_properties_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_freedesktop_dbus_properties_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_freedesktop_dbus_properties_proxy_g_signal (GDBusProxy *proxy,
+ const gchar *sender_name G_GNUC_UNUSED,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ _ExtendedGDBusSignalInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ gsize num_params;
+ gsize n;
+ guint signal_id;
+ info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, signal_name);
+ if (info == NULL)
+ return;
+ num_params = g_variant_n_children (parameters);
+ paramv = g_new0 (GValue, num_params + 1);
+ g_value_init (&paramv[0], TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES);
+ g_value_set_object (&paramv[0], proxy);
+ g_variant_iter_init (&iter, parameters);
+ n = 1;
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES);
+ g_signal_emitv (paramv, signal_id, 0, NULL);
+ for (n = 0; n < num_params + 1; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static void
+org_freedesktop_dbus_properties_proxy_g_properties_changed (GDBusProxy *_proxy,
+ GVariant *changed_properties,
+ const gchar *const *invalidated_properties)
+{
+ OrgFreedesktopDBusPropertiesProxy *proxy = ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (_proxy);
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ _ExtendedGDBusPropertyInfo *info;
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, key);
+ g_datalist_remove_data (&proxy->priv->qdata, key);
+ if (info != NULL)
+ g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+ }
+ g_variant_iter_free (iter);
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, invalidated_properties[n]);
+ g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+ if (info != NULL)
+ g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+ }
+}
+
+static void
+org_freedesktop_dbus_properties_proxy_init (OrgFreedesktopDBusPropertiesProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ proxy->priv = org_freedesktop_dbus_properties_proxy_get_instance_private (proxy);
+#else
+ proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyPrivate);
+#endif
+
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_properties_interface_info ());
+}
+
+static void
+org_freedesktop_dbus_properties_proxy_class_init (OrgFreedesktopDBusPropertiesProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_freedesktop_dbus_properties_proxy_finalize;
+ gobject_class->get_property = org_freedesktop_dbus_properties_proxy_get_property;
+ gobject_class->set_property = org_freedesktop_dbus_properties_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = org_freedesktop_dbus_properties_proxy_g_signal;
+ proxy_class->g_properties_changed = org_freedesktop_dbus_properties_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPropertiesProxyPrivate));
+#endif
+}
+
+static void
+org_freedesktop_dbus_properties_proxy_iface_init (OrgFreedesktopDBusPropertiesIface *iface)
+{
+}
+
+/**
+ * org_freedesktop_dbus_properties_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Properties.top_of_page">org.freedesktop.DBus.Properties</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_properties_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_properties_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_freedesktop_dbus_properties_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL);
+}
+
+/**
+ * org_freedesktop_dbus_properties_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_freedesktop_dbus_properties_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusProperties *
+org_freedesktop_dbus_properties_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_freedesktop_dbus_properties_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Properties.top_of_page">org.freedesktop.DBus.Properties</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_properties_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusProperties *
+org_freedesktop_dbus_properties_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * org_freedesktop_dbus_properties_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like org_freedesktop_dbus_properties_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_properties_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_properties_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_freedesktop_dbus_properties_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL);
+}
+
+/**
+ * org_freedesktop_dbus_properties_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_properties_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_freedesktop_dbus_properties_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusProperties *
+org_freedesktop_dbus_properties_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_freedesktop_dbus_properties_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like org_freedesktop_dbus_properties_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_properties_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusProperties *
+org_freedesktop_dbus_properties_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Properties", NULL);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_PROPERTIES (ret);
+ else
+ return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgFreedesktopDBusPropertiesSkeleton:
+ *
+ * The #OrgFreedesktopDBusPropertiesSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgFreedesktopDBusPropertiesSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgFreedesktopDBusPropertiesSkeleton.
+ */
+
+struct _OrgFreedesktopDBusPropertiesSkeletonPrivate
+{
+ GValue *properties;
+ GList *changed_properties;
+ GSource *changed_properties_idle_source;
+ GMainContext *context;
+ GMutex lock;
+};
+
+static void
+_org_freedesktop_dbus_properties_skeleton_handle_method_call (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data);
+ _ExtendedGDBusMethodInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ gsize num_params;
+ guint num_extra;
+ gsize n;
+ guint signal_id;
+ GValue return_value = G_VALUE_INIT;
+ info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+ g_assert (info != NULL);
+ num_params = g_variant_n_children (parameters);
+ num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra);
+ n = 0;
+ g_value_init (&paramv[n], TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES);
+ g_value_set_object (&paramv[n++], skeleton);
+ g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+ g_value_set_object (&paramv[n++], invocation);
+ if (info->pass_fdlist)
+ {
+#ifdef G_OS_UNIX
+ g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+ g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+ g_assert_not_reached ();
+#endif
+ }
+ g_variant_iter_init (&iter, parameters);
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES);
+ g_value_init (&return_value, G_TYPE_BOOLEAN);
+ g_signal_emitv (paramv, signal_id, 0, &return_value);
+ if (!g_value_get_boolean (&return_value))
+ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+ g_value_unset (&return_value);
+ for (n = 0; n < num_params + num_extra; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static GVariant *
+_org_freedesktop_dbus_properties_skeleton_handle_get_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ GVariant *ret;
+ ret = NULL;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, property_name);
+ g_assert (info != NULL);
+ pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+ if (pspec == NULL)
+ {
+ g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+ }
+ else
+ {
+ g_value_init (&value, pspec->value_type);
+ g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+ ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+ g_value_unset (&value);
+ }
+ return ret;
+}
+
+static gboolean
+_org_freedesktop_dbus_properties_skeleton_handle_set_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GVariant *variant,
+ GError **error,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ gboolean ret;
+ ret = FALSE;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_properties_interface_info.parent_struct, property_name);
+ g_assert (info != NULL);
+ pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+ if (pspec == NULL)
+ {
+ g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+ }
+ else
+ {
+ if (info->use_gvariant)
+ g_value_set_variant (&value, variant);
+ else
+ g_dbus_gvariant_to_gvalue (variant, &value);
+ g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+ g_value_unset (&value);
+ ret = TRUE;
+ }
+ return ret;
+}
+
+static const GDBusInterfaceVTable _org_freedesktop_dbus_properties_skeleton_vtable =
+{
+ _org_freedesktop_dbus_properties_skeleton_handle_method_call,
+ _org_freedesktop_dbus_properties_skeleton_handle_get_property,
+ _org_freedesktop_dbus_properties_skeleton_handle_set_property,
+ {NULL}
+};
+
+static GDBusInterfaceInfo *
+org_freedesktop_dbus_properties_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return org_freedesktop_dbus_properties_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_freedesktop_dbus_properties_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_properties_skeleton_vtable;
+}
+
+static GVariant *
+org_freedesktop_dbus_properties_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+ OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (_skeleton);
+
+ GVariantBuilder builder;
+ guint n;
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ if (_org_freedesktop_dbus_properties_interface_info.parent_struct.properties == NULL)
+ goto out;
+ for (n = 0; _org_freedesktop_dbus_properties_interface_info.parent_struct.properties[n] != NULL; n++)
+ {
+ GDBusPropertyInfo *info = _org_freedesktop_dbus_properties_interface_info.parent_struct.properties[n];
+ if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+ {
+ GVariant *value;
+ value = _org_freedesktop_dbus_properties_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", info->name, NULL, skeleton);
+ if (value != NULL)
+ {
+ g_variant_take_ref (value);
+ g_variant_builder_add (&builder, "{sv}", info->name, value);
+ g_variant_unref (value);
+ }
+ }
+ }
+out:
+ return g_variant_builder_end (&builder);
+}
+
+static void
+org_freedesktop_dbus_properties_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_org_freedesktop_dbus_properties_on_signal_properties_changed (
+ OrgFreedesktopDBusProperties *object,
+ const gchar *arg_interface_name,
+ GVariant *arg_changed_properties,
+ const gchar *const *arg_invalidated_properties)
+{
+ OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(s@a{sv}^as)",
+ arg_interface_name,
+ arg_changed_properties,
+ arg_invalidated_properties));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void org_freedesktop_dbus_properties_skeleton_iface_init (OrgFreedesktopDBusPropertiesIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesSkeleton, org_freedesktop_dbus_properties_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_ADD_PRIVATE (OrgFreedesktopDBusPropertiesSkeleton)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPropertiesSkeleton, org_freedesktop_dbus_properties_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, org_freedesktop_dbus_properties_skeleton_iface_init));
+
+#endif
+static void
+org_freedesktop_dbus_properties_skeleton_finalize (GObject *object)
+{
+ OrgFreedesktopDBusPropertiesSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (object);
+ g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+ if (skeleton->priv->changed_properties_idle_source != NULL)
+ g_source_destroy (skeleton->priv->changed_properties_idle_source);
+ g_main_context_unref (skeleton->priv->context);
+ g_mutex_clear (&skeleton->priv->lock);
+ G_OBJECT_CLASS (org_freedesktop_dbus_properties_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_freedesktop_dbus_properties_skeleton_init (OrgFreedesktopDBusPropertiesSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ skeleton->priv = org_freedesktop_dbus_properties_skeleton_get_instance_private (skeleton);
+#else
+ skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonPrivate);
+#endif
+
+ g_mutex_init (&skeleton->priv->lock);
+ skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_freedesktop_dbus_properties_skeleton_class_init (OrgFreedesktopDBusPropertiesSkeletonClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusInterfaceSkeletonClass *skeleton_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_freedesktop_dbus_properties_skeleton_finalize;
+
+ skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+ skeleton_class->get_info = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_info;
+ skeleton_class->get_properties = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_properties;
+ skeleton_class->flush = org_freedesktop_dbus_properties_skeleton_dbus_interface_flush;
+ skeleton_class->get_vtable = org_freedesktop_dbus_properties_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPropertiesSkeletonPrivate));
+#endif
+}
+
+static void
+org_freedesktop_dbus_properties_skeleton_iface_init (OrgFreedesktopDBusPropertiesIface *iface)
+{
+ iface->properties_changed = _org_freedesktop_dbus_properties_on_signal_properties_changed;
+}
+
+/**
+ * org_freedesktop_dbus_properties_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Properties.top_of_page">org.freedesktop.DBus.Properties</link>.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPropertiesSkeleton): The skeleton object.
+ */
+OrgFreedesktopDBusProperties *
+org_freedesktop_dbus_properties_skeleton_new (void)
+{
+ return ORG_FREEDESKTOP_DBUS_PROPERTIES (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.freedesktop.DBus.Introspectable
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgFreedesktopDBusIntrospectable
+ * @title: OrgFreedesktopDBusIntrospectable
+ * @short_description: Generated C code for the org.freedesktop.DBus.Introspectable D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.freedesktop.DBus.Introspectable ---- */
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml_data =
+{
+ {
+ -1,
+ (gchar *) "xml_data",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers[] =
+{
+ &_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_xml_data,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_introspectable_method_info_introspect =
+{
+ {
+ -1,
+ (gchar *) "Introspect",
+ NULL,
+ (GDBusArgInfo **) &_org_freedesktop_dbus_introspectable_method_info_introspect_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-introspect",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_introspectable_method_info_pointers[] =
+{
+ &_org_freedesktop_dbus_introspectable_method_info_introspect,
+ NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_introspectable_interface_info =
+{
+ {
+ -1,
+ (gchar *) "org.freedesktop.DBus.Introspectable",
+ (GDBusMethodInfo **) &_org_freedesktop_dbus_introspectable_method_info_pointers,
+ NULL,
+ NULL,
+ NULL
+ },
+ "org-freedesktop-dbus-introspectable",
+};
+
+
+/**
+ * org_freedesktop_dbus_introspectable_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_freedesktop_dbus_introspectable_interface_info (void)
+{
+ return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct;
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OrgFreedesktopDBusIntrospectable interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+ return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgFreedesktopDBusIntrospectable:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ */
+
+/**
+ * OrgFreedesktopDBusIntrospectableIface:
+ * @parent_iface: The parent interface.
+ * @handle_introspect: Handler for the #OrgFreedesktopDBusIntrospectable::handle-introspect signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ */
+
+typedef OrgFreedesktopDBusIntrospectableIface OrgFreedesktopDBusIntrospectableInterface;
+G_DEFINE_INTERFACE (OrgFreedesktopDBusIntrospectable, org_freedesktop_dbus_introspectable, G_TYPE_OBJECT);
+
+static void
+org_freedesktop_dbus_introspectable_default_init (OrgFreedesktopDBusIntrospectableIface *iface)
+{
+ /* GObject signals for incoming D-Bus method calls: */
+ /**
+ * OrgFreedesktopDBusIntrospectable::handle-introspect:
+ * @object: A #OrgFreedesktopDBusIntrospectable.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_introspectable_complete_introspect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-introspect",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgFreedesktopDBusIntrospectableIface, handle_introspect),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_call_introspect:
+ * @proxy: A #OrgFreedesktopDBusIntrospectableProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_introspectable_call_introspect_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_introspectable_call_introspect_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_freedesktop_dbus_introspectable_call_introspect (
+ OrgFreedesktopDBusIntrospectable *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Introspect",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_call_introspect_finish:
+ * @proxy: A #OrgFreedesktopDBusIntrospectableProxy.
+ * @out_xml_data: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_call_introspect().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_freedesktop_dbus_introspectable_call_introspect().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_introspectable_call_introspect_finish (
+ OrgFreedesktopDBusIntrospectable *proxy,
+ gchar **out_xml_data,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(s)",
+ out_xml_data);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_call_introspect_sync:
+ * @proxy: A #OrgFreedesktopDBusIntrospectableProxy.
+ * @out_xml_data: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_introspectable_call_introspect() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_introspectable_call_introspect_sync (
+ OrgFreedesktopDBusIntrospectable *proxy,
+ gchar **out_xml_data,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Introspect",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(s)",
+ out_xml_data);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_complete_introspect:
+ * @object: A #OrgFreedesktopDBusIntrospectable.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @xml_data: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus-Introspectable.Introspect">Introspect()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_freedesktop_dbus_introspectable_complete_introspect (
+ OrgFreedesktopDBusIntrospectable *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *xml_data)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(s)",
+ xml_data));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgFreedesktopDBusIntrospectableProxy:
+ *
+ * The #OrgFreedesktopDBusIntrospectableProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgFreedesktopDBusIntrospectableProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgFreedesktopDBusIntrospectableProxy.
+ */
+
+struct _OrgFreedesktopDBusIntrospectableProxyPrivate
+{
+ GData *qdata;
+};
+
+static void org_freedesktop_dbus_introspectable_proxy_iface_init (OrgFreedesktopDBusIntrospectableIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableProxy, org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY,
+ G_ADD_PRIVATE (OrgFreedesktopDBusIntrospectableProxy)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableProxy, org_freedesktop_dbus_introspectable_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_proxy_iface_init));
+
+#endif
+static void
+org_freedesktop_dbus_introspectable_proxy_finalize (GObject *object)
+{
+ OrgFreedesktopDBusIntrospectableProxy *proxy = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (object);
+ g_datalist_clear (&proxy->priv->qdata);
+ G_OBJECT_CLASS (org_freedesktop_dbus_introspectable_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_freedesktop_dbus_introspectable_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_freedesktop_dbus_introspectable_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_freedesktop_dbus_introspectable_proxy_g_signal (GDBusProxy *proxy,
+ const gchar *sender_name G_GNUC_UNUSED,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ _ExtendedGDBusSignalInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ gsize num_params;
+ gsize n;
+ guint signal_id;
+ info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, signal_name);
+ if (info == NULL)
+ return;
+ num_params = g_variant_n_children (parameters);
+ paramv = g_new0 (GValue, num_params + 1);
+ g_value_init (&paramv[0], TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+ g_value_set_object (&paramv[0], proxy);
+ g_variant_iter_init (&iter, parameters);
+ n = 1;
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+ g_signal_emitv (paramv, signal_id, 0, NULL);
+ for (n = 0; n < num_params + 1; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static void
+org_freedesktop_dbus_introspectable_proxy_g_properties_changed (GDBusProxy *_proxy,
+ GVariant *changed_properties,
+ const gchar *const *invalidated_properties)
+{
+ OrgFreedesktopDBusIntrospectableProxy *proxy = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (_proxy);
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ _ExtendedGDBusPropertyInfo *info;
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, key);
+ g_datalist_remove_data (&proxy->priv->qdata, key);
+ if (info != NULL)
+ g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+ }
+ g_variant_iter_free (iter);
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, invalidated_properties[n]);
+ g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+ if (info != NULL)
+ g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+ }
+}
+
+static void
+org_freedesktop_dbus_introspectable_proxy_init (OrgFreedesktopDBusIntrospectableProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ proxy->priv = org_freedesktop_dbus_introspectable_proxy_get_instance_private (proxy);
+#else
+ proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyPrivate);
+#endif
+
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_introspectable_interface_info ());
+}
+
+static void
+org_freedesktop_dbus_introspectable_proxy_class_init (OrgFreedesktopDBusIntrospectableProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_freedesktop_dbus_introspectable_proxy_finalize;
+ gobject_class->get_property = org_freedesktop_dbus_introspectable_proxy_get_property;
+ gobject_class->set_property = org_freedesktop_dbus_introspectable_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = org_freedesktop_dbus_introspectable_proxy_g_signal;
+ proxy_class->g_properties_changed = org_freedesktop_dbus_introspectable_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusIntrospectableProxyPrivate));
+#endif
+}
+
+static void
+org_freedesktop_dbus_introspectable_proxy_iface_init (OrgFreedesktopDBusIntrospectableIface *iface)
+{
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_introspectable_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_introspectable_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_freedesktop_dbus_introspectable_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_freedesktop_dbus_introspectable_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusIntrospectable *
+org_freedesktop_dbus_introspectable_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_introspectable_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusIntrospectable *
+org_freedesktop_dbus_introspectable_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * org_freedesktop_dbus_introspectable_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like org_freedesktop_dbus_introspectable_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_freedesktop_dbus_introspectable_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_introspectable_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_freedesktop_dbus_introspectable_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusIntrospectable *
+org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like org_freedesktop_dbus_introspectable_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_introspectable_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusIntrospectable *
+org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Introspectable", NULL);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (ret);
+ else
+ return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgFreedesktopDBusIntrospectableSkeleton:
+ *
+ * The #OrgFreedesktopDBusIntrospectableSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgFreedesktopDBusIntrospectableSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgFreedesktopDBusIntrospectableSkeleton.
+ */
+
+struct _OrgFreedesktopDBusIntrospectableSkeletonPrivate
+{
+ GValue *properties;
+ GList *changed_properties;
+ GSource *changed_properties_idle_source;
+ GMainContext *context;
+ GMutex lock;
+};
+
+static void
+_org_freedesktop_dbus_introspectable_skeleton_handle_method_call (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+ _ExtendedGDBusMethodInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ gsize num_params;
+ guint num_extra;
+ gsize n;
+ guint signal_id;
+ GValue return_value = G_VALUE_INIT;
+ info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+ g_assert (info != NULL);
+ num_params = g_variant_n_children (parameters);
+ num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra);
+ n = 0;
+ g_value_init (&paramv[n], TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+ g_value_set_object (&paramv[n++], skeleton);
+ g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+ g_value_set_object (&paramv[n++], invocation);
+ if (info->pass_fdlist)
+ {
+#ifdef G_OS_UNIX
+ g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+ g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+ g_assert_not_reached ();
+#endif
+ }
+ g_variant_iter_init (&iter, parameters);
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE);
+ g_value_init (&return_value, G_TYPE_BOOLEAN);
+ g_signal_emitv (paramv, signal_id, 0, &return_value);
+ if (!g_value_get_boolean (&return_value))
+ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+ g_value_unset (&return_value);
+ for (n = 0; n < num_params + num_extra; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static GVariant *
+_org_freedesktop_dbus_introspectable_skeleton_handle_get_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ GVariant *ret;
+ ret = NULL;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name);
+ g_assert (info != NULL);
+ pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+ if (pspec == NULL)
+ {
+ g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+ }
+ else
+ {
+ g_value_init (&value, pspec->value_type);
+ g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+ ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+ g_value_unset (&value);
+ }
+ return ret;
+}
+
+static gboolean
+_org_freedesktop_dbus_introspectable_skeleton_handle_set_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GVariant *variant,
+ GError **error,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ gboolean ret;
+ ret = FALSE;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_introspectable_interface_info.parent_struct, property_name);
+ g_assert (info != NULL);
+ pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+ if (pspec == NULL)
+ {
+ g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+ }
+ else
+ {
+ if (info->use_gvariant)
+ g_value_set_variant (&value, variant);
+ else
+ g_dbus_gvariant_to_gvalue (variant, &value);
+ g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+ g_value_unset (&value);
+ ret = TRUE;
+ }
+ return ret;
+}
+
+static const GDBusInterfaceVTable _org_freedesktop_dbus_introspectable_skeleton_vtable =
+{
+ _org_freedesktop_dbus_introspectable_skeleton_handle_method_call,
+ _org_freedesktop_dbus_introspectable_skeleton_handle_get_property,
+ _org_freedesktop_dbus_introspectable_skeleton_handle_set_property,
+ {NULL}
+};
+
+static GDBusInterfaceInfo *
+org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return org_freedesktop_dbus_introspectable_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_introspectable_skeleton_vtable;
+}
+
+static GVariant *
+org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+ OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (_skeleton);
+
+ GVariantBuilder builder;
+ guint n;
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ if (_org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties == NULL)
+ goto out;
+ for (n = 0; _org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n] != NULL; n++)
+ {
+ GDBusPropertyInfo *info = _org_freedesktop_dbus_introspectable_interface_info.parent_struct.properties[n];
+ if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+ {
+ GVariant *value;
+ value = _org_freedesktop_dbus_introspectable_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Introspectable", info->name, NULL, skeleton);
+ if (value != NULL)
+ {
+ g_variant_take_ref (value);
+ g_variant_builder_add (&builder, "{sv}", info->name, value);
+ g_variant_unref (value);
+ }
+ }
+ }
+out:
+ return g_variant_builder_end (&builder);
+}
+
+static void
+org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void org_freedesktop_dbus_introspectable_skeleton_iface_init (OrgFreedesktopDBusIntrospectableIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableSkeleton, org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_ADD_PRIVATE (OrgFreedesktopDBusIntrospectableSkeleton)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusIntrospectableSkeleton, org_freedesktop_dbus_introspectable_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, org_freedesktop_dbus_introspectable_skeleton_iface_init));
+
+#endif
+static void
+org_freedesktop_dbus_introspectable_skeleton_finalize (GObject *object)
+{
+ OrgFreedesktopDBusIntrospectableSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (object);
+ g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+ if (skeleton->priv->changed_properties_idle_source != NULL)
+ g_source_destroy (skeleton->priv->changed_properties_idle_source);
+ g_main_context_unref (skeleton->priv->context);
+ g_mutex_clear (&skeleton->priv->lock);
+ G_OBJECT_CLASS (org_freedesktop_dbus_introspectable_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_freedesktop_dbus_introspectable_skeleton_init (OrgFreedesktopDBusIntrospectableSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ skeleton->priv = org_freedesktop_dbus_introspectable_skeleton_get_instance_private (skeleton);
+#else
+ skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonPrivate);
+#endif
+
+ g_mutex_init (&skeleton->priv->lock);
+ skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_freedesktop_dbus_introspectable_skeleton_class_init (OrgFreedesktopDBusIntrospectableSkeletonClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusInterfaceSkeletonClass *skeleton_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_freedesktop_dbus_introspectable_skeleton_finalize;
+
+ skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+ skeleton_class->get_info = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_info;
+ skeleton_class->get_properties = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_properties;
+ skeleton_class->flush = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_flush;
+ skeleton_class->get_vtable = org_freedesktop_dbus_introspectable_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusIntrospectableSkeletonPrivate));
+#endif
+}
+
+static void
+org_freedesktop_dbus_introspectable_skeleton_iface_init (OrgFreedesktopDBusIntrospectableIface *iface)
+{
+}
+
+/**
+ * org_freedesktop_dbus_introspectable_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Introspectable.top_of_page">org.freedesktop.DBus.Introspectable</link>.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusIntrospectableSkeleton): The skeleton object.
+ */
+OrgFreedesktopDBusIntrospectable *
+org_freedesktop_dbus_introspectable_skeleton_new (void)
+{
+ return ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.freedesktop.DBus.Peer
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:OrgFreedesktopDBusPeer
+ * @title: OrgFreedesktopDBusPeer
+ * @short_description: Generated C code for the org.freedesktop.DBus.Peer D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-DBus-Peer.top_of_page">org.freedesktop.DBus.Peer</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.freedesktop.DBus.Peer ---- */
+
+static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_peer_method_info_ping =
+{
+ {
+ -1,
+ (gchar *) "Ping",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-ping",
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_machine_uuid =
+{
+ {
+ -1,
+ (gchar *) "machine_uuid",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_pointers[] =
+{
+ &_org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_machine_uuid,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _org_freedesktop_dbus_peer_method_info_get_machine_id =
+{
+ {
+ -1,
+ (gchar *) "GetMachineId",
+ NULL,
+ (GDBusArgInfo **) &_org_freedesktop_dbus_peer_method_info_get_machine_id_OUT_ARG_pointers,
+ NULL
+ },
+ "handle-get-machine-id",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _org_freedesktop_dbus_peer_method_info_pointers[] =
+{
+ &_org_freedesktop_dbus_peer_method_info_ping,
+ &_org_freedesktop_dbus_peer_method_info_get_machine_id,
+ NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _org_freedesktop_dbus_peer_interface_info =
+{
+ {
+ -1,
+ (gchar *) "org.freedesktop.DBus.Peer",
+ (GDBusMethodInfo **) &_org_freedesktop_dbus_peer_method_info_pointers,
+ NULL,
+ NULL,
+ NULL
+ },
+ "org-freedesktop-dbus-peer",
+};
+
+
+/**
+ * org_freedesktop_dbus_peer_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-DBus-Peer.top_of_page">org.freedesktop.DBus.Peer</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+org_freedesktop_dbus_peer_interface_info (void)
+{
+ return (GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct;
+}
+
+/**
+ * org_freedesktop_dbus_peer_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #OrgFreedesktopDBusPeer interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+org_freedesktop_dbus_peer_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+ return property_id_begin - 1;
+}
+
+
+
+/**
+ * OrgFreedesktopDBusPeer:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Peer.top_of_page">org.freedesktop.DBus.Peer</link>.
+ */
+
+/**
+ * OrgFreedesktopDBusPeerIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_machine_id: Handler for the #OrgFreedesktopDBusPeer::handle-get-machine-id signal.
+ * @handle_ping: Handler for the #OrgFreedesktopDBusPeer::handle-ping signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Peer.top_of_page">org.freedesktop.DBus.Peer</link>.
+ */
+
+typedef OrgFreedesktopDBusPeerIface OrgFreedesktopDBusPeerInterface;
+G_DEFINE_INTERFACE (OrgFreedesktopDBusPeer, org_freedesktop_dbus_peer, G_TYPE_OBJECT);
+
+static void
+org_freedesktop_dbus_peer_default_init (OrgFreedesktopDBusPeerIface *iface)
+{
+ /* GObject signals for incoming D-Bus method calls: */
+ /**
+ * OrgFreedesktopDBusPeer::handle-ping:
+ * @object: A #OrgFreedesktopDBusPeer.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus-Peer.Ping">Ping()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_peer_complete_ping() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-ping",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgFreedesktopDBusPeerIface, handle_ping),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * OrgFreedesktopDBusPeer::handle-get-machine-id:
+ * @object: A #OrgFreedesktopDBusPeer.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus-Peer.GetMachineId">GetMachineId()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_freedesktop_dbus_peer_complete_get_machine_id() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-get-machine-id",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (OrgFreedesktopDBusPeerIface, handle_get_machine_id),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+}
+
+/**
+ * org_freedesktop_dbus_peer_call_ping:
+ * @proxy: A #OrgFreedesktopDBusPeerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Peer.Ping">Ping()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_peer_call_ping_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_peer_call_ping_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_freedesktop_dbus_peer_call_ping (
+ OrgFreedesktopDBusPeer *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Ping",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_freedesktop_dbus_peer_call_ping_finish:
+ * @proxy: A #OrgFreedesktopDBusPeerProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_call_ping().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_freedesktop_dbus_peer_call_ping().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_peer_call_ping_finish (
+ OrgFreedesktopDBusPeer *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_peer_call_ping_sync:
+ * @proxy: A #OrgFreedesktopDBusPeerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Peer.Ping">Ping()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_peer_call_ping() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_peer_call_ping_sync (
+ OrgFreedesktopDBusPeer *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Ping",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_peer_call_get_machine_id:
+ * @proxy: A #OrgFreedesktopDBusPeerProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Peer.GetMachineId">GetMachineId()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_peer_call_get_machine_id_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_peer_call_get_machine_id_sync() for the synchronous, blocking version of this method.
+ */
+void
+org_freedesktop_dbus_peer_call_get_machine_id (
+ OrgFreedesktopDBusPeer *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "GetMachineId",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * org_freedesktop_dbus_peer_call_get_machine_id_finish:
+ * @proxy: A #OrgFreedesktopDBusPeerProxy.
+ * @out_machine_uuid: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_call_get_machine_id().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with org_freedesktop_dbus_peer_call_get_machine_id().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_peer_call_get_machine_id_finish (
+ OrgFreedesktopDBusPeer *proxy,
+ gchar **out_machine_uuid,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(s)",
+ out_machine_uuid);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_peer_call_get_machine_id_sync:
+ * @proxy: A #OrgFreedesktopDBusPeerProxy.
+ * @out_machine_uuid: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus-Peer.GetMachineId">GetMachineId()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_peer_call_get_machine_id() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+org_freedesktop_dbus_peer_call_get_machine_id_sync (
+ OrgFreedesktopDBusPeer *proxy,
+ gchar **out_machine_uuid,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "GetMachineId",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "(s)",
+ out_machine_uuid);
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * org_freedesktop_dbus_peer_complete_ping:
+ * @object: A #OrgFreedesktopDBusPeer.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus-Peer.Ping">Ping()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_freedesktop_dbus_peer_complete_ping (
+ OrgFreedesktopDBusPeer *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * org_freedesktop_dbus_peer_complete_get_machine_id:
+ * @object: A #OrgFreedesktopDBusPeer.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @machine_uuid: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus-Peer.GetMachineId">GetMachineId()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+org_freedesktop_dbus_peer_complete_get_machine_id (
+ OrgFreedesktopDBusPeer *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *machine_uuid)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("(s)",
+ machine_uuid));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgFreedesktopDBusPeerProxy:
+ *
+ * The #OrgFreedesktopDBusPeerProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgFreedesktopDBusPeerProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgFreedesktopDBusPeerProxy.
+ */
+
+struct _OrgFreedesktopDBusPeerProxyPrivate
+{
+ GData *qdata;
+};
+
+static void org_freedesktop_dbus_peer_proxy_iface_init (OrgFreedesktopDBusPeerIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerProxy, org_freedesktop_dbus_peer_proxy, G_TYPE_DBUS_PROXY,
+ G_ADD_PRIVATE (OrgFreedesktopDBusPeerProxy)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerProxy, org_freedesktop_dbus_peer_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_proxy_iface_init));
+
+#endif
+static void
+org_freedesktop_dbus_peer_proxy_finalize (GObject *object)
+{
+ OrgFreedesktopDBusPeerProxy *proxy = ORG_FREEDESKTOP_DBUS_PEER_PROXY (object);
+ g_datalist_clear (&proxy->priv->qdata);
+ G_OBJECT_CLASS (org_freedesktop_dbus_peer_proxy_parent_class)->finalize (object);
+}
+
+static void
+org_freedesktop_dbus_peer_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_freedesktop_dbus_peer_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+org_freedesktop_dbus_peer_proxy_g_signal (GDBusProxy *proxy,
+ const gchar *sender_name G_GNUC_UNUSED,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ _ExtendedGDBusSignalInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ gsize num_params;
+ gsize n;
+ guint signal_id;
+ info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, signal_name);
+ if (info == NULL)
+ return;
+ num_params = g_variant_n_children (parameters);
+ paramv = g_new0 (GValue, num_params + 1);
+ g_value_init (&paramv[0], TYPE_ORG_FREEDESKTOP_DBUS_PEER);
+ g_value_set_object (&paramv[0], proxy);
+ g_variant_iter_init (&iter, parameters);
+ n = 1;
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PEER);
+ g_signal_emitv (paramv, signal_id, 0, NULL);
+ for (n = 0; n < num_params + 1; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static void
+org_freedesktop_dbus_peer_proxy_g_properties_changed (GDBusProxy *_proxy,
+ GVariant *changed_properties,
+ const gchar *const *invalidated_properties)
+{
+ OrgFreedesktopDBusPeerProxy *proxy = ORG_FREEDESKTOP_DBUS_PEER_PROXY (_proxy);
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ _ExtendedGDBusPropertyInfo *info;
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, key);
+ g_datalist_remove_data (&proxy->priv->qdata, key);
+ if (info != NULL)
+ g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+ }
+ g_variant_iter_free (iter);
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, invalidated_properties[n]);
+ g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+ if (info != NULL)
+ g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+ }
+}
+
+static void
+org_freedesktop_dbus_peer_proxy_init (OrgFreedesktopDBusPeerProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ proxy->priv = org_freedesktop_dbus_peer_proxy_get_instance_private (proxy);
+#else
+ proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyPrivate);
+#endif
+
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_freedesktop_dbus_peer_interface_info ());
+}
+
+static void
+org_freedesktop_dbus_peer_proxy_class_init (OrgFreedesktopDBusPeerProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_freedesktop_dbus_peer_proxy_finalize;
+ gobject_class->get_property = org_freedesktop_dbus_peer_proxy_get_property;
+ gobject_class->set_property = org_freedesktop_dbus_peer_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = org_freedesktop_dbus_peer_proxy_g_signal;
+ proxy_class->g_properties_changed = org_freedesktop_dbus_peer_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPeerProxyPrivate));
+#endif
+}
+
+static void
+org_freedesktop_dbus_peer_proxy_iface_init (OrgFreedesktopDBusPeerIface *iface)
+{
+}
+
+/**
+ * org_freedesktop_dbus_peer_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Peer.top_of_page">org.freedesktop.DBus.Peer</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_peer_proxy_new_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_peer_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_freedesktop_dbus_peer_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL);
+}
+
+/**
+ * org_freedesktop_dbus_peer_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_freedesktop_dbus_peer_proxy_new().
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusPeer *
+org_freedesktop_dbus_peer_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_PEER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_freedesktop_dbus_peer_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Peer.top_of_page">org.freedesktop.DBus.Peer</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_peer_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusPeer *
+org_freedesktop_dbus_peer_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_PEER (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * org_freedesktop_dbus_peer_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like org_freedesktop_dbus_peer_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call org_freedesktop_dbus_peer_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See org_freedesktop_dbus_peer_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+org_freedesktop_dbus_peer_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL);
+}
+
+/**
+ * org_freedesktop_dbus_peer_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_freedesktop_dbus_peer_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with org_freedesktop_dbus_peer_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusPeer *
+org_freedesktop_dbus_peer_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_PEER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * org_freedesktop_dbus_peer_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like org_freedesktop_dbus_peer_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See org_freedesktop_dbus_peer_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPeerProxy): The constructed proxy object or %NULL if @error is set.
+ */
+OrgFreedesktopDBusPeer *
+org_freedesktop_dbus_peer_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus.Peer", NULL);
+ if (ret != NULL)
+ return ORG_FREEDESKTOP_DBUS_PEER (ret);
+ else
+ return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * OrgFreedesktopDBusPeerSkeleton:
+ *
+ * The #OrgFreedesktopDBusPeerSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * OrgFreedesktopDBusPeerSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #OrgFreedesktopDBusPeerSkeleton.
+ */
+
+struct _OrgFreedesktopDBusPeerSkeletonPrivate
+{
+ GValue *properties;
+ GList *changed_properties;
+ GSource *changed_properties_idle_source;
+ GMainContext *context;
+ GMutex lock;
+};
+
+static void
+_org_freedesktop_dbus_peer_skeleton_handle_method_call (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data);
+ _ExtendedGDBusMethodInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ gsize num_params;
+ guint num_extra;
+ gsize n;
+ guint signal_id;
+ GValue return_value = G_VALUE_INIT;
+ info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+ g_assert (info != NULL);
+ num_params = g_variant_n_children (parameters);
+ num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra);
+ n = 0;
+ g_value_init (&paramv[n], TYPE_ORG_FREEDESKTOP_DBUS_PEER);
+ g_value_set_object (&paramv[n++], skeleton);
+ g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+ g_value_set_object (&paramv[n++], invocation);
+ if (info->pass_fdlist)
+ {
+#ifdef G_OS_UNIX
+ g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+ g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+ g_assert_not_reached ();
+#endif
+ }
+ g_variant_iter_init (&iter, parameters);
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_FREEDESKTOP_DBUS_PEER);
+ g_value_init (&return_value, G_TYPE_BOOLEAN);
+ g_signal_emitv (paramv, signal_id, 0, &return_value);
+ if (!g_value_get_boolean (&return_value))
+ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+ g_value_unset (&return_value);
+ for (n = 0; n < num_params + num_extra; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static GVariant *
+_org_freedesktop_dbus_peer_skeleton_handle_get_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ GVariant *ret;
+ ret = NULL;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, property_name);
+ g_assert (info != NULL);
+ pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+ if (pspec == NULL)
+ {
+ g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+ }
+ else
+ {
+ g_value_init (&value, pspec->value_type);
+ g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+ ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+ g_value_unset (&value);
+ }
+ return ret;
+}
+
+static gboolean
+_org_freedesktop_dbus_peer_skeleton_handle_set_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GVariant *variant,
+ GError **error,
+ gpointer user_data)
+{
+ OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ gboolean ret;
+ ret = FALSE;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_freedesktop_dbus_peer_interface_info.parent_struct, property_name);
+ g_assert (info != NULL);
+ pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+ if (pspec == NULL)
+ {
+ g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+ }
+ else
+ {
+ if (info->use_gvariant)
+ g_value_set_variant (&value, variant);
+ else
+ g_dbus_gvariant_to_gvalue (variant, &value);
+ g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+ g_value_unset (&value);
+ ret = TRUE;
+ }
+ return ret;
+}
+
+static const GDBusInterfaceVTable _org_freedesktop_dbus_peer_skeleton_vtable =
+{
+ _org_freedesktop_dbus_peer_skeleton_handle_method_call,
+ _org_freedesktop_dbus_peer_skeleton_handle_get_property,
+ _org_freedesktop_dbus_peer_skeleton_handle_set_property,
+ {NULL}
+};
+
+static GDBusInterfaceInfo *
+org_freedesktop_dbus_peer_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return org_freedesktop_dbus_peer_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+org_freedesktop_dbus_peer_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return (GDBusInterfaceVTable *) &_org_freedesktop_dbus_peer_skeleton_vtable;
+}
+
+static GVariant *
+org_freedesktop_dbus_peer_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+ OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (_skeleton);
+
+ GVariantBuilder builder;
+ guint n;
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ if (_org_freedesktop_dbus_peer_interface_info.parent_struct.properties == NULL)
+ goto out;
+ for (n = 0; _org_freedesktop_dbus_peer_interface_info.parent_struct.properties[n] != NULL; n++)
+ {
+ GDBusPropertyInfo *info = _org_freedesktop_dbus_peer_interface_info.parent_struct.properties[n];
+ if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+ {
+ GVariant *value;
+ value = _org_freedesktop_dbus_peer_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Peer", info->name, NULL, skeleton);
+ if (value != NULL)
+ {
+ g_variant_take_ref (value);
+ g_variant_builder_add (&builder, "{sv}", info->name, value);
+ g_variant_unref (value);
+ }
+ }
+ }
+out:
+ return g_variant_builder_end (&builder);
+}
+
+static void
+org_freedesktop_dbus_peer_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void org_freedesktop_dbus_peer_skeleton_iface_init (OrgFreedesktopDBusPeerIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerSkeleton, org_freedesktop_dbus_peer_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_ADD_PRIVATE (OrgFreedesktopDBusPeerSkeleton)
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (OrgFreedesktopDBusPeerSkeleton, org_freedesktop_dbus_peer_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_IMPLEMENT_INTERFACE (TYPE_ORG_FREEDESKTOP_DBUS_PEER, org_freedesktop_dbus_peer_skeleton_iface_init));
+
+#endif
+static void
+org_freedesktop_dbus_peer_skeleton_finalize (GObject *object)
+{
+ OrgFreedesktopDBusPeerSkeleton *skeleton = ORG_FREEDESKTOP_DBUS_PEER_SKELETON (object);
+ g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+ if (skeleton->priv->changed_properties_idle_source != NULL)
+ g_source_destroy (skeleton->priv->changed_properties_idle_source);
+ g_main_context_unref (skeleton->priv->context);
+ g_mutex_clear (&skeleton->priv->lock);
+ G_OBJECT_CLASS (org_freedesktop_dbus_peer_skeleton_parent_class)->finalize (object);
+}
+
+static void
+org_freedesktop_dbus_peer_skeleton_init (OrgFreedesktopDBusPeerSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ skeleton->priv = org_freedesktop_dbus_peer_skeleton_get_instance_private (skeleton);
+#else
+ skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonPrivate);
+#endif
+
+ g_mutex_init (&skeleton->priv->lock);
+ skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+org_freedesktop_dbus_peer_skeleton_class_init (OrgFreedesktopDBusPeerSkeletonClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusInterfaceSkeletonClass *skeleton_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = org_freedesktop_dbus_peer_skeleton_finalize;
+
+ skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+ skeleton_class->get_info = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_info;
+ skeleton_class->get_properties = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_properties;
+ skeleton_class->flush = org_freedesktop_dbus_peer_skeleton_dbus_interface_flush;
+ skeleton_class->get_vtable = org_freedesktop_dbus_peer_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (OrgFreedesktopDBusPeerSkeletonPrivate));
+#endif
+}
+
+static void
+org_freedesktop_dbus_peer_skeleton_iface_init (OrgFreedesktopDBusPeerIface *iface)
+{
+}
+
+/**
+ * org_freedesktop_dbus_peer_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus-Peer.top_of_page">org.freedesktop.DBus.Peer</link>.
+ *
+ * Returns: (transfer full) (type OrgFreedesktopDBusPeerSkeleton): The skeleton object.
+ */
+OrgFreedesktopDBusPeer *
+org_freedesktop_dbus_peer_skeleton_new (void)
+{
+ return ORG_FREEDESKTOP_DBUS_PEER (g_object_new (TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, NULL));
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface org.lightmediascanner.Scanner1
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:Scanner1
+ * @title: Scanner1
+ * @short_description: Generated C code for the org.lightmediascanner.Scanner1 D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-org-lightmediascanner-Scanner1.top_of_page">org.lightmediascanner.Scanner1</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for org.lightmediascanner.Scanner1 ---- */
+
+static const _ExtendedGDBusArgInfo _scanner1_method_info_scan_IN_ARG_specification =
+{
+ {
+ -1,
+ (gchar *) "specification",
+ (gchar *) "a{sv}",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _scanner1_method_info_scan_IN_ARG_pointers[] =
+{
+ &_scanner1_method_info_scan_IN_ARG_specification,
+ NULL
+};
+
+static const _ExtendedGDBusMethodInfo _scanner1_method_info_scan =
+{
+ {
+ -1,
+ (gchar *) "Scan",
+ (GDBusArgInfo **) &_scanner1_method_info_scan_IN_ARG_pointers,
+ NULL,
+ NULL
+ },
+ "handle-scan",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _scanner1_method_info_stop =
+{
+ {
+ -1,
+ (gchar *) "Stop",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-stop",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _scanner1_method_info_request_write_lock =
+{
+ {
+ -1,
+ (gchar *) "RequestWriteLock",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-request-write-lock",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo _scanner1_method_info_release_write_lock =
+{
+ {
+ -1,
+ (gchar *) "ReleaseWriteLock",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-release-write-lock",
+ FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _scanner1_method_info_pointers[] =
+{
+ &_scanner1_method_info_scan,
+ &_scanner1_method_info_stop,
+ &_scanner1_method_info_request_write_lock,
+ &_scanner1_method_info_release_write_lock,
+ NULL
+};
+
+static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Category =
+{
+ {
+ -1,
+ (gchar *) "Category",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Path =
+{
+ {
+ -1,
+ (gchar *) "Path",
+ (gchar *) "s",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_UpToDate =
+{
+ {
+ -1,
+ (gchar *) "UpToDate",
+ (gchar *) "t",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Processed =
+{
+ {
+ -1,
+ (gchar *) "Processed",
+ (gchar *) "t",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Deleted =
+{
+ {
+ -1,
+ (gchar *) "Deleted",
+ (gchar *) "t",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Skipped =
+{
+ {
+ -1,
+ (gchar *) "Skipped",
+ (gchar *) "t",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo _scanner1_signal_info_scan_progress_ARG_Errors =
+{
+ {
+ -1,
+ (gchar *) "Errors",
+ (gchar *) "t",
+ NULL
+ },
+ FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _scanner1_signal_info_scan_progress_ARG_pointers[] =
+{
+ &_scanner1_signal_info_scan_progress_ARG_Category,
+ &_scanner1_signal_info_scan_progress_ARG_Path,
+ &_scanner1_signal_info_scan_progress_ARG_UpToDate,
+ &_scanner1_signal_info_scan_progress_ARG_Processed,
+ &_scanner1_signal_info_scan_progress_ARG_Deleted,
+ &_scanner1_signal_info_scan_progress_ARG_Skipped,
+ &_scanner1_signal_info_scan_progress_ARG_Errors,
+ NULL
+};
+
+static const _ExtendedGDBusSignalInfo _scanner1_signal_info_scan_progress =
+{
+ {
+ -1,
+ (gchar *) "ScanProgress",
+ (GDBusArgInfo **) &_scanner1_signal_info_scan_progress_ARG_pointers,
+ NULL
+ },
+ "scan-progress"
+};
+
+static const _ExtendedGDBusSignalInfo * const _scanner1_signal_info_pointers[] =
+{
+ &_scanner1_signal_info_scan_progress,
+ NULL
+};
+
+static const _ExtendedGDBusPropertyInfo _scanner1_property_info_data_base_path =
+{
+ {
+ -1,
+ (gchar *) "DataBasePath",
+ (gchar *) "s",
+ G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
+ NULL
+ },
+ "data-base-path",
+ FALSE
+};
+
+static const _ExtendedGDBusPropertyInfo _scanner1_property_info_is_scanning =
+{
+ {
+ -1,
+ (gchar *) "IsScanning",
+ (gchar *) "b",
+ G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
+ NULL
+ },
+ "is-scanning",
+ FALSE
+};
+
+static const _ExtendedGDBusPropertyInfo _scanner1_property_info_write_locked =
+{
+ {
+ -1,
+ (gchar *) "WriteLocked",
+ (gchar *) "b",
+ G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
+ NULL
+ },
+ "write-locked",
+ FALSE
+};
+
+static const _ExtendedGDBusPropertyInfo _scanner1_property_info_update_id =
+{
+ {
+ -1,
+ (gchar *) "UpdateID",
+ (gchar *) "t",
+ G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
+ NULL
+ },
+ "update-id",
+ FALSE
+};
+
+static const _ExtendedGDBusPropertyInfo _scanner1_property_info_categories =
+{
+ {
+ -1,
+ (gchar *) "Categories",
+ (gchar *) "a{sv}",
+ G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
+ NULL
+ },
+ "categories",
+ FALSE
+};
+
+static const _ExtendedGDBusPropertyInfo * const _scanner1_property_info_pointers[] =
+{
+ &_scanner1_property_info_data_base_path,
+ &_scanner1_property_info_is_scanning,
+ &_scanner1_property_info_write_locked,
+ &_scanner1_property_info_update_id,
+ &_scanner1_property_info_categories,
+ NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _scanner1_interface_info =
+{
+ {
+ -1,
+ (gchar *) "org.lightmediascanner.Scanner1",
+ (GDBusMethodInfo **) &_scanner1_method_info_pointers,
+ (GDBusSignalInfo **) &_scanner1_signal_info_pointers,
+ (GDBusPropertyInfo **) &_scanner1_property_info_pointers,
+ NULL
+ },
+ "scanner1",
+};
+
+
+/**
+ * scanner1_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-org-lightmediascanner-Scanner1.top_of_page">org.lightmediascanner.Scanner1</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+scanner1_interface_info (void)
+{
+ return (GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct;
+}
+
+/**
+ * scanner1_override_properties:
+ * @klass: The class structure for a #GObject<!-- -->-derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #Scanner1 interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+scanner1_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+ g_object_class_override_property (klass, property_id_begin++, "data-base-path");
+ g_object_class_override_property (klass, property_id_begin++, "is-scanning");
+ g_object_class_override_property (klass, property_id_begin++, "write-locked");
+ g_object_class_override_property (klass, property_id_begin++, "update-id");
+ g_object_class_override_property (klass, property_id_begin++, "categories");
+ return property_id_begin - 1;
+}
+
+
+
+/**
+ * Scanner1:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-lightmediascanner-Scanner1.top_of_page">org.lightmediascanner.Scanner1</link>.
+ */
+
+/**
+ * Scanner1Iface:
+ * @parent_iface: The parent interface.
+ * @handle_release_write_lock: Handler for the #Scanner1::handle-release-write-lock signal.
+ * @handle_request_write_lock: Handler for the #Scanner1::handle-request-write-lock signal.
+ * @handle_scan: Handler for the #Scanner1::handle-scan signal.
+ * @handle_stop: Handler for the #Scanner1::handle-stop signal.
+ * @get_categories: Getter for the #Scanner1:categories property.
+ * @get_data_base_path: Getter for the #Scanner1:data-base-path property.
+ * @get_is_scanning: Getter for the #Scanner1:is-scanning property.
+ * @get_update_id: Getter for the #Scanner1:update-id property.
+ * @get_write_locked: Getter for the #Scanner1:write-locked property.
+ * @scan_progress: Handler for the #Scanner1::scan-progress signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-lightmediascanner-Scanner1.top_of_page">org.lightmediascanner.Scanner1</link>.
+ */
+
+typedef Scanner1Iface Scanner1Interface;
+G_DEFINE_INTERFACE (Scanner1, scanner1, G_TYPE_OBJECT);
+
+static void
+scanner1_default_init (Scanner1Iface *iface)
+{
+ /* GObject signals for incoming D-Bus method calls: */
+ /**
+ * Scanner1::handle-scan:
+ * @object: A #Scanner1.
+ * @invocation: A #GDBusMethodInvocation.
+ * @arg_specification: Argument passed by remote caller.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.Scan">Scan()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_scan() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-scan",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (Scanner1Iface, handle_scan),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT);
+
+ /**
+ * Scanner1::handle-stop:
+ * @object: A #Scanner1.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.Stop">Stop()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_stop() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-stop",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (Scanner1Iface, handle_stop),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * Scanner1::handle-request-write-lock:
+ * @object: A #Scanner1.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.RequestWriteLock">RequestWriteLock()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_request_write_lock() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-request-write-lock",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (Scanner1Iface, handle_request_write_lock),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
+ * Scanner1::handle-release-write-lock:
+ * @object: A #Scanner1.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.ReleaseWriteLock">ReleaseWriteLock()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call scanner1_complete_release_write_lock() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-release-write-lock",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (Scanner1Iface, handle_release_write_lock),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /* GObject signals for received D-Bus signals: */
+ /**
+ * Scanner1::scan-progress:
+ * @object: A #Scanner1.
+ * @arg_Category: Argument.
+ * @arg_Path: Argument.
+ * @arg_UpToDate: Argument.
+ * @arg_Processed: Argument.
+ * @arg_Deleted: Argument.
+ * @arg_Skipped: Argument.
+ * @arg_Errors: Argument.
+ *
+ * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-lightmediascanner-Scanner1.ScanProgress">"ScanProgress"</link> is received.
+ *
+ * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+ */
+ g_signal_new ("scan-progress",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (Scanner1Iface, scan_progress),
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 7, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_UINT64);
+
+ /* GObject properties for D-Bus properties: */
+ /**
+ * Scanner1:data-base-path:
+ *
+ * Represents the D-Bus property <link linkend="gdbus-property-org-lightmediascanner-Scanner1.DataBasePath">"DataBasePath"</link>.
+ *
+ * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
+ */
+ g_object_interface_install_property (iface,
+ g_param_spec_string ("data-base-path", "DataBasePath", "DataBasePath", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * Scanner1:is-scanning:
+ *
+ * Represents the D-Bus property <link linkend="gdbus-property-org-lightmediascanner-Scanner1.IsScanning">"IsScanning"</link>.
+ *
+ * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
+ */
+ g_object_interface_install_property (iface,
+ g_param_spec_boolean ("is-scanning", "IsScanning", "IsScanning", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * Scanner1:write-locked:
+ *
+ * Represents the D-Bus property <link linkend="gdbus-property-org-lightmediascanner-Scanner1.WriteLocked">"WriteLocked"</link>.
+ *
+ * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
+ */
+ g_object_interface_install_property (iface,
+ g_param_spec_boolean ("write-locked", "WriteLocked", "WriteLocked", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * Scanner1:update-id:
+ *
+ * Represents the D-Bus property <link linkend="gdbus-property-org-lightmediascanner-Scanner1.UpdateID">"UpdateID"</link>.
+ *
+ * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
+ */
+ g_object_interface_install_property (iface,
+ g_param_spec_uint64 ("update-id", "UpdateID", "UpdateID", 0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * Scanner1:categories:
+ *
+ * Represents the D-Bus property <link linkend="gdbus-property-org-lightmediascanner-Scanner1.Categories">"Categories"</link>.
+ *
+ * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
+ */
+ g_object_interface_install_property (iface,
+ g_param_spec_variant ("categories", "Categories", "Categories", G_VARIANT_TYPE ("a{sv}"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+/**
+ * scanner1_get_data_base_path: (skip)
+ * @object: A #Scanner1.
+ *
+ * Gets the value of the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.DataBasePath">"DataBasePath"</link> D-Bus property.
+ *
+ * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ *
+ * <warning>The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use scanner1_dup_data_base_path() if on another thread.</warning>
+ *
+ * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
+ */
+const gchar *
+scanner1_get_data_base_path (Scanner1 *object)
+{
+ return SCANNER1_GET_IFACE (object)->get_data_base_path (object);
+}
+
+/**
+ * scanner1_dup_data_base_path: (skip)
+ * @object: A #Scanner1.
+ *
+ * Gets a copy of the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.DataBasePath">"DataBasePath"</link> D-Bus property.
+ *
+ * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ *
+ * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
+ */
+gchar *
+scanner1_dup_data_base_path (Scanner1 *object)
+{
+ gchar *value;
+ g_object_get (G_OBJECT (object), "data-base-path", &value, NULL);
+ return value;
+}
+
+/**
+ * scanner1_set_data_base_path: (skip)
+ * @object: A #Scanner1.
+ * @value: The value to set.
+ *
+ * Sets the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.DataBasePath">"DataBasePath"</link> D-Bus property to @value.
+ *
+ * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ */
+void
+scanner1_set_data_base_path (Scanner1 *object, const gchar *value)
+{
+ g_object_set (G_OBJECT (object), "data-base-path", value, NULL);
+}
+
+/**
+ * scanner1_get_is_scanning: (skip)
+ * @object: A #Scanner1.
+ *
+ * Gets the value of the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.IsScanning">"IsScanning"</link> D-Bus property.
+ *
+ * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ *
+ * Returns: The property value.
+ */
+gboolean
+scanner1_get_is_scanning (Scanner1 *object)
+{
+ return SCANNER1_GET_IFACE (object)->get_is_scanning (object);
+}
+
+/**
+ * scanner1_set_is_scanning: (skip)
+ * @object: A #Scanner1.
+ * @value: The value to set.
+ *
+ * Sets the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.IsScanning">"IsScanning"</link> D-Bus property to @value.
+ *
+ * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ */
+void
+scanner1_set_is_scanning (Scanner1 *object, gboolean value)
+{
+ g_object_set (G_OBJECT (object), "is-scanning", value, NULL);
+}
+
+/**
+ * scanner1_get_write_locked: (skip)
+ * @object: A #Scanner1.
+ *
+ * Gets the value of the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.WriteLocked">"WriteLocked"</link> D-Bus property.
+ *
+ * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ *
+ * Returns: The property value.
+ */
+gboolean
+scanner1_get_write_locked (Scanner1 *object)
+{
+ return SCANNER1_GET_IFACE (object)->get_write_locked (object);
+}
+
+/**
+ * scanner1_set_write_locked: (skip)
+ * @object: A #Scanner1.
+ * @value: The value to set.
+ *
+ * Sets the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.WriteLocked">"WriteLocked"</link> D-Bus property to @value.
+ *
+ * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ */
+void
+scanner1_set_write_locked (Scanner1 *object, gboolean value)
+{
+ g_object_set (G_OBJECT (object), "write-locked", value, NULL);
+}
+
+/**
+ * scanner1_get_update_id: (skip)
+ * @object: A #Scanner1.
+ *
+ * Gets the value of the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.UpdateID">"UpdateID"</link> D-Bus property.
+ *
+ * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ *
+ * Returns: The property value.
+ */
+guint64
+scanner1_get_update_id (Scanner1 *object)
+{
+ return SCANNER1_GET_IFACE (object)->get_update_id (object);
+}
+
+/**
+ * scanner1_set_update_id: (skip)
+ * @object: A #Scanner1.
+ * @value: The value to set.
+ *
+ * Sets the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.UpdateID">"UpdateID"</link> D-Bus property to @value.
+ *
+ * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ */
+void
+scanner1_set_update_id (Scanner1 *object, guint64 value)
+{
+ g_object_set (G_OBJECT (object), "update-id", value, NULL);
+}
+
+/**
+ * scanner1_get_categories: (skip)
+ * @object: A #Scanner1.
+ *
+ * Gets the value of the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.Categories">"Categories"</link> D-Bus property.
+ *
+ * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ *
+ * <warning>The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use scanner1_dup_categories() if on another thread.</warning>
+ *
+ * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
+ */
+GVariant *
+scanner1_get_categories (Scanner1 *object)
+{
+ return SCANNER1_GET_IFACE (object)->get_categories (object);
+}
+
+/**
+ * scanner1_dup_categories: (skip)
+ * @object: A #Scanner1.
+ *
+ * Gets a copy of the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.Categories">"Categories"</link> D-Bus property.
+ *
+ * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ *
+ * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
+ */
+GVariant *
+scanner1_dup_categories (Scanner1 *object)
+{
+ GVariant *value;
+ g_object_get (G_OBJECT (object), "categories", &value, NULL);
+ return value;
+}
+
+/**
+ * scanner1_set_categories: (skip)
+ * @object: A #Scanner1.
+ * @value: The value to set.
+ *
+ * Sets the <link linkend="gdbus-property-org-lightmediascanner-Scanner1.Categories">"Categories"</link> D-Bus property to @value.
+ *
+ * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ */
+void
+scanner1_set_categories (Scanner1 *object, GVariant *value)
+{
+ g_object_set (G_OBJECT (object), "categories", value, NULL);
+}
+
+/**
+ * scanner1_emit_scan_progress:
+ * @object: A #Scanner1.
+ * @arg_Category: Argument to pass with the signal.
+ * @arg_Path: Argument to pass with the signal.
+ * @arg_UpToDate: Argument to pass with the signal.
+ * @arg_Processed: Argument to pass with the signal.
+ * @arg_Deleted: Argument to pass with the signal.
+ * @arg_Skipped: Argument to pass with the signal.
+ * @arg_Errors: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-org-lightmediascanner-Scanner1.ScanProgress">"ScanProgress"</link> D-Bus signal.
+ */
+void
+scanner1_emit_scan_progress (
+ Scanner1 *object,
+ const gchar *arg_Category,
+ const gchar *arg_Path,
+ guint64 arg_UpToDate,
+ guint64 arg_Processed,
+ guint64 arg_Deleted,
+ guint64 arg_Skipped,
+ guint64 arg_Errors)
+{
+ g_signal_emit_by_name (object, "scan-progress", arg_Category, arg_Path, arg_UpToDate, arg_Processed, arg_Deleted, arg_Skipped, arg_Errors);
+}
+
+/**
+ * scanner1_call_scan:
+ * @proxy: A #Scanner1Proxy.
+ * @arg_specification: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.Scan">Scan()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call scanner1_call_scan_finish() to get the result of the operation.
+ *
+ * See scanner1_call_scan_sync() for the synchronous, blocking version of this method.
+ */
+void
+scanner1_call_scan (
+ Scanner1 *proxy,
+ GVariant *arg_specification,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Scan",
+ g_variant_new ("(@a{sv})",
+ arg_specification),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * scanner1_call_scan_finish:
+ * @proxy: A #Scanner1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_scan().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with scanner1_call_scan().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+scanner1_call_scan_finish (
+ Scanner1 *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * scanner1_call_scan_sync:
+ * @proxy: A #Scanner1Proxy.
+ * @arg_specification: Argument to pass with the method invocation.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.Scan">Scan()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See scanner1_call_scan() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+scanner1_call_scan_sync (
+ Scanner1 *proxy,
+ GVariant *arg_specification,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Scan",
+ g_variant_new ("(@a{sv})",
+ arg_specification),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * scanner1_call_stop:
+ * @proxy: A #Scanner1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.Stop">Stop()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call scanner1_call_stop_finish() to get the result of the operation.
+ *
+ * See scanner1_call_stop_sync() for the synchronous, blocking version of this method.
+ */
+void
+scanner1_call_stop (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "Stop",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * scanner1_call_stop_finish:
+ * @proxy: A #Scanner1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_stop().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with scanner1_call_stop().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+scanner1_call_stop_finish (
+ Scanner1 *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * scanner1_call_stop_sync:
+ * @proxy: A #Scanner1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.Stop">Stop()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See scanner1_call_stop() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+scanner1_call_stop_sync (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "Stop",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * scanner1_call_request_write_lock:
+ * @proxy: A #Scanner1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.RequestWriteLock">RequestWriteLock()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call scanner1_call_request_write_lock_finish() to get the result of the operation.
+ *
+ * See scanner1_call_request_write_lock_sync() for the synchronous, blocking version of this method.
+ */
+void
+scanner1_call_request_write_lock (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "RequestWriteLock",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * scanner1_call_request_write_lock_finish:
+ * @proxy: A #Scanner1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_request_write_lock().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with scanner1_call_request_write_lock().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+scanner1_call_request_write_lock_finish (
+ Scanner1 *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * scanner1_call_request_write_lock_sync:
+ * @proxy: A #Scanner1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.RequestWriteLock">RequestWriteLock()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See scanner1_call_request_write_lock() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+scanner1_call_request_write_lock_sync (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "RequestWriteLock",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * scanner1_call_release_write_lock:
+ * @proxy: A #Scanner1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.ReleaseWriteLock">ReleaseWriteLock()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call scanner1_call_release_write_lock_finish() to get the result of the operation.
+ *
+ * See scanner1_call_release_write_lock_sync() for the synchronous, blocking version of this method.
+ */
+void
+scanner1_call_release_write_lock (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "ReleaseWriteLock",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * scanner1_call_release_write_lock_finish:
+ * @proxy: A #Scanner1Proxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_call_release_write_lock().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with scanner1_call_release_write_lock().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+scanner1_call_release_write_lock_finish (
+ Scanner1 *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * scanner1_call_release_write_lock_sync:
+ * @proxy: A #Scanner1Proxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.ReleaseWriteLock">ReleaseWriteLock()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See scanner1_call_release_write_lock() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+scanner1_call_release_write_lock_sync (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "ReleaseWriteLock",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * scanner1_complete_scan:
+ * @object: A #Scanner1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.Scan">Scan()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+scanner1_complete_scan (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * scanner1_complete_stop:
+ * @object: A #Scanner1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.Stop">Stop()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+scanner1_complete_stop (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * scanner1_complete_request_write_lock:
+ * @object: A #Scanner1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.RequestWriteLock">RequestWriteLock()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+scanner1_complete_request_write_lock (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
+ * scanner1_complete_release_write_lock:
+ * @object: A #Scanner1.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-lightmediascanner-Scanner1.ReleaseWriteLock">ReleaseWriteLock()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+scanner1_complete_release_write_lock (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * Scanner1Proxy:
+ *
+ * The #Scanner1Proxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * Scanner1ProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #Scanner1Proxy.
+ */
+
+struct _Scanner1ProxyPrivate
+{
+ GData *qdata;
+};
+
+static void scanner1_proxy_iface_init (Scanner1Iface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (Scanner1Proxy, scanner1_proxy, G_TYPE_DBUS_PROXY,
+ G_ADD_PRIVATE (Scanner1Proxy)
+ G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_proxy_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (Scanner1Proxy, scanner1_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_proxy_iface_init));
+
+#endif
+static void
+scanner1_proxy_finalize (GObject *object)
+{
+ Scanner1Proxy *proxy = SCANNER1_PROXY (object);
+ g_datalist_clear (&proxy->priv->qdata);
+ G_OBJECT_CLASS (scanner1_proxy_parent_class)->finalize (object);
+}
+
+static void
+scanner1_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+ const _ExtendedGDBusPropertyInfo *info;
+ GVariant *variant;
+ g_assert (prop_id != 0 && prop_id - 1 < 5);
+ info = _scanner1_property_info_pointers[prop_id - 1];
+ variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
+ if (info->use_gvariant)
+ {
+ g_value_set_variant (value, variant);
+ }
+ else
+ {
+ if (variant != NULL)
+ g_dbus_gvariant_to_gvalue (variant, value);
+ }
+ if (variant != NULL)
+ g_variant_unref (variant);
+}
+
+static void
+scanner1_proxy_set_property_cb (GDBusProxy *proxy,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ const _ExtendedGDBusPropertyInfo *info = user_data;
+ GError *error;
+ GVariant *_ret;
+ error = NULL;
+ _ret = g_dbus_proxy_call_finish (proxy, res, &error);
+ if (!_ret)
+ {
+ g_warning ("Error setting property '%s' on interface org.lightmediascanner.Scanner1: %s (%s, %d)",
+ info->parent_struct.name,
+ error->message, g_quark_to_string (error->domain), error->code);
+ g_error_free (error);
+ }
+ else
+ {
+ g_variant_unref (_ret);
+ }
+}
+
+static void
+scanner1_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+ const _ExtendedGDBusPropertyInfo *info;
+ GVariant *variant;
+ g_assert (prop_id != 0 && prop_id - 1 < 5);
+ info = _scanner1_property_info_pointers[prop_id - 1];
+ variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
+ g_dbus_proxy_call (G_DBUS_PROXY (object),
+ "org.freedesktop.DBus.Properties.Set",
+ g_variant_new ("(ssv)", "org.lightmediascanner.Scanner1", info->parent_struct.name, variant),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL, (GAsyncReadyCallback) scanner1_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
+ g_variant_unref (variant);
+}
+
+static void
+scanner1_proxy_g_signal (GDBusProxy *proxy,
+ const gchar *sender_name G_GNUC_UNUSED,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ _ExtendedGDBusSignalInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ gsize num_params;
+ gsize n;
+ guint signal_id;
+ info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, signal_name);
+ if (info == NULL)
+ return;
+ num_params = g_variant_n_children (parameters);
+ paramv = g_new0 (GValue, num_params + 1);
+ g_value_init (&paramv[0], TYPE_SCANNER1);
+ g_value_set_object (&paramv[0], proxy);
+ g_variant_iter_init (&iter, parameters);
+ n = 1;
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_SCANNER1);
+ g_signal_emitv (paramv, signal_id, 0, NULL);
+ for (n = 0; n < num_params + 1; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static void
+scanner1_proxy_g_properties_changed (GDBusProxy *_proxy,
+ GVariant *changed_properties,
+ const gchar *const *invalidated_properties)
+{
+ Scanner1Proxy *proxy = SCANNER1_PROXY (_proxy);
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ _ExtendedGDBusPropertyInfo *info;
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, key);
+ g_datalist_remove_data (&proxy->priv->qdata, key);
+ if (info != NULL)
+ g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+ }
+ g_variant_iter_free (iter);
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, invalidated_properties[n]);
+ g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+ if (info != NULL)
+ g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+ }
+}
+
+static const gchar *
+scanner1_proxy_get_data_base_path (Scanner1 *object)
+{
+ Scanner1Proxy *proxy = SCANNER1_PROXY (object);
+ GVariant *variant;
+ const gchar *value = NULL;
+ variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "DataBasePath");
+ if (variant != NULL)
+ {
+ value = g_variant_get_string (variant, NULL);
+ g_variant_unref (variant);
+ }
+ return value;
+}
+
+static gboolean
+scanner1_proxy_get_is_scanning (Scanner1 *object)
+{
+ Scanner1Proxy *proxy = SCANNER1_PROXY (object);
+ GVariant *variant;
+ gboolean value = 0;
+ variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "IsScanning");
+ if (variant != NULL)
+ {
+ value = g_variant_get_boolean (variant);
+ g_variant_unref (variant);
+ }
+ return value;
+}
+
+static gboolean
+scanner1_proxy_get_write_locked (Scanner1 *object)
+{
+ Scanner1Proxy *proxy = SCANNER1_PROXY (object);
+ GVariant *variant;
+ gboolean value = 0;
+ variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "WriteLocked");
+ if (variant != NULL)
+ {
+ value = g_variant_get_boolean (variant);
+ g_variant_unref (variant);
+ }
+ return value;
+}
+
+static guint64
+scanner1_proxy_get_update_id (Scanner1 *object)
+{
+ Scanner1Proxy *proxy = SCANNER1_PROXY (object);
+ GVariant *variant;
+ guint64 value = 0;
+ variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "UpdateID");
+ if (variant != NULL)
+ {
+ value = g_variant_get_uint64 (variant);
+ g_variant_unref (variant);
+ }
+ return value;
+}
+
+static GVariant *
+scanner1_proxy_get_categories (Scanner1 *object)
+{
+ Scanner1Proxy *proxy = SCANNER1_PROXY (object);
+ GVariant *variant;
+ GVariant *value = NULL;
+ variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Categories");
+ value = variant;
+ if (variant != NULL)
+ g_variant_unref (variant);
+ return value;
+}
+
+static void
+scanner1_proxy_init (Scanner1Proxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ proxy->priv = scanner1_proxy_get_instance_private (proxy);
+#else
+ proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_SCANNER1_PROXY, Scanner1ProxyPrivate);
+#endif
+
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), scanner1_interface_info ());
+}
+
+static void
+scanner1_proxy_class_init (Scanner1ProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = scanner1_proxy_finalize;
+ gobject_class->get_property = scanner1_proxy_get_property;
+ gobject_class->set_property = scanner1_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = scanner1_proxy_g_signal;
+ proxy_class->g_properties_changed = scanner1_proxy_g_properties_changed;
+
+ scanner1_override_properties (gobject_class, 1);
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (Scanner1ProxyPrivate));
+#endif
+}
+
+static void
+scanner1_proxy_iface_init (Scanner1Iface *iface)
+{
+ iface->get_data_base_path = scanner1_proxy_get_data_base_path;
+ iface->get_is_scanning = scanner1_proxy_get_is_scanning;
+ iface->get_write_locked = scanner1_proxy_get_write_locked;
+ iface->get_update_id = scanner1_proxy_get_update_id;
+ iface->get_categories = scanner1_proxy_get_categories;
+}
+
+/**
+ * scanner1_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-lightmediascanner-Scanner1.top_of_page">org.lightmediascanner.Scanner1</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call scanner1_proxy_new_finish() to get the result of the operation.
+ *
+ * See scanner1_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+scanner1_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_SCANNER1_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL);
+}
+
+/**
+ * scanner1_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with scanner1_proxy_new().
+ *
+ * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set.
+ */
+Scanner1 *
+scanner1_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return SCANNER1 (ret);
+ else
+ return NULL;
+}
+
+/**
+ * scanner1_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-lightmediascanner-Scanner1.top_of_page">org.lightmediascanner.Scanner1</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See scanner1_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set.
+ */
+Scanner1 *
+scanner1_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_SCANNER1_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL);
+ if (ret != NULL)
+ return SCANNER1 (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * scanner1_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like scanner1_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call scanner1_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See scanner1_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+scanner1_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TYPE_SCANNER1_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL);
+}
+
+/**
+ * scanner1_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to scanner1_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with scanner1_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set.
+ */
+Scanner1 *
+scanner1_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return SCANNER1 (ret);
+ else
+ return NULL;
+}
+
+/**
+ * scanner1_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like scanner1_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See scanner1_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type Scanner1Proxy): The constructed proxy object or %NULL if @error is set.
+ */
+Scanner1 *
+scanner1_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TYPE_SCANNER1_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.lightmediascanner.Scanner1", NULL);
+ if (ret != NULL)
+ return SCANNER1 (ret);
+ else
+ return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * Scanner1Skeleton:
+ *
+ * The #Scanner1Skeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * Scanner1SkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #Scanner1Skeleton.
+ */
+
+struct _Scanner1SkeletonPrivate
+{
+ GValue *properties;
+ GList *changed_properties;
+ GSource *changed_properties_idle_source;
+ GMainContext *context;
+ GMutex lock;
+};
+
+static void
+_scanner1_skeleton_handle_method_call (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data);
+ _ExtendedGDBusMethodInfo *info;
+ GVariantIter iter;
+ GVariant *child;
+ GValue *paramv;
+ gsize num_params;
+ guint num_extra;
+ gsize n;
+ guint signal_id;
+ GValue return_value = G_VALUE_INIT;
+ info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+ g_assert (info != NULL);
+ num_params = g_variant_n_children (parameters);
+ num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra);
+ n = 0;
+ g_value_init (&paramv[n], TYPE_SCANNER1);
+ g_value_set_object (&paramv[n++], skeleton);
+ g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+ g_value_set_object (&paramv[n++], invocation);
+ if (info->pass_fdlist)
+ {
+#ifdef G_OS_UNIX
+ g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+ g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+ g_assert_not_reached ();
+#endif
+ }
+ g_variant_iter_init (&iter, parameters);
+ while ((child = g_variant_iter_next_value (&iter)) != NULL)
+ {
+ _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+ if (arg_info->use_gvariant)
+ {
+ g_value_init (&paramv[n], G_TYPE_VARIANT);
+ g_value_set_variant (&paramv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+ g_variant_unref (child);
+ }
+ signal_id = g_signal_lookup (info->signal_name, TYPE_SCANNER1);
+ g_value_init (&return_value, G_TYPE_BOOLEAN);
+ g_signal_emitv (paramv, signal_id, 0, &return_value);
+ if (!g_value_get_boolean (&return_value))
+ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+ g_value_unset (&return_value);
+ for (n = 0; n < num_params + num_extra; n++)
+ g_value_unset (&paramv[n]);
+ g_free (paramv);
+}
+
+static GVariant *
+_scanner1_skeleton_handle_get_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ GVariant *ret;
+ ret = NULL;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, property_name);
+ g_assert (info != NULL);
+ pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+ if (pspec == NULL)
+ {
+ g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+ }
+ else
+ {
+ g_value_init (&value, pspec->value_type);
+ g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+ ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+ g_value_unset (&value);
+ }
+ return ret;
+}
+
+static gboolean
+_scanner1_skeleton_handle_set_property (
+ GDBusConnection *connection G_GNUC_UNUSED,
+ const gchar *sender G_GNUC_UNUSED,
+ const gchar *object_path G_GNUC_UNUSED,
+ const gchar *interface_name G_GNUC_UNUSED,
+ const gchar *property_name,
+ GVariant *variant,
+ GError **error,
+ gpointer user_data)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data);
+ GValue value = G_VALUE_INIT;
+ GParamSpec *pspec;
+ _ExtendedGDBusPropertyInfo *info;
+ gboolean ret;
+ ret = FALSE;
+ info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_scanner1_interface_info.parent_struct, property_name);
+ g_assert (info != NULL);
+ pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+ if (pspec == NULL)
+ {
+ g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+ }
+ else
+ {
+ if (info->use_gvariant)
+ g_value_set_variant (&value, variant);
+ else
+ g_dbus_gvariant_to_gvalue (variant, &value);
+ g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+ g_value_unset (&value);
+ ret = TRUE;
+ }
+ return ret;
+}
+
+static const GDBusInterfaceVTable _scanner1_skeleton_vtable =
+{
+ _scanner1_skeleton_handle_method_call,
+ _scanner1_skeleton_handle_get_property,
+ _scanner1_skeleton_handle_set_property,
+ {NULL}
+};
+
+static GDBusInterfaceInfo *
+scanner1_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return scanner1_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+scanner1_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+ return (GDBusInterfaceVTable *) &_scanner1_skeleton_vtable;
+}
+
+static GVariant *
+scanner1_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (_skeleton);
+
+ GVariantBuilder builder;
+ guint n;
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ if (_scanner1_interface_info.parent_struct.properties == NULL)
+ goto out;
+ for (n = 0; _scanner1_interface_info.parent_struct.properties[n] != NULL; n++)
+ {
+ GDBusPropertyInfo *info = _scanner1_interface_info.parent_struct.properties[n];
+ if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+ {
+ GVariant *value;
+ value = _scanner1_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.lightmediascanner.Scanner1", info->name, NULL, skeleton);
+ if (value != NULL)
+ {
+ g_variant_take_ref (value);
+ g_variant_builder_add (&builder, "{sv}", info->name, value);
+ g_variant_unref (value);
+ }
+ }
+ }
+out:
+ return g_variant_builder_end (&builder);
+}
+
+static gboolean _scanner1_emit_changed (gpointer user_data);
+
+static void
+scanner1_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (_skeleton);
+ gboolean emit_changed = FALSE;
+
+ g_mutex_lock (&skeleton->priv->lock);
+ if (skeleton->priv->changed_properties_idle_source != NULL)
+ {
+ g_source_destroy (skeleton->priv->changed_properties_idle_source);
+ skeleton->priv->changed_properties_idle_source = NULL;
+ emit_changed = TRUE;
+ }
+ g_mutex_unlock (&skeleton->priv->lock);
+
+ if (emit_changed)
+ _scanner1_emit_changed (skeleton);
+}
+
+static void
+_scanner1_on_signal_scan_progress (
+ Scanner1 *object,
+ const gchar *arg_Category,
+ const gchar *arg_Path,
+ guint64 arg_UpToDate,
+ guint64 arg_Processed,
+ guint64 arg_Deleted,
+ guint64 arg_Skipped,
+ guint64 arg_Errors)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+
+ GList *connections, *l;
+ GVariant *signal_variant;
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+ signal_variant = g_variant_ref_sink (g_variant_new ("(ssttttt)",
+ arg_Category,
+ arg_Path,
+ arg_UpToDate,
+ arg_Processed,
+ arg_Deleted,
+ arg_Skipped,
+ arg_Errors));
+ for (l = connections; l != NULL; l = l->next)
+ {
+ GDBusConnection *connection = l->data;
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.lightmediascanner.Scanner1", "ScanProgress",
+ signal_variant, NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+}
+
+static void scanner1_skeleton_iface_init (Scanner1Iface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (Scanner1Skeleton, scanner1_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_ADD_PRIVATE (Scanner1Skeleton)
+ G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_skeleton_iface_init));
+
+#else
+G_DEFINE_TYPE_WITH_CODE (Scanner1Skeleton, scanner1_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+ G_IMPLEMENT_INTERFACE (TYPE_SCANNER1, scanner1_skeleton_iface_init));
+
+#endif
+static void
+scanner1_skeleton_finalize (GObject *object)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ guint n;
+ for (n = 0; n < 5; n++)
+ g_value_unset (&skeleton->priv->properties[n]);
+ g_free (skeleton->priv->properties);
+ g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+ if (skeleton->priv->changed_properties_idle_source != NULL)
+ g_source_destroy (skeleton->priv->changed_properties_idle_source);
+ g_main_context_unref (skeleton->priv->context);
+ g_mutex_clear (&skeleton->priv->lock);
+ G_OBJECT_CLASS (scanner1_skeleton_parent_class)->finalize (object);
+}
+
+static void
+scanner1_skeleton_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ g_assert (prop_id != 0 && prop_id - 1 < 5);
+ g_mutex_lock (&skeleton->priv->lock);
+ g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
+ g_mutex_unlock (&skeleton->priv->lock);
+}
+
+static gboolean
+_scanner1_emit_changed (gpointer user_data)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (user_data);
+ GList *l;
+ GVariantBuilder builder;
+ GVariantBuilder invalidated_builder;
+ guint num_changes;
+
+ g_mutex_lock (&skeleton->priv->lock);
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
+ for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
+ {
+ ChangedProperty *cp = l->data;
+ GVariant *variant;
+ const GValue *cur_value;
+
+ cur_value = &skeleton->priv->properties[cp->prop_id - 1];
+ if (!_g_value_equal (cur_value, &cp->orig_value))
+ {
+ variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
+ g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
+ g_variant_unref (variant);
+ num_changes++;
+ }
+ }
+ if (num_changes > 0)
+ {
+ GList *connections, *ll;
+ GVariant *signal_variant;
+ signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.lightmediascanner.Scanner1",
+ &builder, &invalidated_builder));
+ connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+ for (ll = connections; ll != NULL; ll = ll->next)
+ {
+ GDBusConnection *connection = ll->data;
+
+ g_dbus_connection_emit_signal (connection,
+ NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ signal_variant,
+ NULL);
+ }
+ g_variant_unref (signal_variant);
+ g_list_free_full (connections, g_object_unref);
+ }
+ else
+ {
+ g_variant_builder_clear (&builder);
+ g_variant_builder_clear (&invalidated_builder);
+ }
+ g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+ skeleton->priv->changed_properties = NULL;
+ skeleton->priv->changed_properties_idle_source = NULL;
+ g_mutex_unlock (&skeleton->priv->lock);
+ return FALSE;
+}
+
+static void
+_scanner1_schedule_emit_changed (Scanner1Skeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
+{
+ ChangedProperty *cp;
+ GList *l;
+ cp = NULL;
+ for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
+ {
+ ChangedProperty *i_cp = l->data;
+ if (i_cp->info == info)
+ {
+ cp = i_cp;
+ break;
+ }
+ }
+ if (cp == NULL)
+ {
+ cp = g_new0 (ChangedProperty, 1);
+ cp->prop_id = prop_id;
+ cp->info = info;
+ skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
+ g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
+ g_value_copy (orig_value, &cp->orig_value);
+ }
+}
+
+static void
+scanner1_skeleton_notify (GObject *object,
+ GParamSpec *pspec G_GNUC_UNUSED)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ g_mutex_lock (&skeleton->priv->lock);
+ if (skeleton->priv->changed_properties != NULL &&
+ skeleton->priv->changed_properties_idle_source == NULL)
+ {
+ skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
+ g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (skeleton->priv->changed_properties_idle_source, _scanner1_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+ g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _scanner1_emit_changed");
+ g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
+ g_source_unref (skeleton->priv->changed_properties_idle_source);
+ }
+ g_mutex_unlock (&skeleton->priv->lock);
+}
+
+static void
+scanner1_skeleton_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ g_assert (prop_id != 0 && prop_id - 1 < 5);
+ g_mutex_lock (&skeleton->priv->lock);
+ g_object_freeze_notify (object);
+ if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
+ {
+ if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)
+ _scanner1_schedule_emit_changed (skeleton, _scanner1_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);
+ g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
+ g_object_notify_by_pspec (object, pspec);
+ }
+ g_mutex_unlock (&skeleton->priv->lock);
+ g_object_thaw_notify (object);
+}
+
+static void
+scanner1_skeleton_init (Scanner1Skeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+ skeleton->priv = scanner1_skeleton_get_instance_private (skeleton);
+#else
+ skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_SCANNER1_SKELETON, Scanner1SkeletonPrivate);
+#endif
+
+ g_mutex_init (&skeleton->priv->lock);
+ skeleton->priv->context = g_main_context_ref_thread_default ();
+ skeleton->priv->properties = g_new0 (GValue, 5);
+ g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING);
+ g_value_init (&skeleton->priv->properties[1], G_TYPE_BOOLEAN);
+ g_value_init (&skeleton->priv->properties[2], G_TYPE_BOOLEAN);
+ g_value_init (&skeleton->priv->properties[3], G_TYPE_UINT64);
+ g_value_init (&skeleton->priv->properties[4], G_TYPE_VARIANT);
+}
+
+static const gchar *
+scanner1_skeleton_get_data_base_path (Scanner1 *object)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ const gchar *value;
+ g_mutex_lock (&skeleton->priv->lock);
+ value = g_value_get_string (&(skeleton->priv->properties[0]));
+ g_mutex_unlock (&skeleton->priv->lock);
+ return value;
+}
+
+static gboolean
+scanner1_skeleton_get_is_scanning (Scanner1 *object)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ gboolean value;
+ g_mutex_lock (&skeleton->priv->lock);
+ value = g_value_get_boolean (&(skeleton->priv->properties[1]));
+ g_mutex_unlock (&skeleton->priv->lock);
+ return value;
+}
+
+static gboolean
+scanner1_skeleton_get_write_locked (Scanner1 *object)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ gboolean value;
+ g_mutex_lock (&skeleton->priv->lock);
+ value = g_value_get_boolean (&(skeleton->priv->properties[2]));
+ g_mutex_unlock (&skeleton->priv->lock);
+ return value;
+}
+
+static guint64
+scanner1_skeleton_get_update_id (Scanner1 *object)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ guint64 value;
+ g_mutex_lock (&skeleton->priv->lock);
+ value = g_value_get_uint64 (&(skeleton->priv->properties[3]));
+ g_mutex_unlock (&skeleton->priv->lock);
+ return value;
+}
+
+static GVariant *
+scanner1_skeleton_get_categories (Scanner1 *object)
+{
+ Scanner1Skeleton *skeleton = SCANNER1_SKELETON (object);
+ GVariant *value;
+ g_mutex_lock (&skeleton->priv->lock);
+ value = g_value_get_variant (&(skeleton->priv->properties[4]));
+ g_mutex_unlock (&skeleton->priv->lock);
+ return value;
+}
+
+static void
+scanner1_skeleton_class_init (Scanner1SkeletonClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusInterfaceSkeletonClass *skeleton_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = scanner1_skeleton_finalize;
+ gobject_class->get_property = scanner1_skeleton_get_property;
+ gobject_class->set_property = scanner1_skeleton_set_property;
+ gobject_class->notify = scanner1_skeleton_notify;
+
+
+ scanner1_override_properties (gobject_class, 1);
+
+ skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+ skeleton_class->get_info = scanner1_skeleton_dbus_interface_get_info;
+ skeleton_class->get_properties = scanner1_skeleton_dbus_interface_get_properties;
+ skeleton_class->flush = scanner1_skeleton_dbus_interface_flush;
+ skeleton_class->get_vtable = scanner1_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+ g_type_class_add_private (klass, sizeof (Scanner1SkeletonPrivate));
+#endif
+}
+
+static void
+scanner1_skeleton_iface_init (Scanner1Iface *iface)
+{
+ iface->scan_progress = _scanner1_on_signal_scan_progress;
+ iface->get_data_base_path = scanner1_skeleton_get_data_base_path;
+ iface->get_is_scanning = scanner1_skeleton_get_is_scanning;
+ iface->get_write_locked = scanner1_skeleton_get_write_locked;
+ iface->get_update_id = scanner1_skeleton_get_update_id;
+ iface->get_categories = scanner1_skeleton_get_categories;
+}
+
+/**
+ * scanner1_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-lightmediascanner-Scanner1.top_of_page">org.lightmediascanner.Scanner1</link>.
+ *
+ * Returns: (transfer full) (type Scanner1Skeleton): The skeleton object.
+ */
+Scanner1 *
+scanner1_skeleton_new (void)
+{
+ return SCANNER1 (g_object_new (TYPE_SCANNER1_SKELETON, NULL));
+}
+
diff --git a/sample/mediaplayer/binding/gdbus/lightmediascanner_interface.h b/sample/mediaplayer/binding/gdbus/lightmediascanner_interface.h
new file mode 100644
index 0000000..4f42086
--- /dev/null
+++ b/sample/mediaplayer/binding/gdbus/lightmediascanner_interface.h
@@ -0,0 +1,896 @@
+/*
+ * Generated by gdbus-codegen 2.52.0. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the source it was derived from.
+ */
+
+#ifndef __LIGHTMEDIASCANNER_INTERFACE_H__
+#define __LIGHTMEDIASCANNER_INTERFACE_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.freedesktop.DBus.Properties */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES (org_freedesktop_dbus_properties_get_type ())
+#define ORG_FREEDESKTOP_DBUS_PROPERTIES(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, OrgFreedesktopDBusProperties))
+#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES))
+#define ORG_FREEDESKTOP_DBUS_PROPERTIES_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES, OrgFreedesktopDBusPropertiesIface))
+
+struct _OrgFreedesktopDBusProperties;
+typedef struct _OrgFreedesktopDBusProperties OrgFreedesktopDBusProperties;
+typedef struct _OrgFreedesktopDBusPropertiesIface OrgFreedesktopDBusPropertiesIface;
+
+struct _OrgFreedesktopDBusPropertiesIface
+{
+ GTypeInterface parent_iface;
+
+
+ gboolean (*handle_get) (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name);
+
+ gboolean (*handle_get_all) (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_interface_name);
+
+ gboolean (*handle_set) (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GVariant *arg_value);
+
+ void (*properties_changed) (
+ OrgFreedesktopDBusProperties *object,
+ const gchar *arg_interface_name,
+ GVariant *arg_changed_properties,
+ const gchar *const *arg_invalidated_properties);
+
+};
+
+GType org_freedesktop_dbus_properties_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_freedesktop_dbus_properties_interface_info (void);
+guint org_freedesktop_dbus_properties_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_freedesktop_dbus_properties_complete_get (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *value);
+
+void org_freedesktop_dbus_properties_complete_get_all (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *properties);
+
+void org_freedesktop_dbus_properties_complete_set (
+ OrgFreedesktopDBusProperties *object,
+ GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void org_freedesktop_dbus_properties_emit_properties_changed (
+ OrgFreedesktopDBusProperties *object,
+ const gchar *arg_interface_name,
+ GVariant *arg_changed_properties,
+ const gchar *const *arg_invalidated_properties);
+
+
+
+/* D-Bus method calls: */
+void org_freedesktop_dbus_properties_call_get (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_freedesktop_dbus_properties_call_get_finish (
+ OrgFreedesktopDBusProperties *proxy,
+ GVariant **out_value,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_freedesktop_dbus_properties_call_get_sync (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GVariant **out_value,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_freedesktop_dbus_properties_call_get_all (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_freedesktop_dbus_properties_call_get_all_finish (
+ OrgFreedesktopDBusProperties *proxy,
+ GVariant **out_properties,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_freedesktop_dbus_properties_call_get_all_sync (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ GVariant **out_properties,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_freedesktop_dbus_properties_call_set (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GVariant *arg_value,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_freedesktop_dbus_properties_call_set_finish (
+ OrgFreedesktopDBusProperties *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_freedesktop_dbus_properties_call_set_sync (
+ OrgFreedesktopDBusProperties *proxy,
+ const gchar *arg_interface_name,
+ const gchar *arg_property_name,
+ GVariant *arg_value,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY (org_freedesktop_dbus_properties_proxy_get_type ())
+#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxy))
+#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyClass))
+#define ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY, OrgFreedesktopDBusPropertiesProxyClass))
+#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY))
+#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_PROXY))
+
+typedef struct _OrgFreedesktopDBusPropertiesProxy OrgFreedesktopDBusPropertiesProxy;
+typedef struct _OrgFreedesktopDBusPropertiesProxyClass OrgFreedesktopDBusPropertiesProxyClass;
+typedef struct _OrgFreedesktopDBusPropertiesProxyPrivate OrgFreedesktopDBusPropertiesProxyPrivate;
+
+struct _OrgFreedesktopDBusPropertiesProxy
+{
+ /*< private >*/
+ GDBusProxy parent_instance;
+ OrgFreedesktopDBusPropertiesProxyPrivate *priv;
+};
+
+struct _OrgFreedesktopDBusPropertiesProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+GType org_freedesktop_dbus_properties_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPropertiesProxy, g_object_unref)
+#endif
+
+void org_freedesktop_dbus_properties_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_freedesktop_dbus_properties_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON (org_freedesktop_dbus_properties_skeleton_get_type ())
+#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeleton))
+#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonClass))
+#define ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON, OrgFreedesktopDBusPropertiesSkeletonClass))
+#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON))
+#define IS_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PROPERTIES_SKELETON))
+
+typedef struct _OrgFreedesktopDBusPropertiesSkeleton OrgFreedesktopDBusPropertiesSkeleton;
+typedef struct _OrgFreedesktopDBusPropertiesSkeletonClass OrgFreedesktopDBusPropertiesSkeletonClass;
+typedef struct _OrgFreedesktopDBusPropertiesSkeletonPrivate OrgFreedesktopDBusPropertiesSkeletonPrivate;
+
+struct _OrgFreedesktopDBusPropertiesSkeleton
+{
+ /*< private >*/
+ GDBusInterfaceSkeleton parent_instance;
+ OrgFreedesktopDBusPropertiesSkeletonPrivate *priv;
+};
+
+struct _OrgFreedesktopDBusPropertiesSkeletonClass
+{
+ GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_freedesktop_dbus_properties_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPropertiesSkeleton, g_object_unref)
+#endif
+
+OrgFreedesktopDBusProperties *org_freedesktop_dbus_properties_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.freedesktop.DBus.Introspectable */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE (org_freedesktop_dbus_introspectable_get_type ())
+#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OrgFreedesktopDBusIntrospectable))
+#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE))
+#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE, OrgFreedesktopDBusIntrospectableIface))
+
+struct _OrgFreedesktopDBusIntrospectable;
+typedef struct _OrgFreedesktopDBusIntrospectable OrgFreedesktopDBusIntrospectable;
+typedef struct _OrgFreedesktopDBusIntrospectableIface OrgFreedesktopDBusIntrospectableIface;
+
+struct _OrgFreedesktopDBusIntrospectableIface
+{
+ GTypeInterface parent_iface;
+
+ gboolean (*handle_introspect) (
+ OrgFreedesktopDBusIntrospectable *object,
+ GDBusMethodInvocation *invocation);
+
+};
+
+GType org_freedesktop_dbus_introspectable_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_freedesktop_dbus_introspectable_interface_info (void);
+guint org_freedesktop_dbus_introspectable_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_freedesktop_dbus_introspectable_complete_introspect (
+ OrgFreedesktopDBusIntrospectable *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *xml_data);
+
+
+
+/* D-Bus method calls: */
+void org_freedesktop_dbus_introspectable_call_introspect (
+ OrgFreedesktopDBusIntrospectable *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_freedesktop_dbus_introspectable_call_introspect_finish (
+ OrgFreedesktopDBusIntrospectable *proxy,
+ gchar **out_xml_data,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_freedesktop_dbus_introspectable_call_introspect_sync (
+ OrgFreedesktopDBusIntrospectable *proxy,
+ gchar **out_xml_data,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY (org_freedesktop_dbus_introspectable_proxy_get_type ())
+#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxy))
+#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyClass))
+#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY, OrgFreedesktopDBusIntrospectableProxyClass))
+#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY))
+#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_PROXY))
+
+typedef struct _OrgFreedesktopDBusIntrospectableProxy OrgFreedesktopDBusIntrospectableProxy;
+typedef struct _OrgFreedesktopDBusIntrospectableProxyClass OrgFreedesktopDBusIntrospectableProxyClass;
+typedef struct _OrgFreedesktopDBusIntrospectableProxyPrivate OrgFreedesktopDBusIntrospectableProxyPrivate;
+
+struct _OrgFreedesktopDBusIntrospectableProxy
+{
+ /*< private >*/
+ GDBusProxy parent_instance;
+ OrgFreedesktopDBusIntrospectableProxyPrivate *priv;
+};
+
+struct _OrgFreedesktopDBusIntrospectableProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+GType org_freedesktop_dbus_introspectable_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusIntrospectableProxy, g_object_unref)
+#endif
+
+void org_freedesktop_dbus_introspectable_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_freedesktop_dbus_introspectable_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON (org_freedesktop_dbus_introspectable_skeleton_get_type ())
+#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeleton))
+#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonClass))
+#define ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON, OrgFreedesktopDBusIntrospectableSkeletonClass))
+#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON))
+#define IS_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_INTROSPECTABLE_SKELETON))
+
+typedef struct _OrgFreedesktopDBusIntrospectableSkeleton OrgFreedesktopDBusIntrospectableSkeleton;
+typedef struct _OrgFreedesktopDBusIntrospectableSkeletonClass OrgFreedesktopDBusIntrospectableSkeletonClass;
+typedef struct _OrgFreedesktopDBusIntrospectableSkeletonPrivate OrgFreedesktopDBusIntrospectableSkeletonPrivate;
+
+struct _OrgFreedesktopDBusIntrospectableSkeleton
+{
+ /*< private >*/
+ GDBusInterfaceSkeleton parent_instance;
+ OrgFreedesktopDBusIntrospectableSkeletonPrivate *priv;
+};
+
+struct _OrgFreedesktopDBusIntrospectableSkeletonClass
+{
+ GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_freedesktop_dbus_introspectable_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusIntrospectableSkeleton, g_object_unref)
+#endif
+
+OrgFreedesktopDBusIntrospectable *org_freedesktop_dbus_introspectable_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.freedesktop.DBus.Peer */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_PEER (org_freedesktop_dbus_peer_get_type ())
+#define ORG_FREEDESKTOP_DBUS_PEER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER, OrgFreedesktopDBusPeer))
+#define IS_ORG_FREEDESKTOP_DBUS_PEER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER))
+#define ORG_FREEDESKTOP_DBUS_PEER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER, OrgFreedesktopDBusPeerIface))
+
+struct _OrgFreedesktopDBusPeer;
+typedef struct _OrgFreedesktopDBusPeer OrgFreedesktopDBusPeer;
+typedef struct _OrgFreedesktopDBusPeerIface OrgFreedesktopDBusPeerIface;
+
+struct _OrgFreedesktopDBusPeerIface
+{
+ GTypeInterface parent_iface;
+
+ gboolean (*handle_get_machine_id) (
+ OrgFreedesktopDBusPeer *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_ping) (
+ OrgFreedesktopDBusPeer *object,
+ GDBusMethodInvocation *invocation);
+
+};
+
+GType org_freedesktop_dbus_peer_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *org_freedesktop_dbus_peer_interface_info (void);
+guint org_freedesktop_dbus_peer_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void org_freedesktop_dbus_peer_complete_ping (
+ OrgFreedesktopDBusPeer *object,
+ GDBusMethodInvocation *invocation);
+
+void org_freedesktop_dbus_peer_complete_get_machine_id (
+ OrgFreedesktopDBusPeer *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *machine_uuid);
+
+
+
+/* D-Bus method calls: */
+void org_freedesktop_dbus_peer_call_ping (
+ OrgFreedesktopDBusPeer *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_freedesktop_dbus_peer_call_ping_finish (
+ OrgFreedesktopDBusPeer *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_freedesktop_dbus_peer_call_ping_sync (
+ OrgFreedesktopDBusPeer *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_freedesktop_dbus_peer_call_get_machine_id (
+ OrgFreedesktopDBusPeer *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean org_freedesktop_dbus_peer_call_get_machine_id_finish (
+ OrgFreedesktopDBusPeer *proxy,
+ gchar **out_machine_uuid,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean org_freedesktop_dbus_peer_call_get_machine_id_sync (
+ OrgFreedesktopDBusPeer *proxy,
+ gchar **out_machine_uuid,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* ---- */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY (org_freedesktop_dbus_peer_proxy_get_type ())
+#define ORG_FREEDESKTOP_DBUS_PEER_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxy))
+#define ORG_FREEDESKTOP_DBUS_PEER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyClass))
+#define ORG_FREEDESKTOP_DBUS_PEER_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY, OrgFreedesktopDBusPeerProxyClass))
+#define IS_ORG_FREEDESKTOP_DBUS_PEER_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY))
+#define IS_ORG_FREEDESKTOP_DBUS_PEER_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_PROXY))
+
+typedef struct _OrgFreedesktopDBusPeerProxy OrgFreedesktopDBusPeerProxy;
+typedef struct _OrgFreedesktopDBusPeerProxyClass OrgFreedesktopDBusPeerProxyClass;
+typedef struct _OrgFreedesktopDBusPeerProxyPrivate OrgFreedesktopDBusPeerProxyPrivate;
+
+struct _OrgFreedesktopDBusPeerProxy
+{
+ /*< private >*/
+ GDBusProxy parent_instance;
+ OrgFreedesktopDBusPeerProxyPrivate *priv;
+};
+
+struct _OrgFreedesktopDBusPeerProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+GType org_freedesktop_dbus_peer_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPeerProxy, g_object_unref)
+#endif
+
+void org_freedesktop_dbus_peer_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void org_freedesktop_dbus_peer_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error);
+OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+/* ---- */
+
+#define TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON (org_freedesktop_dbus_peer_skeleton_get_type ())
+#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeleton))
+#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonClass))
+#define ORG_FREEDESKTOP_DBUS_PEER_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON, OrgFreedesktopDBusPeerSkeletonClass))
+#define IS_ORG_FREEDESKTOP_DBUS_PEER_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON))
+#define IS_ORG_FREEDESKTOP_DBUS_PEER_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_FREEDESKTOP_DBUS_PEER_SKELETON))
+
+typedef struct _OrgFreedesktopDBusPeerSkeleton OrgFreedesktopDBusPeerSkeleton;
+typedef struct _OrgFreedesktopDBusPeerSkeletonClass OrgFreedesktopDBusPeerSkeletonClass;
+typedef struct _OrgFreedesktopDBusPeerSkeletonPrivate OrgFreedesktopDBusPeerSkeletonPrivate;
+
+struct _OrgFreedesktopDBusPeerSkeleton
+{
+ /*< private >*/
+ GDBusInterfaceSkeleton parent_instance;
+ OrgFreedesktopDBusPeerSkeletonPrivate *priv;
+};
+
+struct _OrgFreedesktopDBusPeerSkeletonClass
+{
+ GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType org_freedesktop_dbus_peer_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgFreedesktopDBusPeerSkeleton, g_object_unref)
+#endif
+
+OrgFreedesktopDBusPeer *org_freedesktop_dbus_peer_skeleton_new (void);
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for org.lightmediascanner.Scanner1 */
+
+#define TYPE_SCANNER1 (scanner1_get_type ())
+#define SCANNER1(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1, Scanner1))
+#define IS_SCANNER1(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1))
+#define SCANNER1_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_SCANNER1, Scanner1Iface))
+
+struct _Scanner1;
+typedef struct _Scanner1 Scanner1;
+typedef struct _Scanner1Iface Scanner1Iface;
+
+struct _Scanner1Iface
+{
+ GTypeInterface parent_iface;
+
+
+
+ gboolean (*handle_release_write_lock) (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_request_write_lock) (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation);
+
+ gboolean (*handle_scan) (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *arg_specification);
+
+ gboolean (*handle_stop) (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation);
+
+ GVariant * (*get_categories) (Scanner1 *object);
+
+ const gchar * (*get_data_base_path) (Scanner1 *object);
+
+ gboolean (*get_is_scanning) (Scanner1 *object);
+
+ guint64 (*get_update_id) (Scanner1 *object);
+
+ gboolean (*get_write_locked) (Scanner1 *object);
+
+ void (*scan_progress) (
+ Scanner1 *object,
+ const gchar *arg_Category,
+ const gchar *arg_Path,
+ guint64 arg_UpToDate,
+ guint64 arg_Processed,
+ guint64 arg_Deleted,
+ guint64 arg_Skipped,
+ guint64 arg_Errors);
+
+};
+
+GType scanner1_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *scanner1_interface_info (void);
+guint scanner1_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void scanner1_complete_scan (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation);
+
+void scanner1_complete_stop (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation);
+
+void scanner1_complete_request_write_lock (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation);
+
+void scanner1_complete_release_write_lock (
+ Scanner1 *object,
+ GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus signal emissions functions: */
+void scanner1_emit_scan_progress (
+ Scanner1 *object,
+ const gchar *arg_Category,
+ const gchar *arg_Path,
+ guint64 arg_UpToDate,
+ guint64 arg_Processed,
+ guint64 arg_Deleted,
+ guint64 arg_Skipped,
+ guint64 arg_Errors);
+
+
+
+/* D-Bus method calls: */
+void scanner1_call_scan (
+ Scanner1 *proxy,
+ GVariant *arg_specification,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean scanner1_call_scan_finish (
+ Scanner1 *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean scanner1_call_scan_sync (
+ Scanner1 *proxy,
+ GVariant *arg_specification,
+ GCancellable *cancellable,
+ GError **error);
+
+void scanner1_call_stop (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean scanner1_call_stop_finish (
+ Scanner1 *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean scanner1_call_stop_sync (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void scanner1_call_request_write_lock (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean scanner1_call_request_write_lock_finish (
+ Scanner1 *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean scanner1_call_request_write_lock_sync (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+void scanner1_call_release_write_lock (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean scanner1_call_release_write_lock_finish (
+ Scanner1 *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean scanner1_call_release_write_lock_sync (
+ Scanner1 *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* D-Bus property accessors: */
+const gchar *scanner1_get_data_base_path (Scanner1 *object);
+gchar *scanner1_dup_data_base_path (Scanner1 *object);
+void scanner1_set_data_base_path (Scanner1 *object, const gchar *value);
+
+gboolean scanner1_get_is_scanning (Scanner1 *object);
+void scanner1_set_is_scanning (Scanner1 *object, gboolean value);
+
+gboolean scanner1_get_write_locked (Scanner1 *object);
+void scanner1_set_write_locked (Scanner1 *object, gboolean value);
+
+guint64 scanner1_get_update_id (Scanner1 *object);
+void scanner1_set_update_id (Scanner1 *object, guint64 value);
+
+GVariant *scanner1_get_categories (Scanner1 *object);
+GVariant *scanner1_dup_categories (Scanner1 *object);
+void scanner1_set_categories (Scanner1 *object, GVariant *value);
+
+
+/* ---- */
+
+#define TYPE_SCANNER1_PROXY (scanner1_proxy_get_type ())
+#define SCANNER1_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1_PROXY, Scanner1Proxy))
+#define SCANNER1_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_SCANNER1_PROXY, Scanner1ProxyClass))
+#define SCANNER1_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_SCANNER1_PROXY, Scanner1ProxyClass))
+#define IS_SCANNER1_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1_PROXY))
+#define IS_SCANNER1_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_SCANNER1_PROXY))
+
+typedef struct _Scanner1Proxy Scanner1Proxy;
+typedef struct _Scanner1ProxyClass Scanner1ProxyClass;
+typedef struct _Scanner1ProxyPrivate Scanner1ProxyPrivate;
+
+struct _Scanner1Proxy
+{
+ /*< private >*/
+ GDBusProxy parent_instance;
+ Scanner1ProxyPrivate *priv;
+};
+
+struct _Scanner1ProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+GType scanner1_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (Scanner1Proxy, g_object_unref)
+#endif
+
+void scanner1_proxy_new (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+Scanner1 *scanner1_proxy_new_finish (
+ GAsyncResult *res,
+ GError **error);
+Scanner1 *scanner1_proxy_new_sync (
+ GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void scanner1_proxy_new_for_bus (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+Scanner1 *scanner1_proxy_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error);
+Scanner1 *scanner1_proxy_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+/* ---- */
+
+#define TYPE_SCANNER1_SKELETON (scanner1_skeleton_get_type ())
+#define SCANNER1_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_SCANNER1_SKELETON, Scanner1Skeleton))
+#define SCANNER1_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_SCANNER1_SKELETON, Scanner1SkeletonClass))
+#define SCANNER1_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_SCANNER1_SKELETON, Scanner1SkeletonClass))
+#define IS_SCANNER1_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_SCANNER1_SKELETON))
+#define IS_SCANNER1_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_SCANNER1_SKELETON))
+
+typedef struct _Scanner1Skeleton Scanner1Skeleton;
+typedef struct _Scanner1SkeletonClass Scanner1SkeletonClass;
+typedef struct _Scanner1SkeletonPrivate Scanner1SkeletonPrivate;
+
+struct _Scanner1Skeleton
+{
+ /*< private >*/
+ GDBusInterfaceSkeleton parent_instance;
+ Scanner1SkeletonPrivate *priv;
+};
+
+struct _Scanner1SkeletonClass
+{
+ GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType scanner1_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (Scanner1Skeleton, g_object_unref)
+#endif
+
+Scanner1 *scanner1_skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* __LIGHTMEDIASCANNER_INTERFACE_H__ */
diff --git a/sample/mediaplayer/binding/mediaplayer-api.c b/sample/mediaplayer/binding/mediaplayer-api.c
new file mode 100644
index 0000000..e81c98a
--- /dev/null
+++ b/sample/mediaplayer/binding/mediaplayer-api.c
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <json-c/json.h>
+
+#define AFB_BINDING_VERSION 2
+#include <afb/afb-binding.h>
+
+#include "mediaplayer-manager.h"
+
+static struct afb_event media_added_event;
+static struct afb_event media_removed_event;
+
+/*
+ * @brief Subscribe for an event
+ *
+ * @param struct afb_req : an afb request structure
+ *
+ */
+static void subscribe(struct afb_req request)
+{
+ const char *value = afb_req_value(request, "value");
+ if(value) {
+ if(!strcasecmp(value, "media_added")) {
+ afb_req_subscribe(request, media_added_event);
+ } else if(!strcasecmp(value, "media_removed")) {
+ afb_req_subscribe(request, media_removed_event);
+ } else {
+ afb_req_fail(request, "failed", "Invalid event");
+ return;
+ }
+ }
+ afb_req_success(request, NULL, NULL);
+}
+
+/*
+ * @brief Unsubscribe for an event
+ *
+ * @param struct afb_req : an afb request structure
+ *
+ */
+static void unsubscribe(struct afb_req request)
+{
+ const char *value = afb_req_value(request, "value");
+ if(value) {
+ if(!strcasecmp(value, "media_added")) {
+ afb_req_unsubscribe(request, media_added_event);
+ } else if(!strcasecmp(value, "media_removed")) {
+ afb_req_unsubscribe(request, media_removed_event);
+ } else {
+ afb_req_fail(request, "failed", "Invalid event");
+ return;
+ }
+ }
+ afb_req_success(request, NULL, NULL);
+}
+
+static json_object *new_json_object_from_device(GList *list)
+{
+ json_object *jarray = json_object_new_array();
+ json_object *jresp = json_object_new_object();
+ json_object *jstring = NULL;
+ GList *l;
+
+ for (l = list; l; l = l->next)
+ {
+ jstring = json_object_new_string(l->data);
+ json_object_array_add(jarray, jstring);
+ }
+
+ if (jstring == NULL)
+ return NULL;
+
+ json_object_object_add(jresp, "Media", jarray);
+
+ return jresp;
+}
+
+static void media_results_get (struct afb_req request)
+{
+ GList *list;
+ json_object *jresp = NULL;
+
+ ListLock();
+ list = media_lightmediascanner_scan();
+ list = media_local_scan(list);
+ if (list == NULL) {
+ afb_req_fail(request, "failed", "media scan error");
+ ListUnlock();
+ return;
+ }
+
+ jresp = new_json_object_from_device(list);
+ g_list_free(list);
+ ListUnlock();
+
+ if (jresp == NULL) {
+ afb_req_fail(request, "failed", "media parsing error");
+ return;
+ }
+
+ afb_req_success(request, jresp, "Media Results Displayed");
+}
+
+static void media_broadcast_device_added (GList *list)
+{
+ json_object *jresp = new_json_object_from_device(list);
+
+ if (jresp != NULL) {
+ afb_event_push(media_added_event, jresp);
+ }
+}
+
+static void media_broadcast_device_removed (const char *obj_path)
+{
+ json_object *jresp = json_object_new_object();
+ json_object *jstring = json_object_new_string(obj_path);
+
+ json_object_object_add(jresp, "Path", jstring);
+
+ afb_event_push(media_removed_event, jresp);
+}
+
+static const struct afb_verb_v2 binding_verbs[] = {
+ { "media_result", media_results_get, NULL, "Media scan result", AFB_SESSION_CHECK },
+ { "subscribe", subscribe, NULL, "Subscribe for an event", AFB_SESSION_CHECK },
+ { "unsubscribe", unsubscribe, NULL, "Unsubscribe for an event", AFB_SESSION_CHECK },
+ { NULL }
+};
+
+static int preinit()
+{
+ Binding_RegisterCallback_t API_Callback;
+ API_Callback.binding_device_added = media_broadcast_device_added;
+ API_Callback.binding_device_removed = media_broadcast_device_removed;
+ BindingAPIRegister(&API_Callback);
+
+ return MediaPlayerManagerInit();
+}
+
+static int init()
+{
+ media_added_event = afb_daemon_make_event("media_added");
+ media_removed_event = afb_daemon_make_event("media_removed");
+
+ return 0;
+}
+
+const struct afb_binding_v2 afbBindingV2 = {
+ .api = "media-manager",
+ .specification = "mediaplayer API",
+ .preinit = preinit,
+ .init = init,
+ .verbs = binding_verbs,
+};
diff --git a/sample/mediaplayer/binding/mediaplayer-manager.c b/sample/mediaplayer/binding/mediaplayer-manager.c
new file mode 100644
index 0000000..38e5cab
--- /dev/null
+++ b/sample/mediaplayer/binding/mediaplayer-manager.c
@@ -0,0 +1,294 @@
+/*
+ * Copyright 2017 Konsulko Group
+ *
+ * Based on bluetooth-manager.c
+ * Copyright 2016 ALPS ELECTRIC CO., LTD.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <pthread.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+#include <sqlite3.h>
+
+#include "mediaplayer-manager.h"
+
+static Binding_RegisterCallback_t g_RegisterCallback = { 0 };
+static stMediaPlayerManage MediaPlayerManage = { 0 };
+
+/* ------ LOCAL FUNCTIONS --------- */
+void ListLock() {
+ g_mutex_lock(&(MediaPlayerManage.m));
+}
+
+void ListUnlock() {
+ g_mutex_unlock(&(MediaPlayerManage.m));
+}
+
+void DebugTraceSendMsg(int level, gchar* message)
+{
+#ifdef LOCAL_PRINT_DEBUG
+ switch (level)
+ {
+ case DT_LEVEL_ERROR:
+ g_print("[E]");
+ break;
+
+ case DT_LEVEL_WARNING:
+ g_print("[W]");
+ break;
+
+ case DT_LEVEL_NOTICE:
+ g_print("[N]");
+ break;
+
+ case DT_LEVEL_INFO:
+ g_print("[I]");
+ break;
+
+ case DT_LEVEL_DEBUG:
+ g_print("[D]");
+ break;
+
+ default:
+ g_print("[-]");
+ break;
+ }
+
+ g_print("%s",message);
+#endif
+
+ if (message) {
+ g_free(message);
+ }
+
+}
+
+GList* media_local_scan(GList *list)
+{
+ gchar *path = g_strconcat(g_get_home_dir(), "/", "Music", NULL);
+ gchar *tmp = NULL;
+ GDir *dir;
+
+ dir = g_dir_open(path, 0, NULL);
+ if (dir == NULL)
+ {
+ LOGE("Cannot open media path %s\n", path);
+ return list;
+ }
+
+ while ((tmp = (gchar *) g_dir_read_name(dir)) != NULL)
+ {
+ list = g_list_append(list, g_strdup_printf("file://%s/%s", path, tmp));
+ }
+
+ g_free(path);
+ g_dir_close(dir);
+
+ return list;
+}
+
+GList* media_lightmediascanner_scan(void)
+{
+ sqlite3 *conn;
+ sqlite3_stmt *res;
+ GList *list = NULL;
+ const char *tail;
+ const gchar *db_path;
+ int ret = 0;
+
+ db_path = scanner1_get_data_base_path(MediaPlayerManage.lms_proxy);
+
+ ret = sqlite3_open(db_path, &conn);
+ if (ret) {
+ LOGE("Cannot open SQLITE database: '%s'\n", db_path);
+ return NULL;
+ }
+
+ ret = sqlite3_prepare_v2(conn, SQL_QUERY, strlen(SQL_QUERY) + 1, &res, &tail);
+ if (ret) {
+ LOGE("Cannot execute query '%s'\n", SQL_QUERY);
+ return NULL;
+ }
+
+ while (sqlite3_step(res) == SQLITE_ROW) {
+ struct stat buf;
+ const char *path = (const char *) sqlite3_column_text(res, 0);
+
+ ret = stat(path, &buf);
+ if (ret)
+ continue;
+
+ list = g_list_append(list, g_strdup_printf("file://%s", path));
+ }
+
+ return list;
+}
+
+
+static void
+on_interface_proxy_properties_changed (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ const gchar* const *invalidated_properties)
+{
+ GVariantIter iter;
+ const gchar *key;
+ GVariant *subValue;
+ const gchar *pInterface;
+ GList *list;
+
+ pInterface = g_dbus_proxy_get_interface_name (proxy);
+
+ if (0 != g_strcmp0(pInterface, LIGHTMEDIASCANNER_INTERFACE))
+ return;
+
+ g_variant_iter_init (&iter, changed_properties);
+ while (g_variant_iter_next (&iter, "{&sv}", &key, &subValue))
+ {
+ gboolean val;
+ if (0 == g_strcmp0(key,"IsScanning")) {
+ g_variant_get(subValue, "b", &val);
+ if (val == TRUE)
+ return;
+ } else if (0 == g_strcmp0(key, "WriteLocked")) {
+ g_variant_get(subValue, "b", &val);
+ if (val == TRUE)
+ return;
+ }
+ }
+
+ ListLock();
+
+ list = media_lightmediascanner_scan();
+
+ if (list != NULL && g_RegisterCallback.binding_device_added)
+ g_RegisterCallback.binding_device_added(list);
+
+ g_list_free_full(list, g_free);
+
+ ListUnlock();
+}
+
+static int MediaPlayerDBusInit(void)
+{
+ GError *error = NULL;
+
+ MediaPlayerManage.lms_proxy = scanner1_proxy_new_for_bus_sync(
+ G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, LIGHTMEDIASCANNER_SERVICE,
+ LIGHTMEDIASCANNER_PATH, NULL, &error);
+
+ if (MediaPlayerManage.lms_proxy == NULL) {
+ LOGE("Create LightMediaScanner Proxy failed\n");
+ return -1;
+ }
+
+ g_signal_connect (MediaPlayerManage.lms_proxy,
+ "g-properties-changed",
+ G_CALLBACK (on_interface_proxy_properties_changed),
+ NULL);
+
+ return 0;
+}
+
+static void *media_event_loop_thread(void *unused)
+{
+ GMainLoop *loop = g_main_loop_new(NULL, FALSE);
+ int ret;
+
+ ret = MediaPlayerDBusInit();
+ if (ret == 0) {
+ LOGD("g_main_loop_run\n");
+ g_main_loop_run(loop);
+ }
+
+ g_main_loop_unref(loop);
+
+ return NULL;
+}
+
+void
+unmount_cb (GFileMonitor *mon,
+ GFile *file,
+ GFile *other_file,
+ GFileMonitorEvent event,
+ gpointer udata)
+{
+ gchar *path = g_file_get_path(file);
+ gchar *uri = g_strconcat("file://", path, NULL);
+ g_free(path);
+
+ ListLock();
+
+ if (g_RegisterCallback.binding_device_removed &&
+ event == G_FILE_MONITOR_EVENT_DELETED) {
+ g_RegisterCallback.binding_device_removed(uri);
+ }
+
+ ListUnlock();
+ g_free(uri);
+}
+
+/*
+ * Create MediaPlayer Manager Thread
+ * Note: mediaplayer-api should do MediaPlayerManagerInit() before any other
+ * API calls
+ * Returns: 0 - success or error conditions
+ */
+int MediaPlayerManagerInit() {
+ pthread_t thread_id;
+ GFile *file;
+ GFileMonitor *mon;
+
+ g_mutex_init(&(MediaPlayerManage.m));
+
+ file = g_file_new_for_path("/media");
+ g_assert(file != NULL);
+
+ mon = g_file_monitor (file, G_FILE_MONITOR_NONE, NULL, NULL);
+ g_assert(mon != NULL);
+ g_signal_connect (mon, "changed", G_CALLBACK(unmount_cb), NULL);
+
+ pthread_create(&thread_id, NULL, media_event_loop_thread, NULL);
+
+ return 0;
+}
+
+/*
+ * Register MediaPlayer Manager Callback functions
+ */
+void BindingAPIRegister(const Binding_RegisterCallback_t* pstRegisterCallback)
+{
+ if (NULL != pstRegisterCallback)
+ {
+ if (NULL != pstRegisterCallback->binding_device_added)
+ {
+ g_RegisterCallback.binding_device_added =
+ pstRegisterCallback->binding_device_added;
+ }
+
+ if (NULL != pstRegisterCallback->binding_device_removed)
+ {
+ g_RegisterCallback.binding_device_removed =
+ pstRegisterCallback->binding_device_removed;
+ }
+ }
+}
diff --git a/sample/mediaplayer/binding/mediaplayer-manager.h b/sample/mediaplayer/binding/mediaplayer-manager.h
new file mode 100644
index 0000000..5864867
--- /dev/null
+++ b/sample/mediaplayer/binding/mediaplayer-manager.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2017 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MEDIAPLAYER_MANAGER_H
+#define MEDIAPLAYER_MANAGER_H
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+
+#include "lightmediascanner_interface.h"
+
+ /* Debug Trace Level */
+#define DT_LEVEL_ERROR (1 << 1)
+#define DT_LEVEL_WARNING (1 << 2)
+#define DT_LEVEL_NOTICE (1 << 3)
+#define DT_LEVEL_INFO (1 << 4)
+#define DT_LEVEL_DEBUG (1 << 5)
+//#define _DEBUG
+
+#define LOGE(fmt, args...) \
+ DebugTraceSendMsg(DT_LEVEL_ERROR, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+#define LOGW(fmt, args...) \
+ DebugTraceSendMsg(DT_LEVEL_WARNING, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+#define LOGN(fmt, args...) \
+ DebugTraceSendMsg(DT_LEVEL_NOTICE, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+#define LOGI(fmt, args...) \
+ DebugTraceSendMsg(DT_LEVEL_INFO, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+#define LOGD(fmt, args...) \
+ DebugTraceSendMsg(DT_LEVEL_DEBUG, g_strdup_printf("[%d:%s]" fmt, __LINE__, __FUNCTION__, ## args))
+
+#ifdef _DEBUG
+ #define _DEBUG_PRINT_DBUS
+ #define LOCAL_PRINT_DEBUG
+#endif
+
+#ifdef LOCAL_PRINT_DEBUG
+#define D_PRINTF(fmt, args...) \
+ g_print("[DEBUG][%d:%s]"fmt, __LINE__, __FUNCTION__, ## args)
+#define D_PRINTF_RAW(fmt, args...) \
+ g_print(""fmt, ## args)
+#else
+#define D_PRINTF(fmt, args...)
+#define D_PRINTF_RAW(fmt, args...)
+#endif /* ifdef _DEBUG */
+
+void DebugTraceSendMsg(int level, gchar* message);
+
+//service
+#define AGENT_SERVICE "org.agent"
+
+//remote service
+#define LIGHTMEDIASCANNER_SERVICE "org.lightmediascanner"
+
+//object path
+#define LIGHTMEDIASCANNER_PATH "/org/lightmediascanner/Scanner1"
+
+//interface
+#define LIGHTMEDIASCANNER_INTERFACE "org.lightmediascanner.Scanner1"
+#define UDISKS_INTERFACE "org.freedesktop.UDisks"
+#define FREEDESKTOP_PROPERTIES "org.freedesktop.DBus.Properties"
+
+//sqlite
+#define SQL_QUERY "SELECT files.path FROM files LEFT JOIN audios " \
+ "WHERE audios.id = files.id ORDER BY " \
+ "audios.artist_id, audios.album_id, audios.trackno"
+
+typedef struct {
+ GList *list;
+ GMutex m;
+ Scanner1 *lms_proxy;
+} stMediaPlayerManage;
+
+typedef struct tagBinding_RegisterCallback
+{
+ void (*binding_device_added)(GList *list);
+ void (*binding_device_removed)(const char *obj_path);
+} Binding_RegisterCallback_t;
+
+/* ------ PUBLIC PLUGIN FUNCTIONS --------- */
+void BindingAPIRegister(const Binding_RegisterCallback_t* pstRegisterCallback);
+int MediaPlayerManagerInit(void);
+
+void ListLock();
+void ListUnlock();
+
+GList* media_lightmediascanner_scan(void);
+GList* media_local_scan(GList *list);
+
+#endif