diff options
Diffstat (limited to 'src/dbusbind.c')
| -rw-r--r-- | src/dbusbind.c | 249 |
1 files changed, 211 insertions, 38 deletions
diff --git a/src/dbusbind.c b/src/dbusbind.c index 683b7cb583b..7e5104026cd 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* Elisp bindings for D-Bus. | 1 | /* Elisp bindings for D-Bus. |
| 2 | Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. | 2 | Copyright (C) 2007-2011 Free Software Foundation, Inc. |
| 3 | 3 | ||
| 4 | This file is part of GNU Emacs. | 4 | This file is part of GNU Emacs. |
| 5 | 5 | ||
| @@ -38,6 +38,7 @@ Lisp_Object Qdbus_call_method_asynchronously; | |||
| 38 | Lisp_Object Qdbus_method_return_internal; | 38 | Lisp_Object Qdbus_method_return_internal; |
| 39 | Lisp_Object Qdbus_method_error_internal; | 39 | Lisp_Object Qdbus_method_error_internal; |
| 40 | Lisp_Object Qdbus_send_signal; | 40 | Lisp_Object Qdbus_send_signal; |
| 41 | Lisp_Object Qdbus_register_service; | ||
| 41 | Lisp_Object Qdbus_register_signal; | 42 | Lisp_Object Qdbus_register_signal; |
| 42 | Lisp_Object Qdbus_register_method; | 43 | Lisp_Object Qdbus_register_method; |
| 43 | 44 | ||
| @@ -50,6 +51,17 @@ Lisp_Object QCdbus_system_bus, QCdbus_session_bus; | |||
| 50 | /* Lisp symbol for method call timeout. */ | 51 | /* Lisp symbol for method call timeout. */ |
| 51 | Lisp_Object QCdbus_timeout; | 52 | Lisp_Object QCdbus_timeout; |
| 52 | 53 | ||
| 54 | /* Lisp symbols for name request flags. */ | ||
| 55 | Lisp_Object QCdbus_request_name_allow_replacement; | ||
| 56 | Lisp_Object QCdbus_request_name_replace_existing; | ||
| 57 | Lisp_Object QCdbus_request_name_do_not_queue; | ||
| 58 | |||
| 59 | /* Lisp symbols for name request replies. */ | ||
| 60 | Lisp_Object QCdbus_request_name_reply_primary_owner; | ||
| 61 | Lisp_Object QCdbus_request_name_reply_in_queue; | ||
| 62 | Lisp_Object QCdbus_request_name_reply_exists; | ||
| 63 | Lisp_Object QCdbus_request_name_reply_already_owner; | ||
| 64 | |||
| 53 | /* Lisp symbols of D-Bus types. */ | 65 | /* Lisp symbols of D-Bus types. */ |
| 54 | Lisp_Object QCdbus_type_byte, QCdbus_type_boolean; | 66 | Lisp_Object QCdbus_type_byte, QCdbus_type_boolean; |
| 55 | Lisp_Object QCdbus_type_int16, QCdbus_type_uint16; | 67 | Lisp_Object QCdbus_type_int16, QCdbus_type_uint16; |
| @@ -57,18 +69,12 @@ Lisp_Object QCdbus_type_int32, QCdbus_type_uint32; | |||
| 57 | Lisp_Object QCdbus_type_int64, QCdbus_type_uint64; | 69 | Lisp_Object QCdbus_type_int64, QCdbus_type_uint64; |
| 58 | Lisp_Object QCdbus_type_double, QCdbus_type_string; | 70 | Lisp_Object QCdbus_type_double, QCdbus_type_string; |
| 59 | Lisp_Object QCdbus_type_object_path, QCdbus_type_signature; | 71 | Lisp_Object QCdbus_type_object_path, QCdbus_type_signature; |
| 72 | #ifdef DBUS_TYPE_UNIX_FD | ||
| 73 | Lisp_Object QCdbus_type_unix_fd; | ||
| 74 | #endif | ||
| 60 | Lisp_Object QCdbus_type_array, QCdbus_type_variant; | 75 | Lisp_Object QCdbus_type_array, QCdbus_type_variant; |
| 61 | Lisp_Object QCdbus_type_struct, QCdbus_type_dict_entry; | 76 | Lisp_Object QCdbus_type_struct, QCdbus_type_dict_entry; |
| 62 | 77 | ||
| 63 | /* Registered buses. */ | ||
| 64 | Lisp_Object Vdbus_registered_buses; | ||
| 65 | |||
| 66 | /* Hash table which keeps function definitions. */ | ||
| 67 | Lisp_Object Vdbus_registered_objects_table; | ||
| 68 | |||
| 69 | /* Whether to debug D-Bus. */ | ||
| 70 | Lisp_Object Vdbus_debug; | ||
| 71 | |||
| 72 | /* Whether we are reading a D-Bus event. */ | 78 | /* Whether we are reading a D-Bus event. */ |
| 73 | int xd_in_read_queued_messages = 0; | 79 | int xd_in_read_queued_messages = 0; |
| 74 | 80 | ||
| @@ -147,6 +153,22 @@ int xd_in_read_queued_messages = 0; | |||
| 147 | #endif | 153 | #endif |
| 148 | 154 | ||
| 149 | /* Check whether TYPE is a basic DBusType. */ | 155 | /* Check whether TYPE is a basic DBusType. */ |
| 156 | #ifdef DBUS_TYPE_UNIX_FD | ||
| 157 | #define XD_BASIC_DBUS_TYPE(type) \ | ||
| 158 | ((type == DBUS_TYPE_BYTE) \ | ||
| 159 | || (type == DBUS_TYPE_BOOLEAN) \ | ||
| 160 | || (type == DBUS_TYPE_INT16) \ | ||
| 161 | || (type == DBUS_TYPE_UINT16) \ | ||
| 162 | || (type == DBUS_TYPE_INT32) \ | ||
| 163 | || (type == DBUS_TYPE_UINT32) \ | ||
| 164 | || (type == DBUS_TYPE_INT64) \ | ||
| 165 | || (type == DBUS_TYPE_UINT64) \ | ||
| 166 | || (type == DBUS_TYPE_DOUBLE) \ | ||
| 167 | || (type == DBUS_TYPE_STRING) \ | ||
| 168 | || (type == DBUS_TYPE_OBJECT_PATH) \ | ||
| 169 | || (type == DBUS_TYPE_SIGNATURE) \ | ||
| 170 | || (type == DBUS_TYPE_UNIX_FD)) | ||
| 171 | #else | ||
| 150 | #define XD_BASIC_DBUS_TYPE(type) \ | 172 | #define XD_BASIC_DBUS_TYPE(type) \ |
| 151 | ((type == DBUS_TYPE_BYTE) \ | 173 | ((type == DBUS_TYPE_BYTE) \ |
| 152 | || (type == DBUS_TYPE_BOOLEAN) \ | 174 | || (type == DBUS_TYPE_BOOLEAN) \ |
| @@ -160,6 +182,7 @@ int xd_in_read_queued_messages = 0; | |||
| 160 | || (type == DBUS_TYPE_STRING) \ | 182 | || (type == DBUS_TYPE_STRING) \ |
| 161 | || (type == DBUS_TYPE_OBJECT_PATH) \ | 183 | || (type == DBUS_TYPE_OBJECT_PATH) \ |
| 162 | || (type == DBUS_TYPE_SIGNATURE)) | 184 | || (type == DBUS_TYPE_SIGNATURE)) |
| 185 | #endif | ||
| 163 | 186 | ||
| 164 | /* This was a macro. On Solaris 2.11 it was said to compile for | 187 | /* This was a macro. On Solaris 2.11 it was said to compile for |
| 165 | hours, when optimzation is enabled. So we have transferred it into | 188 | hours, when optimzation is enabled. So we have transferred it into |
| @@ -182,6 +205,9 @@ xd_symbol_to_dbus_type (Lisp_Object object) | |||
| 182 | : (EQ (object, QCdbus_type_string)) ? DBUS_TYPE_STRING | 205 | : (EQ (object, QCdbus_type_string)) ? DBUS_TYPE_STRING |
| 183 | : (EQ (object, QCdbus_type_object_path)) ? DBUS_TYPE_OBJECT_PATH | 206 | : (EQ (object, QCdbus_type_object_path)) ? DBUS_TYPE_OBJECT_PATH |
| 184 | : (EQ (object, QCdbus_type_signature)) ? DBUS_TYPE_SIGNATURE | 207 | : (EQ (object, QCdbus_type_signature)) ? DBUS_TYPE_SIGNATURE |
| 208 | #ifdef DBUS_TYPE_UNIX_FD | ||
| 209 | : (EQ (object, QCdbus_type_unix_fd)) ? DBUS_TYPE_UNIX_FD | ||
| 210 | #endif | ||
| 185 | : (EQ (object, QCdbus_type_array)) ? DBUS_TYPE_ARRAY | 211 | : (EQ (object, QCdbus_type_array)) ? DBUS_TYPE_ARRAY |
| 186 | : (EQ (object, QCdbus_type_variant)) ? DBUS_TYPE_VARIANT | 212 | : (EQ (object, QCdbus_type_variant)) ? DBUS_TYPE_VARIANT |
| 187 | : (EQ (object, QCdbus_type_struct)) ? DBUS_TYPE_STRUCT | 213 | : (EQ (object, QCdbus_type_struct)) ? DBUS_TYPE_STRUCT |
| @@ -238,6 +264,9 @@ xd_signature (char *signature, unsigned int dtype, unsigned int parent_type, Lis | |||
| 238 | case DBUS_TYPE_UINT16: | 264 | case DBUS_TYPE_UINT16: |
| 239 | case DBUS_TYPE_UINT32: | 265 | case DBUS_TYPE_UINT32: |
| 240 | case DBUS_TYPE_UINT64: | 266 | case DBUS_TYPE_UINT64: |
| 267 | #ifdef DBUS_TYPE_UNIX_FD | ||
| 268 | case DBUS_TYPE_UNIX_FD: | ||
| 269 | #endif | ||
| 241 | CHECK_NATNUM (object); | 270 | CHECK_NATNUM (object); |
| 242 | sprintf (signature, "%c", dtype); | 271 | sprintf (signature, "%c", dtype); |
| 243 | break; | 272 | break; |
| @@ -451,6 +480,9 @@ xd_append_arg (unsigned int dtype, Lisp_Object object, DBusMessageIter *iter) | |||
| 451 | } | 480 | } |
| 452 | 481 | ||
| 453 | case DBUS_TYPE_UINT32: | 482 | case DBUS_TYPE_UINT32: |
| 483 | #ifdef DBUS_TYPE_UNIX_FD | ||
| 484 | case DBUS_TYPE_UNIX_FD: | ||
| 485 | #endif | ||
| 454 | CHECK_NUMBER (object); | 486 | CHECK_NUMBER (object); |
| 455 | { | 487 | { |
| 456 | dbus_uint32_t val = XUINT (object); | 488 | dbus_uint32_t val = XUINT (object); |
| @@ -648,6 +680,9 @@ xd_retrieve_arg (unsigned int dtype, DBusMessageIter *iter) | |||
| 648 | } | 680 | } |
| 649 | 681 | ||
| 650 | case DBUS_TYPE_UINT32: | 682 | case DBUS_TYPE_UINT32: |
| 683 | #ifdef DBUS_TYPE_UNIX_FD | ||
| 684 | case DBUS_TYPE_UNIX_FD: | ||
| 685 | #endif | ||
| 651 | { | 686 | { |
| 652 | dbus_uint32_t val; | 687 | dbus_uint32_t val; |
| 653 | dbus_message_iter_get_basic (iter, &val); | 688 | dbus_message_iter_get_basic (iter, &val); |
| @@ -983,6 +1018,7 @@ input arguments. It follows the mapping rules: | |||
| 983 | DBUS_TYPE_UINT16 => number | 1018 | DBUS_TYPE_UINT16 => number |
| 984 | DBUS_TYPE_INT16 => integer | 1019 | DBUS_TYPE_INT16 => integer |
| 985 | DBUS_TYPE_UINT32 => number or float | 1020 | DBUS_TYPE_UINT32 => number or float |
| 1021 | DBUS_TYPE_UNIX_FD => number or float | ||
| 986 | DBUS_TYPE_INT32 => integer or float | 1022 | DBUS_TYPE_INT32 => integer or float |
| 987 | DBUS_TYPE_UINT64 => number or float | 1023 | DBUS_TYPE_UINT64 => number or float |
| 988 | DBUS_TYPE_INT64 => integer or float | 1024 | DBUS_TYPE_INT64 => integer or float |
| @@ -1802,6 +1838,114 @@ xd_read_queued_messages (int fd, void *data, int for_read) | |||
| 1802 | xd_in_read_queued_messages = 0; | 1838 | xd_in_read_queued_messages = 0; |
| 1803 | } | 1839 | } |
| 1804 | 1840 | ||
| 1841 | DEFUN ("dbus-register-service", Fdbus_register_service, Sdbus_register_service, | ||
| 1842 | 2, MANY, 0, | ||
| 1843 | doc: /* Register known name SERVICE on the D-Bus BUS. | ||
| 1844 | |||
| 1845 | BUS is either a Lisp symbol, `:system' or `:session', or a string | ||
| 1846 | denoting the bus address. | ||
| 1847 | |||
| 1848 | SERVICE is the D-Bus service name that should be registered. It must | ||
| 1849 | be a known name. | ||
| 1850 | |||
| 1851 | FLAGS are keywords, which control how the service name is registered. | ||
| 1852 | The following keywords are recognized: | ||
| 1853 | |||
| 1854 | `:allow-replacement': Allow another service to become the primary | ||
| 1855 | owner if requested. | ||
| 1856 | |||
| 1857 | `:replace-existing': Request to replace the current primary owner. | ||
| 1858 | |||
| 1859 | `:do-not-queue': If we can not become the primary owner do not place | ||
| 1860 | us in the queue. | ||
| 1861 | |||
| 1862 | The function returns a keyword, indicating the result of the | ||
| 1863 | operation. One of the following keywords is returned: | ||
| 1864 | |||
| 1865 | `:primary-owner': Service has become the primary owner of the | ||
| 1866 | requested name. | ||
| 1867 | |||
| 1868 | `:in-queue': Service could not become the primary owner and has been | ||
| 1869 | placed in the queue. | ||
| 1870 | |||
| 1871 | `:exists': Service is already in the queue. | ||
| 1872 | |||
| 1873 | `:already-owner': Service is already the primary owner. | ||
| 1874 | |||
| 1875 | Example: | ||
| 1876 | |||
| 1877 | \(dbus-register-service :session dbus-service-emacs) | ||
| 1878 | |||
| 1879 | => :primary-owner. | ||
| 1880 | |||
| 1881 | \(dbus-register-service | ||
| 1882 | :session "org.freedesktop.TextEditor" | ||
| 1883 | dbus-service-allow-replacement dbus-service-replace-existing) | ||
| 1884 | |||
| 1885 | => :already-owner. | ||
| 1886 | |||
| 1887 | usage: (dbus-register-service BUS SERVICE &rest FLAGS) */) | ||
| 1888 | (int nargs, register Lisp_Object *args) | ||
| 1889 | { | ||
| 1890 | Lisp_Object bus, service; | ||
| 1891 | struct gcpro gcpro1, gcpro2; | ||
| 1892 | DBusConnection *connection; | ||
| 1893 | unsigned int i; | ||
| 1894 | unsigned int value; | ||
| 1895 | unsigned int flags = 0; | ||
| 1896 | int result; | ||
| 1897 | DBusError derror; | ||
| 1898 | |||
| 1899 | bus = args[0]; | ||
| 1900 | service = args[1]; | ||
| 1901 | |||
| 1902 | /* Check parameters. */ | ||
| 1903 | CHECK_STRING (service); | ||
| 1904 | |||
| 1905 | /* Process flags. */ | ||
| 1906 | for (i = 2; i < nargs; ++i) { | ||
| 1907 | value = ((EQ (args[i], QCdbus_request_name_replace_existing)) | ||
| 1908 | ? DBUS_NAME_FLAG_REPLACE_EXISTING | ||
| 1909 | : (EQ (args[i], QCdbus_request_name_allow_replacement)) | ||
| 1910 | ? DBUS_NAME_FLAG_ALLOW_REPLACEMENT | ||
| 1911 | : (EQ (args[i], QCdbus_request_name_do_not_queue)) | ||
| 1912 | ? DBUS_NAME_FLAG_DO_NOT_QUEUE | ||
| 1913 | : -1); | ||
| 1914 | if (value == -1) | ||
| 1915 | XD_SIGNAL2 (build_string ("Unrecognized name request flag"), args[i]); | ||
| 1916 | flags |= value; | ||
| 1917 | } | ||
| 1918 | |||
| 1919 | /* Open a connection to the bus. */ | ||
| 1920 | connection = xd_initialize (bus, TRUE); | ||
| 1921 | |||
| 1922 | /* Request the known name from the bus. */ | ||
| 1923 | dbus_error_init (&derror); | ||
| 1924 | result = dbus_bus_request_name (connection, SDATA (service), flags, | ||
| 1925 | &derror); | ||
| 1926 | if (dbus_error_is_set (&derror)) | ||
| 1927 | XD_ERROR (derror); | ||
| 1928 | |||
| 1929 | /* Cleanup. */ | ||
| 1930 | dbus_error_free (&derror); | ||
| 1931 | |||
| 1932 | /* Return object. */ | ||
| 1933 | switch (result) | ||
| 1934 | { | ||
| 1935 | case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER: | ||
| 1936 | return QCdbus_request_name_reply_primary_owner; | ||
| 1937 | case DBUS_REQUEST_NAME_REPLY_IN_QUEUE: | ||
| 1938 | return QCdbus_request_name_reply_in_queue; | ||
| 1939 | case DBUS_REQUEST_NAME_REPLY_EXISTS: | ||
| 1940 | return QCdbus_request_name_reply_exists; | ||
| 1941 | case DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER: | ||
| 1942 | return QCdbus_request_name_reply_already_owner; | ||
| 1943 | default: | ||
| 1944 | /* This should not happen. */ | ||
| 1945 | XD_SIGNAL2 (build_string ("Could not register service"), service); | ||
| 1946 | } | ||
| 1947 | } | ||
| 1948 | |||
| 1805 | DEFUN ("dbus-register-signal", Fdbus_register_signal, Sdbus_register_signal, | 1949 | DEFUN ("dbus-register-signal", Fdbus_register_signal, Sdbus_register_signal, |
| 1806 | 6, MANY, 0, | 1950 | 6, MANY, 0, |
| 1807 | doc: /* Register for signal SIGNAL on the D-Bus BUS. | 1951 | doc: /* Register for signal SIGNAL on the D-Bus BUS. |
| @@ -1950,26 +2094,36 @@ usage: (dbus-register-signal BUS SERVICE PATH INTERFACE SIGNAL HANDLER &rest ARG | |||
| 1950 | } | 2094 | } |
| 1951 | 2095 | ||
| 1952 | DEFUN ("dbus-register-method", Fdbus_register_method, Sdbus_register_method, | 2096 | DEFUN ("dbus-register-method", Fdbus_register_method, Sdbus_register_method, |
| 1953 | 6, 6, 0, | 2097 | 6, 7, 0, |
| 1954 | doc: /* Register for method METHOD on the D-Bus BUS. | 2098 | doc: /* Register for method METHOD on the D-Bus BUS. |
| 1955 | 2099 | ||
| 1956 | BUS is either a Lisp symbol, `:system' or `:session', or a string | 2100 | BUS is either a Lisp symbol, `:system' or `:session', or a string |
| 1957 | denoting the bus address. | 2101 | denoting the bus address. |
| 1958 | 2102 | ||
| 1959 | SERVICE is the D-Bus service name of the D-Bus object METHOD is | 2103 | SERVICE is the D-Bus service name of the D-Bus object METHOD is |
| 1960 | registered for. It must be a known name. | 2104 | registered for. It must be a known name (See discussion of |
| 1961 | 2105 | DONT-REGISTER-SERVICE below). | |
| 1962 | PATH is the D-Bus object path SERVICE is registered. INTERFACE is the | 2106 | |
| 1963 | interface offered by SERVICE. It must provide METHOD. HANDLER is a | 2107 | PATH is the D-Bus object path SERVICE is registered (See discussion of |
| 1964 | Lisp function to be called when a method call is received. It must | 2108 | DONT-REGISTER-SERVICE below). INTERFACE is the interface offered by |
| 1965 | accept the input arguments of METHOD. The return value of HANDLER is | 2109 | SERVICE. It must provide METHOD. HANDLER is a Lisp function to be |
| 1966 | used for composing the returning D-Bus message. */) | 2110 | called when a method call is received. It must accept the input |
| 1967 | (Lisp_Object bus, Lisp_Object service, Lisp_Object path, Lisp_Object interface, Lisp_Object method, Lisp_Object handler) | 2111 | arguments of METHOD. The return value of HANDLER is used for |
| 2112 | composing the returning D-Bus message. | ||
| 2113 | |||
| 2114 | When DONT-REGISTER-SERVICE is non-nil, the known name SERVICE is not | ||
| 2115 | registered. This means that other D-Bus clients have no way of | ||
| 2116 | noticing the newly registered method. When interfaces are constructed | ||
| 2117 | incrementally by adding single methods or properties at a time, | ||
| 2118 | DONT-REGISTER-SERVICE can be use to prevent other clients from | ||
| 2119 | discovering the still incomplete interface.*/) | ||
| 2120 | (Lisp_Object bus, Lisp_Object service, Lisp_Object path, | ||
| 2121 | Lisp_Object interface, Lisp_Object method, Lisp_Object handler, | ||
| 2122 | Lisp_Object dont_register_service) | ||
| 1968 | { | 2123 | { |
| 1969 | Lisp_Object key, key1, value; | 2124 | Lisp_Object key, key1, value; |
| 1970 | DBusConnection *connection; | ||
| 1971 | int result; | ||
| 1972 | DBusError derror; | 2125 | DBusError derror; |
| 2126 | Lisp_Object args[2] = { bus, service }; | ||
| 1973 | 2127 | ||
| 1974 | /* Check parameters. */ | 2128 | /* Check parameters. */ |
| 1975 | CHECK_STRING (service); | 2129 | CHECK_STRING (service); |
| @@ -1981,15 +2135,9 @@ used for composing the returning D-Bus message. */) | |||
| 1981 | /* TODO: We must check for a valid service name, otherwise there is | 2135 | /* TODO: We must check for a valid service name, otherwise there is |
| 1982 | a segmentation fault. */ | 2136 | a segmentation fault. */ |
| 1983 | 2137 | ||
| 1984 | /* Open a connection to the bus. */ | 2138 | /* Request the name. */ |
| 1985 | connection = xd_initialize (bus, TRUE); | 2139 | if (NILP (dont_register_service)) |
| 1986 | 2140 | Fdbus_register_service (2, args); | |
| 1987 | /* Request the known name from the bus. We can ignore the result, | ||
| 1988 | it is set to -1 if there is an error - kind of redundancy. */ | ||
| 1989 | dbus_error_init (&derror); | ||
| 1990 | result = dbus_bus_request_name (connection, SDATA (service), 0, &derror); | ||
| 1991 | if (dbus_error_is_set (&derror)) | ||
| 1992 | XD_ERROR (derror); | ||
| 1993 | 2141 | ||
| 1994 | /* Create a hash table entry. We use nil for the unique name, | 2142 | /* Create a hash table entry. We use nil for the unique name, |
| 1995 | because the method might be called from anybody. */ | 2143 | because the method might be called from anybody. */ |
| @@ -2000,9 +2148,6 @@ used for composing the returning D-Bus message. */) | |||
| 2000 | if (NILP (Fmember (key1, value))) | 2148 | if (NILP (Fmember (key1, value))) |
| 2001 | Fputhash (key, Fcons (key1, value), Vdbus_registered_objects_table); | 2149 | Fputhash (key, Fcons (key1, value), Vdbus_registered_objects_table); |
| 2002 | 2150 | ||
| 2003 | /* Cleanup. */ | ||
| 2004 | dbus_error_free (&derror); | ||
| 2005 | |||
| 2006 | /* Return object. */ | 2151 | /* Return object. */ |
| 2007 | return list2 (key, list3 (service, path, handler)); | 2152 | return list2 (key, list3 (service, path, handler)); |
| 2008 | } | 2153 | } |
| @@ -2044,6 +2189,10 @@ syms_of_dbusbind (void) | |||
| 2044 | staticpro (&Qdbus_send_signal); | 2189 | staticpro (&Qdbus_send_signal); |
| 2045 | defsubr (&Sdbus_send_signal); | 2190 | defsubr (&Sdbus_send_signal); |
| 2046 | 2191 | ||
| 2192 | Qdbus_register_service = intern_c_string ("dbus-register-service"); | ||
| 2193 | staticpro (&Qdbus_register_service); | ||
| 2194 | defsubr (&Sdbus_register_service); | ||
| 2195 | |||
| 2047 | Qdbus_register_signal = intern_c_string ("dbus-register-signal"); | 2196 | Qdbus_register_signal = intern_c_string ("dbus-register-signal"); |
| 2048 | staticpro (&Qdbus_register_signal); | 2197 | staticpro (&Qdbus_register_signal); |
| 2049 | defsubr (&Sdbus_register_signal); | 2198 | defsubr (&Sdbus_register_signal); |
| @@ -2065,6 +2214,27 @@ syms_of_dbusbind (void) | |||
| 2065 | QCdbus_session_bus = intern_c_string (":session"); | 2214 | QCdbus_session_bus = intern_c_string (":session"); |
| 2066 | staticpro (&QCdbus_session_bus); | 2215 | staticpro (&QCdbus_session_bus); |
| 2067 | 2216 | ||
| 2217 | QCdbus_request_name_allow_replacement = intern_c_string (":allow-replacement"); | ||
| 2218 | staticpro (&QCdbus_request_name_allow_replacement); | ||
| 2219 | |||
| 2220 | QCdbus_request_name_replace_existing = intern_c_string (":replace-existing"); | ||
| 2221 | staticpro (&QCdbus_request_name_replace_existing); | ||
| 2222 | |||
| 2223 | QCdbus_request_name_do_not_queue = intern_c_string (":do-not-queue"); | ||
| 2224 | staticpro (&QCdbus_request_name_do_not_queue); | ||
| 2225 | |||
| 2226 | QCdbus_request_name_reply_primary_owner = intern_c_string (":primary-owner"); | ||
| 2227 | staticpro (&QCdbus_request_name_reply_primary_owner); | ||
| 2228 | |||
| 2229 | QCdbus_request_name_reply_exists = intern_c_string (":exists"); | ||
| 2230 | staticpro (&QCdbus_request_name_reply_exists); | ||
| 2231 | |||
| 2232 | QCdbus_request_name_reply_in_queue = intern_c_string (":in-queue"); | ||
| 2233 | staticpro (&QCdbus_request_name_reply_in_queue); | ||
| 2234 | |||
| 2235 | QCdbus_request_name_reply_already_owner = intern_c_string (":already-owner"); | ||
| 2236 | staticpro (&QCdbus_request_name_reply_already_owner); | ||
| 2237 | |||
| 2068 | QCdbus_timeout = intern_c_string (":timeout"); | 2238 | QCdbus_timeout = intern_c_string (":timeout"); |
| 2069 | staticpro (&QCdbus_timeout); | 2239 | staticpro (&QCdbus_timeout); |
| 2070 | 2240 | ||
| @@ -2104,6 +2274,11 @@ syms_of_dbusbind (void) | |||
| 2104 | QCdbus_type_signature = intern_c_string (":signature"); | 2274 | QCdbus_type_signature = intern_c_string (":signature"); |
| 2105 | staticpro (&QCdbus_type_signature); | 2275 | staticpro (&QCdbus_type_signature); |
| 2106 | 2276 | ||
| 2277 | #ifdef DBUS_TYPE_UNIX_FD | ||
| 2278 | QCdbus_type_unix_fd = intern_c_string (":unix-fd"); | ||
| 2279 | staticpro (&QCdbus_type_unix_fd); | ||
| 2280 | #endif | ||
| 2281 | |||
| 2107 | QCdbus_type_array = intern_c_string (":array"); | 2282 | QCdbus_type_array = intern_c_string (":array"); |
| 2108 | staticpro (&QCdbus_type_array); | 2283 | staticpro (&QCdbus_type_array); |
| 2109 | 2284 | ||
| @@ -2117,12 +2292,12 @@ syms_of_dbusbind (void) | |||
| 2117 | staticpro (&QCdbus_type_dict_entry); | 2292 | staticpro (&QCdbus_type_dict_entry); |
| 2118 | 2293 | ||
| 2119 | DEFVAR_LISP ("dbus-registered-buses", | 2294 | DEFVAR_LISP ("dbus-registered-buses", |
| 2120 | &Vdbus_registered_buses, | 2295 | Vdbus_registered_buses, |
| 2121 | doc: /* List of D-Bus buses we are polling for messages. */); | 2296 | doc: /* List of D-Bus buses we are polling for messages. */); |
| 2122 | Vdbus_registered_buses = Qnil; | 2297 | Vdbus_registered_buses = Qnil; |
| 2123 | 2298 | ||
| 2124 | DEFVAR_LISP ("dbus-registered-objects-table", | 2299 | DEFVAR_LISP ("dbus-registered-objects-table", |
| 2125 | &Vdbus_registered_objects_table, | 2300 | Vdbus_registered_objects_table, |
| 2126 | doc: /* Hash table of registered functions for D-Bus. | 2301 | doc: /* Hash table of registered functions for D-Bus. |
| 2127 | 2302 | ||
| 2128 | There are two different uses of the hash table: for accessing | 2303 | There are two different uses of the hash table: for accessing |
| @@ -2159,7 +2334,7 @@ be called when the D-Bus reply message arrives. */); | |||
| 2159 | Vdbus_registered_objects_table = Fmake_hash_table (2, args); | 2334 | Vdbus_registered_objects_table = Fmake_hash_table (2, args); |
| 2160 | } | 2335 | } |
| 2161 | 2336 | ||
| 2162 | DEFVAR_LISP ("dbus-debug", &Vdbus_debug, | 2337 | DEFVAR_LISP ("dbus-debug", Vdbus_debug, |
| 2163 | doc: /* If non-nil, debug messages of D-Bus bindings are raised. */); | 2338 | doc: /* If non-nil, debug messages of D-Bus bindings are raised. */); |
| 2164 | #ifdef DBUS_DEBUG | 2339 | #ifdef DBUS_DEBUG |
| 2165 | Vdbus_debug = Qt; | 2340 | Vdbus_debug = Qt; |
| @@ -2176,5 +2351,3 @@ be called when the D-Bus reply message arrives. */); | |||
| 2176 | 2351 | ||
| 2177 | #endif /* HAVE_DBUS */ | 2352 | #endif /* HAVE_DBUS */ |
| 2178 | 2353 | ||
| 2179 | /* arch-tag: 0e828477-b571-4fe4-b559-5c9211bc14b8 | ||
| 2180 | (do not change this comment) */ | ||