* dbusbind.c (Fdbus_register_method): Added optional parameter
dont_register_service. Updated docstring accordingly.
This commit is contained in:
parent
6388924af0
commit
6ed843e5b8
2 changed files with 35 additions and 16 deletions
|
@ -1,3 +1,8 @@
|
|||
2011-01-04 Jan Moringen <jan.moringen@uni-bielefeld.de>
|
||||
|
||||
* dbusbind.c (Fdbus_register_method): Added optional parameter
|
||||
dont_register_service. Updated docstring accordingly.
|
||||
|
||||
2011-01-04 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs.c (emacs_copyright): Update short copyright year to 2011.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Elisp bindings for D-Bus.
|
||||
Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
@ -1983,21 +1983,32 @@ usage: (dbus-register-signal BUS SERVICE PATH INTERFACE SIGNAL HANDLER &rest ARG
|
|||
}
|
||||
|
||||
DEFUN ("dbus-register-method", Fdbus_register_method, Sdbus_register_method,
|
||||
6, 6, 0,
|
||||
6, 7, 0,
|
||||
doc: /* Register for method METHOD on the D-Bus BUS.
|
||||
|
||||
BUS is either a Lisp symbol, `:system' or `:session', or a string
|
||||
denoting the bus address.
|
||||
|
||||
SERVICE is the D-Bus service name of the D-Bus object METHOD is
|
||||
registered for. It must be a known name.
|
||||
registered for. It must be a known name (See discussion of
|
||||
DONT-REGISTER-SERVICE below).
|
||||
|
||||
PATH is the D-Bus object path SERVICE is registered. INTERFACE is the
|
||||
interface offered by SERVICE. It must provide METHOD. HANDLER is a
|
||||
Lisp function to be called when a method call is received. It must
|
||||
accept the input arguments of METHOD. The return value of HANDLER is
|
||||
used for composing the returning D-Bus message. */)
|
||||
(Lisp_Object bus, Lisp_Object service, Lisp_Object path, Lisp_Object interface, Lisp_Object method, Lisp_Object handler)
|
||||
PATH is the D-Bus object path SERVICE is registered (See discussion of
|
||||
DONT-REGISTER-SERVICE below). INTERFACE is the interface offered by
|
||||
SERVICE. It must provide METHOD. HANDLER is a Lisp function to be
|
||||
called when a method call is received. It must accept the input
|
||||
arguments of METHOD. The return value of HANDLER is used for
|
||||
composing the returning D-Bus message.
|
||||
|
||||
When DONT-REGISTER-SERVICE is non-nil, the known name SERVICE is not
|
||||
registered. This means that other D-Bus clients have no way of
|
||||
noticing the newly registered method. When interfaces are constructed
|
||||
incrementally by adding single methods or properties at a time,
|
||||
DONT-REGISTER-SERVICE can be use to prevent other clients from
|
||||
discovering the still incomplete interface.*/)
|
||||
(Lisp_Object bus, Lisp_Object service, Lisp_Object path,
|
||||
Lisp_Object interface, Lisp_Object method, Lisp_Object handler,
|
||||
Lisp_Object dont_register_service)
|
||||
{
|
||||
Lisp_Object key, key1, value;
|
||||
DBusConnection *connection;
|
||||
|
@ -2019,10 +2030,16 @@ used for composing the returning D-Bus message. */)
|
|||
|
||||
/* Request the known name from the bus. We can ignore the result,
|
||||
it is set to -1 if there is an error - kind of redundancy. */
|
||||
dbus_error_init (&derror);
|
||||
result = dbus_bus_request_name (connection, SDATA (service), 0, &derror);
|
||||
if (dbus_error_is_set (&derror))
|
||||
XD_ERROR (derror);
|
||||
if (NILP (dont_register_service))
|
||||
{
|
||||
dbus_error_init (&derror);
|
||||
result = dbus_bus_request_name (connection, SDATA (service), 0, &derror);
|
||||
if (dbus_error_is_set (&derror))
|
||||
XD_ERROR (derror);
|
||||
|
||||
/* Cleanup. */
|
||||
dbus_error_free (&derror);
|
||||
}
|
||||
|
||||
/* Create a hash table entry. We use nil for the unique name,
|
||||
because the method might be called from anybody. */
|
||||
|
@ -2033,9 +2050,6 @@ used for composing the returning D-Bus message. */)
|
|||
if (NILP (Fmember (key1, value)))
|
||||
Fputhash (key, Fcons (key1, value), Vdbus_registered_objects_table);
|
||||
|
||||
/* Cleanup. */
|
||||
dbus_error_free (&derror);
|
||||
|
||||
/* Return object. */
|
||||
return list2 (key, list3 (service, path, handler));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue