mirror of
https://gitlab.com/mateslackbuilds/msb.git
synced 2024-12-25 21:59:36 +01:00
libunique: Rebuilt.
Enable dbus and introspection feature. Remove no longer needed patches. Signed-off-by: Willy Sudiarto Raharjo <willysr@slackware-id.org>
This commit is contained in:
parent
3ef781837a
commit
b2a4b4a2d2
3 changed files with 4 additions and 587 deletions
|
@ -1,50 +0,0 @@
|
||||||
From 9df132a70d54b768a8e1d0335d24b85ac9b3fb76 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Emmanuele Bassi <ebassi@linux.intel.com>
|
|
||||||
Date: Sun, 27 Mar 2011 08:42:22 +0000
|
|
||||||
Subject: Remove compiler warnings
|
|
||||||
|
|
||||||
(cherry picked from commit f791ed16b19dddc7fbaf90d8f797520e67883021)
|
|
||||||
|
|
||||||
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
|
|
||||||
---
|
|
||||||
diff --git a/unique/dbus/uniquebackend-dbus.c b/unique/dbus/uniquebackend-dbus.c
|
|
||||||
index 3ae1bed..69faa00 100644
|
|
||||||
--- a/unique/dbus/uniquebackend-dbus.c
|
|
||||||
+++ b/unique/dbus/uniquebackend-dbus.c
|
|
||||||
@@ -84,7 +84,6 @@ unique_backend_dbus_register_proxy (UniqueBackendDBus *backend_dbus)
|
|
||||||
static gboolean
|
|
||||||
unique_backend_dbus_request_name (UniqueBackend *backend)
|
|
||||||
{
|
|
||||||
- UniqueBackendDBus *backend_dbus;
|
|
||||||
const gchar *name;
|
|
||||||
DBusGConnection *connection;
|
|
||||||
DBusGProxy *proxy;
|
|
||||||
@@ -97,8 +96,6 @@ unique_backend_dbus_request_name (UniqueBackend *backend)
|
|
||||||
if (!connection)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
- backend_dbus = UNIQUE_BACKEND_DBUS (backend);
|
|
||||||
-
|
|
||||||
retval = TRUE;
|
|
||||||
name = unique_backend_get_name (backend);
|
|
||||||
g_assert (name != NULL);
|
|
||||||
@@ -207,10 +204,14 @@ unique_backend_dbus_send_message (UniqueBackend *backend,
|
|
||||||
cmd, data, time_,
|
|
||||||
&resp,
|
|
||||||
&error);
|
|
||||||
- if (error)
|
|
||||||
+ if (!res)
|
|
||||||
{
|
|
||||||
- g_warning ("Error while sending message: %s", error->message);
|
|
||||||
- g_error_free (error);
|
|
||||||
+ if (error)
|
|
||||||
+ {
|
|
||||||
+ g_warning ("Error while sending message: %s", error->message);
|
|
||||||
+ g_error_free (error);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
g_free (cmd);
|
|
||||||
|
|
||||||
return UNIQUE_RESPONSE_INVALID;
|
|
||||||
--
|
|
||||||
cgit v0.9
|
|
529
deps/libunique/libunique-1.1.6-gdbus.patch
vendored
529
deps/libunique/libunique-1.1.6-gdbus.patch
vendored
|
@ -1,529 +0,0 @@
|
||||||
From 01066039529c0181f231325476bb4823c16a2aea Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Persch <chpe@gnome.org>
|
|
||||||
Date: Sat, 15 May 2010 17:47:45 +0000
|
|
||||||
Subject: Add GDBus backend
|
|
||||||
|
|
||||||
Add backend using GDBus, the new D-BUS binding in GIO 2.25.
|
|
||||||
|
|
||||||
Bug #618723.
|
|
||||||
---
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index bc3163a..b6a4221 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -116,6 +116,19 @@ AS_IF([test "x$have_dbus" = "xyes"],
|
|
||||||
|
|
||||||
AM_CONDITIONAL([HAVE_DBUS], [test "x$have_dbus" = "xyes"])
|
|
||||||
|
|
||||||
+dnl GDBus backend
|
|
||||||
+dnl This is the default backend if GIO is recent enough
|
|
||||||
+m4_define([gdbus_gio_required],[2.25.7])
|
|
||||||
+PKG_CHECK_MODULES([GDBUS],[gio-2.0 >= gdbus_gio_required],[have_gdbus=yes],[have_gdbus=no])
|
|
||||||
+
|
|
||||||
+AS_IF([test "x$have_gdbus" = "xyes"],
|
|
||||||
+ [
|
|
||||||
+ AC_DEFINE([HAVE_GDBUS],[1],[Define if GDBus backend is enabled])
|
|
||||||
+ ]
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+AM_CONDITIONAL([HAVE_GDBUS],[test "$have_gdbus" = "yes"])
|
|
||||||
+
|
|
||||||
dnl Bacon backend
|
|
||||||
dnl This is the fallback backend, so we *need* these headers and functions
|
|
||||||
dnl even if we end up using D-Bus
|
|
||||||
@@ -146,7 +159,13 @@ AM_CONDITIONAL([HAVE_BACON], [test "x$have_bacon" = "xyes"])
|
|
||||||
|
|
||||||
dnl Choose the default backend
|
|
||||||
AC_MSG_CHECKING([for default IPC mechanism])
|
|
||||||
-AS_IF([test "x$have_dbus" = "xyes"],
|
|
||||||
+AS_IF([test "x$have_gdbus" = "xyes"],
|
|
||||||
+ [
|
|
||||||
+ UNIQUE_DEFAULT_BACKEND=gdbus
|
|
||||||
+ AC_MSG_RESULT([GDBus])
|
|
||||||
+ ],
|
|
||||||
+
|
|
||||||
+ [test "x$have_dbus" = "xyes"],
|
|
||||||
[
|
|
||||||
UNIQUE_DEFAULT_BACKEND=dbus
|
|
||||||
AC_MSG_RESULT([D-Bus])
|
|
||||||
@@ -243,6 +262,7 @@ AC_CONFIG_FILES([
|
|
||||||
unique/uniqueversion.h
|
|
||||||
unique/bacon/Makefile
|
|
||||||
unique/dbus/Makefile
|
|
||||||
+ unique/gdbus/Makefile
|
|
||||||
tests/Makefile
|
|
||||||
po/Makefile.in
|
|
||||||
])
|
|
||||||
@@ -261,6 +281,7 @@ Configuration:
|
|
||||||
Backends:
|
|
||||||
Unix Domain Socket: $have_bacon
|
|
||||||
D-BUS: $have_dbus
|
|
||||||
+ GDBus: $have_gdbus
|
|
||||||
|
|
||||||
Default backend: $UNIQUE_DEFAULT_BACKEND
|
|
||||||
"
|
|
||||||
diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am
|
|
||||||
index 3172588..2c1dbf4 100644
|
|
||||||
--- a/doc/reference/Makefile.am
|
|
||||||
+++ b/doc/reference/Makefile.am
|
|
||||||
@@ -50,7 +50,8 @@ IGNORE_HFILES = \
|
|
||||||
uniquemarshal.h \
|
|
||||||
stamp-uniquemarshal.h \
|
|
||||||
bacon \
|
|
||||||
- dbus
|
|
||||||
+ dbus \
|
|
||||||
+ gdbus
|
|
||||||
|
|
||||||
EXTRA_HFILES =
|
|
||||||
|
|
||||||
diff --git a/unique/Makefile.am b/unique/Makefile.am
|
|
||||||
index 6475a87..8f0b7ba 100644
|
|
||||||
--- a/unique/Makefile.am
|
|
||||||
+++ b/unique/Makefile.am
|
|
||||||
@@ -12,7 +12,11 @@ if HAVE_DBUS
|
|
||||||
SUBDIRS += dbus
|
|
||||||
endif
|
|
||||||
|
|
||||||
-DIST_SUBDIRS = bacon dbus
|
|
||||||
+if HAVE_GDBUS
|
|
||||||
+SUBDIRS += gdbus
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+DIST_SUBDIRS = bacon dbus gdbus
|
|
||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)
|
|
||||||
|
|
||||||
@@ -72,6 +76,10 @@ if HAVE_DBUS
|
|
||||||
unique_backend_libs += $(top_builddir)/unique/dbus/libunique-dbus.la
|
|
||||||
endif
|
|
||||||
|
|
||||||
+if HAVE_GDBUS
|
|
||||||
+unique_backend_libs += $(top_builddir)/unique/gdbus/libunique-gdbus.la
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
uniquedir = $(includedir)/unique-1.0/unique
|
|
||||||
unique_HEADERS = \
|
|
||||||
$(unique_sources_h) \
|
|
||||||
diff --git a/unique/gdbus/.gitignore b/unique/gdbus/.gitignore
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..c7e22c3
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/unique/gdbus/.gitignore
|
|
||||||
@@ -0,0 +1,2 @@
|
|
||||||
+libunique_gdbus_la-uniquebackend-gdbus.lo
|
|
||||||
+libunique-gdbus.la
|
|
||||||
diff --git a/unique/gdbus/Makefile.am b/unique/gdbus/Makefile.am
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..e10637d
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/unique/gdbus/Makefile.am
|
|
||||||
@@ -0,0 +1,24 @@
|
|
||||||
+include $(top_srcdir)/build/autotools/Makefile.am.silent
|
|
||||||
+
|
|
||||||
+noinst_LTLIBRARIES = libunique-gdbus.la
|
|
||||||
+
|
|
||||||
+libunique_gdbus_la_SOURCES = \
|
|
||||||
+ uniquebackend-gdbus.h \
|
|
||||||
+ uniquebackend-gdbus.c
|
|
||||||
+
|
|
||||||
+libunique_gdbus_la_PPCFLAGS = \
|
|
||||||
+ -DG_LOG_DOMAIN=\"Unique-GDBus\" \
|
|
||||||
+ -DG_DISABLE_SINGLE_INCLUDES \
|
|
||||||
+ -I$(top_srcdir) \
|
|
||||||
+ $(AM_CPPFLAGS)
|
|
||||||
+
|
|
||||||
+libunique_gdbus_la_CFLAGS = \
|
|
||||||
+ $(UNIQUE_CFLAGS) \
|
|
||||||
+ $(UNIQUE_DEBUG_CFLAGS) \
|
|
||||||
+ $(MAINTAINER_CFLAGS) \
|
|
||||||
+ $(GDBUS_CFLAGS) \
|
|
||||||
+ $(AM_CFLAGS)
|
|
||||||
+
|
|
||||||
+libunique_gdbus_la_LIBADD = \
|
|
||||||
+ $(UNIQUE_LIBS) \
|
|
||||||
+ $(GDBUS_LIBS)
|
|
||||||
diff --git a/unique/gdbus/uniquebackend-gdbus.c b/unique/gdbus/uniquebackend-gdbus.c
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..14d54a9
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/unique/gdbus/uniquebackend-gdbus.c
|
|
||||||
@@ -0,0 +1,303 @@
|
|
||||||
+/* Unique - Single Instance application library
|
|
||||||
+ * uniquebackend-gdbus.c: GDBus implementation of UniqueBackend
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2007 Emmanuele Bassi <ebassi@o-hand.com>
|
|
||||||
+ * Copyright <20> 2010 Christian Persch
|
|
||||||
+ *
|
|
||||||
+ * This library is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of the GNU Lesser General Public
|
|
||||||
+ * License as published by the Free Software Foundation; either
|
|
||||||
+ * version 2.1 of the License, or (at your option) any later version.
|
|
||||||
+ *
|
|
||||||
+ * This library is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
+ * Lesser General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU Lesser General Public
|
|
||||||
+ * License along with this library; if not, write to the Free Software
|
|
||||||
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
+ * 02110-1301 USA
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifdef HAVE_CONFIG_H
|
|
||||||
+#include "config.h"
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#include <gio/gio.h>
|
|
||||||
+#include <gdk/gdk.h>
|
|
||||||
+
|
|
||||||
+#include "../uniqueinternals.h"
|
|
||||||
+#include "uniquebackend-gdbus.h"
|
|
||||||
+
|
|
||||||
+struct _UniqueBackendGDBus
|
|
||||||
+{
|
|
||||||
+ UniqueBackend parent_instance;
|
|
||||||
+
|
|
||||||
+ GDBusConnection *connection;
|
|
||||||
+ guint registration_id;
|
|
||||||
+ guint owner_id;
|
|
||||||
+ gboolean owns_name;
|
|
||||||
+ GMainLoop *loop;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+struct _UniqueBackendGDBusClass
|
|
||||||
+{
|
|
||||||
+ UniqueBackendClass parent_class;
|
|
||||||
+ GDBusNodeInfo *introspection_data;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+G_DEFINE_TYPE (UniqueBackendGDBus, unique_backend_gdbus, UNIQUE_TYPE_BACKEND);
|
|
||||||
+
|
|
||||||
+static const char introspection_xml[] =
|
|
||||||
+ "<node name='/'>"
|
|
||||||
+ "<interface name='org.gtk.UniqueApp'>"
|
|
||||||
+ "<method name='SendMessage'>"
|
|
||||||
+ "<arg name='command' type='s' direction='in'/>"
|
|
||||||
+ "<arg name='message' type='(suuus)' direction='in'/>"
|
|
||||||
+ "<arg name='time' type='u' direction='in'/>"
|
|
||||||
+ "<arg name='response' type='s' direction='out'/>"
|
|
||||||
+ "</method>"
|
|
||||||
+ "</interface>"
|
|
||||||
+ "</node>";
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+method_call_cb (GDBusConnection *connection,
|
|
||||||
+ const gchar *sender,
|
|
||||||
+ const gchar *object_path,
|
|
||||||
+ const gchar *interface_name,
|
|
||||||
+ const gchar *method_name,
|
|
||||||
+ GVariant *parameters,
|
|
||||||
+ GDBusMethodInvocation *invocation,
|
|
||||||
+ gpointer user_data)
|
|
||||||
+{
|
|
||||||
+ if (g_strcmp0 (interface_name, "org.gtk.UniqueApp") != 0 ||
|
|
||||||
+ g_strcmp0 (object_path, "/Factory") != 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ if (g_strcmp0 (method_name, "SendMessage") == 0)
|
|
||||||
+ {
|
|
||||||
+ UniqueBackend *backend = UNIQUE_BACKEND (user_data);
|
|
||||||
+ const gchar *command_str, *data, *startup_id;
|
|
||||||
+ guint len, screen_num, workspace, time_;
|
|
||||||
+ UniqueMessageData message_data;
|
|
||||||
+ gint command;
|
|
||||||
+ UniqueResponse response;
|
|
||||||
+ GdkDisplay *display;
|
|
||||||
+
|
|
||||||
+ g_variant_get (parameters,
|
|
||||||
+ "(&s(&suuu&s)u)",
|
|
||||||
+ &command_str,
|
|
||||||
+ &data, &len, &screen_num, &workspace, &startup_id,
|
|
||||||
+ &time_);
|
|
||||||
+
|
|
||||||
+ command = unique_command_from_string (backend->parent, command_str);
|
|
||||||
+ if (command == 0)
|
|
||||||
+ {
|
|
||||||
+ g_dbus_method_invocation_return_error (invocation,
|
|
||||||
+ G_DBUS_ERROR,
|
|
||||||
+ G_DBUS_ERROR_INVALID_ARGS,
|
|
||||||
+ "Invalid command `%s' received",
|
|
||||||
+ command_str);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ display = gdk_display_get_default ();
|
|
||||||
+
|
|
||||||
+ message_data.data = len > 0 ? (guchar *) data : NULL;
|
|
||||||
+ message_data.length = (gint) len;
|
|
||||||
+ message_data.workspace = workspace;
|
|
||||||
+ message_data.startup_id = (char *) startup_id;
|
|
||||||
+ if (screen_num >= 0 && screen_num < gdk_display_get_n_screens (display))
|
|
||||||
+ message_data.screen = gdk_display_get_screen (display, screen_num);
|
|
||||||
+ else
|
|
||||||
+ message_data.screen = gdk_screen_get_default ();
|
|
||||||
+
|
|
||||||
+ response = unique_app_emit_message_received (backend->parent, command, &message_data, time_);
|
|
||||||
+
|
|
||||||
+ g_dbus_method_invocation_return_value (invocation,
|
|
||||||
+ g_variant_new ("(s)", unique_response_to_string (response)));
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+name_acquired_cb (GDBusConnection *connection,
|
|
||||||
+ const gchar *name,
|
|
||||||
+ gpointer user_data)
|
|
||||||
+{
|
|
||||||
+ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (user_data);
|
|
||||||
+
|
|
||||||
+ backend_gdbus->owns_name = TRUE;
|
|
||||||
+ if (backend_gdbus->loop && g_main_loop_is_running (backend_gdbus->loop))
|
|
||||||
+ g_main_loop_quit (backend_gdbus->loop);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+name_lost_cb (GDBusConnection *connection,
|
|
||||||
+ const gchar *name,
|
|
||||||
+ gpointer user_data)
|
|
||||||
+{
|
|
||||||
+ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (user_data);
|
|
||||||
+
|
|
||||||
+ backend_gdbus->owns_name = FALSE;
|
|
||||||
+ if (backend_gdbus->loop && g_main_loop_is_running (backend_gdbus->loop))
|
|
||||||
+ g_main_loop_quit (backend_gdbus->loop);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const GDBusInterfaceVTable interface_vtable = {
|
|
||||||
+ method_call_cb,
|
|
||||||
+ NULL,
|
|
||||||
+ NULL
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static gboolean
|
|
||||||
+unique_backend_gdbus_request_name (UniqueBackend *backend)
|
|
||||||
+{
|
|
||||||
+ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (backend);
|
|
||||||
+ UniqueBackendGDBusClass *klass = UNIQUE_BACKEND_GDBUS_GET_CLASS (backend);
|
|
||||||
+ GError *error;
|
|
||||||
+
|
|
||||||
+ error = NULL;
|
|
||||||
+ backend_gdbus->connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
|
|
||||||
+ if (!backend_gdbus->connection)
|
|
||||||
+ {
|
|
||||||
+ g_warning ("Unable to open a connection to the session bus: %s",
|
|
||||||
+ error->message);
|
|
||||||
+ g_error_free (error);
|
|
||||||
+
|
|
||||||
+ return FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ backend_gdbus->registration_id =
|
|
||||||
+ g_dbus_connection_register_object (backend_gdbus->connection,
|
|
||||||
+ "/Factory",
|
|
||||||
+ klass->introspection_data->interfaces[0],
|
|
||||||
+ &interface_vtable,
|
|
||||||
+ backend, NULL,
|
|
||||||
+ &error);
|
|
||||||
+ if (backend_gdbus->registration_id == 0)
|
|
||||||
+ {
|
|
||||||
+ g_warning ("Unable to register object with the session bus: %s",
|
|
||||||
+ error->message);
|
|
||||||
+ g_error_free (error);
|
|
||||||
+
|
|
||||||
+ return FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ backend_gdbus->owns_name = FALSE;
|
|
||||||
+
|
|
||||||
+ backend_gdbus->owner_id =
|
|
||||||
+ g_bus_own_name_on_connection (backend_gdbus->connection,
|
|
||||||
+ unique_backend_get_name (backend),
|
|
||||||
+ G_BUS_NAME_OWNER_FLAGS_NONE,
|
|
||||||
+ name_acquired_cb,
|
|
||||||
+ name_lost_cb,
|
|
||||||
+ backend, NULL);
|
|
||||||
+
|
|
||||||
+ backend_gdbus->loop = g_main_loop_new (NULL, FALSE);
|
|
||||||
+ g_main_loop_run (backend_gdbus->loop);
|
|
||||||
+ g_main_loop_unref (backend_gdbus->loop);
|
|
||||||
+ backend_gdbus->loop = NULL;
|
|
||||||
+
|
|
||||||
+ return backend_gdbus->owns_name;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static UniqueResponse
|
|
||||||
+unique_backend_gdbus_send_message (UniqueBackend *backend,
|
|
||||||
+ gint command,
|
|
||||||
+ UniqueMessageData *message_data,
|
|
||||||
+ guint time_)
|
|
||||||
+{
|
|
||||||
+ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (backend);
|
|
||||||
+ GVariantBuilder builder;
|
|
||||||
+ GVariant *result;
|
|
||||||
+ const gchar *command_str, *resp;
|
|
||||||
+ UniqueResponse response;
|
|
||||||
+ GError *error;
|
|
||||||
+
|
|
||||||
+ command_str = unique_command_to_string (backend->parent, command);
|
|
||||||
+
|
|
||||||
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("(s(suuus)u)"));
|
|
||||||
+ g_variant_builder_add (&builder, "s", command_str ? command_str : "");
|
|
||||||
+ g_variant_builder_open (&builder, G_VARIANT_TYPE ("(suuus)"));
|
|
||||||
+ g_variant_builder_add (&builder, "s", message_data->data ? (char *) message_data->data : "");
|
|
||||||
+ g_variant_builder_add (&builder, "u", (guint) message_data->length);
|
|
||||||
+ g_variant_builder_add (&builder, "u", (guint) gdk_screen_get_number (message_data->screen));
|
|
||||||
+ g_variant_builder_add (&builder, "u", (guint) message_data->workspace);
|
|
||||||
+ g_variant_builder_add (&builder, "s", message_data->startup_id ? message_data->startup_id : "");
|
|
||||||
+ g_variant_builder_close (&builder);
|
|
||||||
+ g_variant_builder_add (&builder, "u", time_);
|
|
||||||
+
|
|
||||||
+ error = NULL;
|
|
||||||
+ result = g_dbus_connection_call_sync (backend_gdbus->connection,
|
|
||||||
+ unique_backend_get_name (backend),
|
|
||||||
+ "/Factory",
|
|
||||||
+ "org.gtk.UniqueApp",
|
|
||||||
+ "SendMessage",
|
|
||||||
+ g_variant_builder_end (&builder),
|
|
||||||
+ G_VARIANT_TYPE ("(s)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NO_AUTO_START,
|
|
||||||
+ -1,
|
|
||||||
+ NULL,
|
|
||||||
+ &error);
|
|
||||||
+ if (error)
|
|
||||||
+ {
|
|
||||||
+ g_warning ("Error while sending message: %s", error->message);
|
|
||||||
+ g_error_free (error);
|
|
||||||
+
|
|
||||||
+ return UNIQUE_RESPONSE_INVALID;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (result, "(&s)", &resp);
|
|
||||||
+ response = unique_response_from_string (resp);
|
|
||||||
+ g_variant_unref (result);
|
|
||||||
+
|
|
||||||
+ return response;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+unique_backend_gdbus_dispose (GObject *gobject)
|
|
||||||
+{
|
|
||||||
+ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (gobject);
|
|
||||||
+
|
|
||||||
+ if (backend_gdbus->owner_id != 0)
|
|
||||||
+ {
|
|
||||||
+ g_bus_unown_name (backend_gdbus->owner_id);
|
|
||||||
+ backend_gdbus->owner_id = 0;
|
|
||||||
+ }
|
|
||||||
+ if (backend_gdbus->registration_id != 0)
|
|
||||||
+ {
|
|
||||||
+ g_assert (backend_gdbus->connection != NULL);
|
|
||||||
+ g_dbus_connection_unregister_object (backend_gdbus->connection,
|
|
||||||
+ backend_gdbus->registration_id);
|
|
||||||
+ backend_gdbus->registration_id = 0;
|
|
||||||
+ }
|
|
||||||
+ if (backend_gdbus->connection)
|
|
||||||
+ {
|
|
||||||
+ g_object_unref (backend_gdbus->connection);
|
|
||||||
+ backend_gdbus->connection = NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ G_OBJECT_CLASS (unique_backend_gdbus_parent_class)->dispose (gobject);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+unique_backend_gdbus_class_init (UniqueBackendGDBusClass *klass)
|
|
||||||
+{
|
|
||||||
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
|
||||||
+ UniqueBackendClass *backend_class = UNIQUE_BACKEND_CLASS (klass);
|
|
||||||
+
|
|
||||||
+ gobject_class->dispose = unique_backend_gdbus_dispose;
|
|
||||||
+
|
|
||||||
+ backend_class->request_name = unique_backend_gdbus_request_name;
|
|
||||||
+ backend_class->send_message = unique_backend_gdbus_send_message;
|
|
||||||
+
|
|
||||||
+ klass->introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
|
|
||||||
+ g_assert (klass->introspection_data != NULL);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+unique_backend_gdbus_init (UniqueBackendGDBus *backend)
|
|
||||||
+{
|
|
||||||
+}
|
|
||||||
diff --git a/unique/gdbus/uniquebackend-gdbus.h b/unique/gdbus/uniquebackend-gdbus.h
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..41eb6e5
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/unique/gdbus/uniquebackend-gdbus.h
|
|
||||||
@@ -0,0 +1,43 @@
|
|
||||||
+/* Unique - Single Instance application library
|
|
||||||
+ * uniquebackend-gdbus.c: GDBus implementation of UniqueBackend
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2007 Emmanuele Bassi <ebassi@o-hand.com>
|
|
||||||
+ *
|
|
||||||
+ * This library is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of the GNU Lesser General Public
|
|
||||||
+ * License as published by the Free Software Foundation; either
|
|
||||||
+ * version 2.1 of the License, or (at your option) any later version.
|
|
||||||
+ *
|
|
||||||
+ * This library is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
+ * Lesser General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU Lesser General Public
|
|
||||||
+ * License along with this library; if not, write to the Free Software
|
|
||||||
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
+ * 02110-1301 USA
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifndef __UNIQUE_BACKEND_GDBUS_H__
|
|
||||||
+#define __UNIQUE_BACKEND_GDBUS_H__
|
|
||||||
+
|
|
||||||
+#include <unique/uniquebackend.h>
|
|
||||||
+
|
|
||||||
+G_BEGIN_DECLS
|
|
||||||
+
|
|
||||||
+#define UNIQUE_TYPE_BACKEND_GDBUS (unique_backend_gdbus_get_type ())
|
|
||||||
+#define UNIQUE_BACKEND_GDBUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNIQUE_TYPE_BACKEND_GDBUS, UniqueBackendGDBus))
|
|
||||||
+#define UNIQUE_IS_BACKEND_GDBUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNIQUE_TYPE_BACKEND_GDBUS))
|
|
||||||
+#define UNIQUE_BACKEND_GDBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNIQUE_TYPE_BACKEND_GDBUS, UniqueBackendGDBusClass))
|
|
||||||
+#define UNIQUE_IS_BACKEND_GDBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNIQUE_TYPE_BACKEND_GDBUS))
|
|
||||||
+#define UNIQUE_BACKEND_GDBUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNIQUE_TYPE_BACKEND_GDBUS, UniqueBackendGDBusClass))
|
|
||||||
+
|
|
||||||
+typedef struct _UniqueBackendGDBus UniqueBackendGDBus;
|
|
||||||
+typedef struct _UniqueBackendGDBusClass UniqueBackendGDBusClass;
|
|
||||||
+
|
|
||||||
+GType unique_backend_gdbus_get_type (void) G_GNUC_CONST;
|
|
||||||
+
|
|
||||||
+G_END_DECLS
|
|
||||||
+
|
|
||||||
+#endif /* __UNIQUE_BACKEND_GDBUS_H__ */
|
|
||||||
diff --git a/unique/uniquebackend.c b/unique/uniquebackend.c
|
|
||||||
index 18a0c45..a76e42e 100644
|
|
||||||
--- a/unique/uniquebackend.c
|
|
||||||
+++ b/unique/uniquebackend.c
|
|
||||||
@@ -298,6 +298,9 @@ unique_backend_send_message (UniqueBackend *backend,
|
|
||||||
#ifdef HAVE_DBUS
|
|
||||||
#include "dbus/uniquebackend-dbus.h"
|
|
||||||
#endif
|
|
||||||
+#ifdef HAVE_GDBUS
|
|
||||||
+#include "gdbus/uniquebackend-gdbus.h"
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* unique_backend_create:
|
|
||||||
@@ -329,6 +332,10 @@ unique_backend_create (void)
|
|
||||||
if (strcmp (backend_name, "dbus") == 0)
|
|
||||||
backend_gtype = unique_backend_dbus_get_type ();
|
|
||||||
#endif /* HAVE_DBUS */
|
|
||||||
+#ifdef HAVE_GDBUS
|
|
||||||
+ if (strcmp (backend_name, "gdbus") == 0)
|
|
||||||
+ backend_gtype = unique_backend_gdbus_get_type ();
|
|
||||||
+#endif /* HAVE_GDBUS */
|
|
||||||
#if !defined(HAVE_BACON) && !defined(HAVE_DBUS)
|
|
||||||
#error Need either bacon or dbus
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
cgit v0.8.3.1
|
|
12
deps/libunique/libunique.SlackBuild
vendored
12
deps/libunique/libunique.SlackBuild
vendored
|
@ -3,7 +3,7 @@
|
||||||
# Slackware build script for libunique
|
# Slackware build script for libunique
|
||||||
|
|
||||||
# Copyright 2013 Chess Griffin <chess.griffin@gmail.com> Raleigh, NC
|
# Copyright 2013 Chess Griffin <chess.griffin@gmail.com> Raleigh, NC
|
||||||
# Copyright 2013-2014 Willy Sudiarto Raharjo <willysr@slackware-id.org>
|
# Copyright 2013-2016 Willy Sudiarto Raharjo <willysr@slackware-id.org>
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use of this script, with or without modification, is
|
# Redistribution and use of this script, with or without modification, is
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
PRGNAM=libunique
|
PRGNAM=libunique
|
||||||
VERSION=${VERSION:-1.1.6}
|
VERSION=${VERSION:-1.1.6}
|
||||||
BUILD=${BUILD:-1}
|
BUILD=${BUILD:-2}
|
||||||
TAG=${TAG:-_msb}
|
TAG=${TAG:-_msb}
|
||||||
|
|
||||||
if [ -z "$ARCH" ]; then
|
if [ -z "$ARCH" ]; then
|
||||||
|
@ -38,8 +38,6 @@ fi
|
||||||
|
|
||||||
wget -c http://download.gnome.org/sources/$PRGNAM/1.1/libunique-1.1.6.tar.bz2
|
wget -c http://download.gnome.org/sources/$PRGNAM/1.1/libunique-1.1.6.tar.bz2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CWD=$(pwd)
|
CWD=$(pwd)
|
||||||
TMP=${TMP:-/tmp/msb}
|
TMP=${TMP:-/tmp/msb}
|
||||||
PKG=$TMP/package-$PRGNAM
|
PKG=$TMP/package-$PRGNAM
|
||||||
|
@ -74,9 +72,7 @@ find -L . \
|
||||||
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
|
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
|
||||||
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
|
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
|
||||||
|
|
||||||
#patch -p1 < $CWD/libunique-1.1.6-compiler-warnings.patch
|
|
||||||
patch -p1 < $CWD/libunique-1.1.6-G_CONST_RETURN.patch
|
patch -p1 < $CWD/libunique-1.1.6-G_CONST_RETURN.patch
|
||||||
#patch -p1 < $CWD/libunique-1.1.6-gdbus.patch
|
|
||||||
|
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
CFLAGS="$SLKCFLAGS" \
|
CFLAGS="$SLKCFLAGS" \
|
||||||
|
@ -89,9 +85,9 @@ CXXFLAGS="$SLKCFLAGS" \
|
||||||
--mandir=/usr/man \
|
--mandir=/usr/man \
|
||||||
--docdir=/usr/doc/$PRGNAM-$VERSION \
|
--docdir=/usr/doc/$PRGNAM-$VERSION \
|
||||||
--disable-static \
|
--disable-static \
|
||||||
--enable-dbus=no \
|
--enable-dbus=yes \
|
||||||
--enable-bacon=yes \
|
--enable-bacon=yes \
|
||||||
--enable-introspection=no \
|
--enable-introspection=yes \
|
||||||
--disable-dependency-tracking \
|
--disable-dependency-tracking \
|
||||||
--with-x \
|
--with-x \
|
||||||
--enable-debug=no \
|
--enable-debug=no \
|
||||||
|
|
Loading…
Reference in a new issue