mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-04-05 16:00:36 +02:00
read-only mirror of https://gitlab.freedesktop.org/dbus/dbus
* dbus/dbus-marshal.c (_dbus_marshal_validate_arg): fix to avoid calling _dbus_marshal_validate_arg() for every byte in a byte array, etc. * dbus/dbus-message-handler.c: use atomic reference counting to reduce number of locks slightly; the global lock in here sucks * dbus/dbus-connection.c (_dbus_connection_update_dispatch_status_and_unlock): variant of update_dispatch_status that can be called with lock held; then use in a couple places to reduce locking/unlocking (dbus_connection_send): hold the lock over the whole function instead of acquiring it twice. * dbus/dbus-timeout.c (_dbus_timeout_new): handle OOM * bus/connection.c (bus_connections_setup_connection): fix access to already-freed memory. * dbus/dbus-connection.c: keep a little cache of linked list nodes, to avoid using the global linked list alloc lock in the normal send-message case. Instead we just use the connection lock that we already have to take. * dbus/dbus-list.c (_dbus_list_find_last): new function * dbus/dbus-sysdeps.c (_dbus_atomic_inc, _dbus_atomic_dec): change to use a struct for the atomic type; fix docs, they return value before increment, not after increment. * dbus/dbus-string.c (_dbus_string_append_4_aligned) (_dbus_string_append_8_aligned): new functions to try to microoptimize this operation. (reallocate_for_length): break this out of set_length(), to improve profile info, and also so we can consider inlining the set_length() part. * dbus/dbus-message.c (dbus_message_new_empty_header): init data strings with some preallocation, cuts down on our calls to realloc a fair bit. Though if we can get the "move entire string to empty string" optimization below to kick in here, it would be better. * dbus/dbus-string.c (_dbus_string_move): just call _dbus_string_move_len (_dbus_string_move_len): add a special case for moving an entire string into an empty string; we can just swap the string data instead of doing any reallocs. (_dbus_string_init_preallocated): new function |
||
|---|---|---|
| bus | ||
| dbus | ||
| doc | ||
| glib | ||
| qt | ||
| test | ||
| tools | ||
| .cvsignore | ||
| acinclude.m4 | ||
| AUTHORS | ||
| autogen.sh | ||
| ChangeLog | ||
| configure.in | ||
| COPYING | ||
| dbus-1.pc.in | ||
| dbus-glib-1.pc.in | ||
| Doxyfile.in | ||
| HACKING | ||
| INSTALL | ||
| Makefile.am | ||
| Makefile.cvs | ||
| NEWS | ||
| README | ||
D-BUS is a simple IPC library based on messages. See also the file HACKING for notes of interest to developers working on D-BUS. See http://www.freedesktop.org/software/dbus/ for lots of documentation, mailing lists, etc. Configuration flags === These are the dbus-specific configuration flags that can be given to the ./configure program. --enable-qt enable Qt-friendly client library --enable-glib enable GLib-friendly client library --enable-tests enable unit test code --enable-ansi enable -ansi -pedantic gcc flags --enable-verbose-mode support verbose debug mode --enable-asserts include assertion checks --enable-checks include sanity checks on public API --enable-docs build documentation (requires Doxygen and jade) --enable-gcov compile with coverage profiling instrumentation (gcc only) --with-xml=libxml/expat XML library to use --with-init-scripts=redhat Style of init scripts to install --with-session-socket-dir=dirname Where to put sockets for the per-login-session message bus --with-test-socket-dir=dirname Where to put sockets for make check --with-system-pid-file=pidfile PID file for systemwide daemon --with-system-socket=filename UNIX domain socket for systemwide daemon API/ABI Policy === D-BUS API/ABI and protocol necessarily remain in flux until we are sure it will meet the various needs it's intended to meet. This means we need to see some significant sample usage in the contexts of GNOME, KDE, desktop applications, and systemwide uses such as print queue monitoring, hotplug events, or whatever. We need the flexibility to incorporate feedback from this sample usage. Once we feel confident in the protocol and the API, we will release a version 1.0. At that point, the intent is: - The protocol will never be broken again; any message bus should work with any client forever. However, extensions are possible where the protocol is extensible. - If the library API is modified incompatibly, we will rename it as in http://ometer.com/parallel.html - in other words, it will always be possible to compile against and use the older API, and apps will always get the API they expect. Until 1.0 is released, feedback that requires API changes may be incorporated into D-BUS. This may break the API, the ABI, the protocol, or all three. To avoid a huge soname, the plan is to increment the soname only between official stable releases, not with every development snapshot. Versions numbered 0.x are considered development snapshots. Until 1.0 is released, you have to define -DDBUS_API_SUBJECT_TO_CHANGE just as a safety check to be sure everyone is aware of this API/ABI policy and has the right expectations. We do need people to test the APIs, so please do use the development snapshots of D-BUS. They are intended to work and we do actively address bugs. However, if you're shipping a commercial binary-only application that needs to keep running on M future versions of N operating systems, you might want to include your own copy of D-BUS rather than relying on the installed copy, for example.