mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-31 20:02:42 +00:00
Make closing dbus buses actually work
This commit is contained in:
commit
fa8ac13cba
@ -1,3 +1,11 @@
|
|||||||
|
2014-02-16 Daniel Colascione <dancol@dancol.org>
|
||||||
|
|
||||||
|
* dbusbind.c (xd_lisp_dbus_to_dbus): New function.
|
||||||
|
(xd_get_connection_address): Use it.
|
||||||
|
(xd_close_bus): Use xd_lisp_dbus_to_dbus to instead of
|
||||||
|
xd_get_connection_address because the latter signals if the bus
|
||||||
|
we're trying to close is already disconnected.
|
||||||
|
|
||||||
2014-02-13 Eli Zaretskii <eliz@gnu.org>
|
2014-02-13 Eli Zaretskii <eliz@gnu.org>
|
||||||
|
|
||||||
* w32proc.c (start_timer_thread): Pass a non-NULL pointer as last
|
* w32proc.c (start_timer_thread): Pass a non-NULL pointer as last
|
||||||
|
@ -973,6 +973,13 @@ xd_get_connection_references (DBusConnection *connection)
|
|||||||
return *refcount;
|
return *refcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Convert a Lisp dbus object to a pointer */
|
||||||
|
static DBusConnection*
|
||||||
|
xd_lisp_dbus_to_dbus (Lisp_Object bus)
|
||||||
|
{
|
||||||
|
return (DBusConnection *) (intptr_t) XFASTINT (bus);
|
||||||
|
}
|
||||||
|
|
||||||
/* Return D-Bus connection address. BUS is either a Lisp symbol,
|
/* Return D-Bus connection address. BUS is either a Lisp symbol,
|
||||||
:system or :session, or a string denoting the bus address. */
|
:system or :session, or a string denoting the bus address. */
|
||||||
static DBusConnection *
|
static DBusConnection *
|
||||||
@ -985,7 +992,7 @@ xd_get_connection_address (Lisp_Object bus)
|
|||||||
if (NILP (val))
|
if (NILP (val))
|
||||||
XD_SIGNAL2 (build_string ("No connection to bus"), bus);
|
XD_SIGNAL2 (build_string ("No connection to bus"), bus);
|
||||||
else
|
else
|
||||||
connection = (DBusConnection *) (intptr_t) XFASTINT (val);
|
connection = xd_lisp_dbus_to_dbus (val);
|
||||||
|
|
||||||
if (!dbus_connection_get_is_connected (connection))
|
if (!dbus_connection_get_is_connected (connection))
|
||||||
XD_SIGNAL2 (build_string ("No connection to bus"), bus);
|
XD_SIGNAL2 (build_string ("No connection to bus"), bus);
|
||||||
@ -1080,14 +1087,21 @@ xd_close_bus (Lisp_Object bus)
|
|||||||
{
|
{
|
||||||
DBusConnection *connection;
|
DBusConnection *connection;
|
||||||
Lisp_Object val;
|
Lisp_Object val;
|
||||||
|
Lisp_Object busobj;
|
||||||
|
|
||||||
/* Check whether we are connected. */
|
/* Check whether we are connected. */
|
||||||
val = Fassoc (bus, xd_registered_buses);
|
val = Fassoc (bus, xd_registered_buses);
|
||||||
if (NILP (val))
|
if (NILP (val))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
busobj = CDR_SAFE(val);
|
||||||
|
if (NILP (val)) {
|
||||||
|
xd_registered_buses = Fdelete (val, xd_registered_buses);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Retrieve bus address. */
|
/* Retrieve bus address. */
|
||||||
connection = xd_get_connection_address (bus);
|
connection = xd_lisp_dbus_to_dbus (busobj);
|
||||||
|
|
||||||
if (xd_get_connection_references (connection) == 1)
|
if (xd_get_connection_references (connection) == 1)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user