diff options
author | Havoc Pennington <hp@redhat.com> | 2003-06-22 19:39:47 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2003-06-22 19:39:47 +0000 |
commit | 6843ad31769c088ca259020fd9ea8dfb3a51f68e (patch) | |
tree | 208e287bc200298da5514f4d32704f3e8ef42423 /bus/connection.c | |
parent | 8a71cf33ef8f35669dbdb39ef2f12c5a3dfebf33 (diff) |
2003-06-22 Havoc Pennington <hp@pobox.com>
* dbus/dbus-dataslot.c (_dbus_data_slot_allocator_unref)
(_dbus_data_slot_allocator_alloc): rework these to keep a
reference count on each slot and automatically manage a global
slot ID variable passed in by address
* bus/bus.c: convert to new dataslot API
* dbus/dbus-bus.c: convert to new dataslot API
* dbus/dbus-connection.c: convert to new dataslot API
* dbus/dbus-server.c: convert to new dataslot API
* glib/dbus-gmain.c: ditto
* bus/test.c: ditto
* bus/connection.c: ditto
Diffstat (limited to 'bus/connection.c')
-rw-r--r-- | bus/connection.c | 42 |
1 files changed, 4 insertions, 38 deletions
diff --git a/bus/connection.c b/bus/connection.c index 70a0eb15..5121658d 100644 --- a/bus/connection.c +++ b/bus/connection.c @@ -43,8 +43,7 @@ struct BusConnections DBusTimeout *expire_timeout; /**< Timeout for expiring incomplete connections. */ }; -static int connection_data_slot = -1; -static int connection_data_slot_refcount = 0; +static dbus_int32_t connection_data_slot = -1; typedef struct { @@ -67,39 +66,6 @@ static dbus_bool_t expire_incomplete_timeout (void *data); #define BUS_CONNECTION_DATA(connection) (dbus_connection_get_data ((connection), connection_data_slot)) -static dbus_bool_t -connection_data_slot_ref (void) -{ - if (connection_data_slot < 0) - { - connection_data_slot = dbus_connection_allocate_data_slot (); - - if (connection_data_slot < 0) - return FALSE; - - _dbus_assert (connection_data_slot_refcount == 0); - } - - connection_data_slot_refcount += 1; - - return TRUE; - -} - -static void -connection_data_slot_unref (void) -{ - _dbus_assert (connection_data_slot_refcount > 0); - - connection_data_slot_refcount -= 1; - - if (connection_data_slot_refcount == 0) - { - dbus_connection_free_data_slot (connection_data_slot); - connection_data_slot = -1; - } -} - static DBusLoop* connection_get_loop (DBusConnection *connection) { @@ -419,7 +385,7 @@ bus_connections_new (BusContext *context) { BusConnections *connections; - if (!connection_data_slot_ref ()) + if (!dbus_connection_allocate_data_slot (&connection_data_slot)) goto failed_0; connections = dbus_new0 (BusConnections, 1); @@ -456,7 +422,7 @@ bus_connections_new (BusContext *context) failed_2: dbus_free (connections); failed_1: - connection_data_slot_unref (); + dbus_connection_free_data_slot (&connection_data_slot); failed_0: return NULL; } @@ -515,7 +481,7 @@ bus_connections_unref (BusConnections *connections) dbus_free (connections); - connection_data_slot_unref (); + dbus_connection_free_data_slot (&connection_data_slot); } } |