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/bus.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/bus.c')
-rw-r--r-- | bus/bus.c | 51 |
1 files changed, 9 insertions, 42 deletions
@@ -48,8 +48,7 @@ struct BusContext BusLimits limits; }; -static int server_data_slot = -1; -static int server_data_slot_refcount = 0; +static dbus_int32_t server_data_slot = -1; typedef struct { @@ -58,57 +57,25 @@ typedef struct #define BUS_SERVER_DATA(server) (dbus_server_get_data ((server), server_data_slot)) -static dbus_bool_t -server_data_slot_ref (void) -{ - if (server_data_slot < 0) - { - server_data_slot = dbus_server_allocate_data_slot (); - - if (server_data_slot < 0) - return FALSE; - - _dbus_assert (server_data_slot_refcount == 0); - } - - server_data_slot_refcount += 1; - - return TRUE; -} - -static void -server_data_slot_unref (void) -{ - _dbus_assert (server_data_slot_refcount > 0); - - server_data_slot_refcount -= 1; - - if (server_data_slot_refcount == 0) - { - dbus_server_free_data_slot (server_data_slot); - server_data_slot = -1; - } -} - static BusContext* server_get_context (DBusServer *server) { BusContext *context; BusServerData *bd; - if (!server_data_slot_ref ()) + if (!dbus_server_allocate_data_slot (&server_data_slot)) return NULL; bd = BUS_SERVER_DATA (server); if (bd == NULL) { - server_data_slot_unref (); + dbus_server_free_data_slot (&server_data_slot); return NULL; } context = bd->context; - server_data_slot_unref (); + dbus_server_free_data_slot (&server_data_slot); return context; } @@ -303,7 +270,7 @@ bus_context_new (const DBusString *config_file, return NULL; } - if (!server_data_slot_ref ()) + if (!dbus_server_allocate_data_slot (&server_data_slot)) { BUS_SET_OOM (error); _dbus_string_free (&full_address); @@ -358,7 +325,7 @@ bus_context_new (const DBusString *config_file, /* we need another ref of the server data slot for the context * to own */ - if (!server_data_slot_ref ()) + if (!dbus_server_allocate_data_slot (&server_data_slot)) _dbus_assert_not_reached ("second ref of server data slot failed"); context->user_database = _dbus_user_database_new (); @@ -633,7 +600,7 @@ bus_context_new (const DBusString *config_file, bus_config_parser_unref (parser); _dbus_string_free (&full_address); dbus_free_string_array (auth_mechanisms); - server_data_slot_unref (); + dbus_server_free_data_slot (&server_data_slot); return context; @@ -647,7 +614,7 @@ bus_context_new (const DBusString *config_file, _dbus_string_free (&full_address); dbus_free_string_array (auth_mechanisms); - server_data_slot_unref (); + dbus_server_free_data_slot (&server_data_slot); return NULL; } @@ -769,7 +736,7 @@ bus_context_unref (BusContext *context) dbus_free (context); - server_data_slot_unref (); + dbus_server_free_data_slot (&server_data_slot); } } |