diff options
Diffstat (limited to 'src/dbusbind.c')
| -rw-r--r-- | src/dbusbind.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/dbusbind.c b/src/dbusbind.c index 227d4e647e9..52e08d8ee2a 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c | |||
| @@ -2071,13 +2071,7 @@ usage: (dbus-register-signal BUS SERVICE PATH INTERFACE SIGNAL HANDLER &rest ARG | |||
| 2071 | && (SBYTES (service) > 0) | 2071 | && (SBYTES (service) > 0) |
| 2072 | && (strcmp (SSDATA (service), DBUS_SERVICE_DBUS) != 0) | 2072 | && (strcmp (SSDATA (service), DBUS_SERVICE_DBUS) != 0) |
| 2073 | && (strncmp (SSDATA (service), ":", 1) != 0)) | 2073 | && (strncmp (SSDATA (service), ":", 1) != 0)) |
| 2074 | { | 2074 | uname = call2 (intern ("dbus-get-name-owner"), bus, service); |
| 2075 | uname = call2 (intern ("dbus-get-name-owner"), bus, service); | ||
| 2076 | /* When there is no unique name, we mark it with an empty | ||
| 2077 | string. */ | ||
| 2078 | if (NILP (uname)) | ||
| 2079 | uname = empty_unibyte_string; | ||
| 2080 | } | ||
| 2081 | else | 2075 | else |
| 2082 | uname = service; | 2076 | uname = service; |
| 2083 | 2077 | ||
| @@ -2145,7 +2139,7 @@ usage: (dbus-register-signal BUS SERVICE PATH INTERFACE SIGNAL HANDLER &rest ARG | |||
| 2145 | 2139 | ||
| 2146 | /* Create a hash table entry. */ | 2140 | /* Create a hash table entry. */ |
| 2147 | key = list3 (bus, interface, signal); | 2141 | key = list3 (bus, interface, signal); |
| 2148 | key1 = list4 (uname, service, path, handler); | 2142 | key1 = list5 (uname, service, path, handler, build_string (rule)); |
| 2149 | value = Fgethash (key, Vdbus_registered_objects_table, Qnil); | 2143 | value = Fgethash (key, Vdbus_registered_objects_table, Qnil); |
| 2150 | 2144 | ||
| 2151 | if (NILP (Fmember (key1, value))) | 2145 | if (NILP (Fmember (key1, value))) |
| @@ -2177,7 +2171,7 @@ When DONT-REGISTER-SERVICE is non-nil, the known name SERVICE is not | |||
| 2177 | registered. This means that other D-Bus clients have no way of | 2171 | registered. This means that other D-Bus clients have no way of |
| 2178 | noticing the newly registered method. When interfaces are constructed | 2172 | noticing the newly registered method. When interfaces are constructed |
| 2179 | incrementally by adding single methods or properties at a time, | 2173 | incrementally by adding single methods or properties at a time, |
| 2180 | DONT-REGISTER-SERVICE can be use to prevent other clients from | 2174 | DONT-REGISTER-SERVICE can be used to prevent other clients from |
| 2181 | discovering the still incomplete interface.*/) | 2175 | discovering the still incomplete interface.*/) |
| 2182 | (Lisp_Object bus, Lisp_Object service, Lisp_Object path, | 2176 | (Lisp_Object bus, Lisp_Object service, Lisp_Object path, |
| 2183 | Lisp_Object interface, Lisp_Object method, Lisp_Object handler, | 2177 | Lisp_Object interface, Lisp_Object method, Lisp_Object handler, |
| @@ -2319,6 +2313,9 @@ be called when a D-Bus message, which matches the key criteria, | |||
| 2319 | arrives (methods and signals), or a cons cell containing the value of | 2313 | arrives (methods and signals), or a cons cell containing the value of |
| 2320 | the property. | 2314 | the property. |
| 2321 | 2315 | ||
| 2316 | For signals, there is also a fifth element RULE, which keeps the match | ||
| 2317 | string the signal is registered with. | ||
| 2318 | |||
| 2322 | In the second case, the key in the hash table is the list (BUS | 2319 | In the second case, the key in the hash table is the list (BUS |
| 2323 | SERIAL). BUS is either a Lisp symbol, `:system' or `:session', or a | 2320 | SERIAL). BUS is either a Lisp symbol, `:system' or `:session', or a |
| 2324 | string denoting the bus address. SERIAL is the serial number of the | 2321 | string denoting the bus address. SERIAL is the serial number of the |