2003-01-25 Anders Carlsson <andersca@codefactory.se>
authorAnders Carlsson <andersca@codefactory.se>
Sat, 25 Jan 2003 00:11:41 +0000 (00:11 +0000)
committerAnders Carlsson <andersca@codefactory.se>
Sat, 25 Jan 2003 00:11:41 +0000 (00:11 +0000)
* dbus/dbus-list.c: (alloc_link), (free_link):
Use a memory pool for the links.

ChangeLog
dbus/dbus-list.c

index 3961e97..2fedb45 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2003-01-25  Anders Carlsson  <andersca@codefactory.se>
 
+       * dbus/dbus-list.c: (alloc_link), (free_link):
+       Use a memory pool for the links.
+       
+2003-01-25  Anders Carlsson  <andersca@codefactory.se>
+
        * bus/connection.c: (bus_connection_foreach):
        * bus/connection.h:
        Add new bus_connection_foreach function.
index c36246c..42fc79b 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "dbus-internals.h"
 #include "dbus-list.h"
+#include "dbus-mempool.h"
 
 /**
  * @defgroup DBusList Linked list
@@ -32,6 +33,8 @@
  * Types and functions related to DBusList.
  */
 
+static DBusMemPool *list_pool;
+
 /**
  * @defgroup DBusListInternals Linked list implementation details
  * @ingroup  DBusInternals
@@ -39,8 +42,6 @@
  *
  * The guts of DBusList.
  *
- * @todo should use a memory pool for the list nodes, to avoid
- * a memory allocation for every link.
  * @{
  */
 
@@ -49,7 +50,10 @@ alloc_link (void *data)
 {
   DBusList *link;
 
-  link = dbus_new0 (DBusList, 1);
+  if (!list_pool)
+    list_pool = _dbus_mem_pool_new (sizeof (DBusList), TRUE);
+
+  link = _dbus_mem_pool_alloc (list_pool);
   link->data = data;
 
   return link;
@@ -58,7 +62,7 @@ alloc_link (void *data)
 static void
 free_link (DBusList *link)
 {
-  dbus_free (link);
+  _dbus_mem_pool_dealloc (list_pool, link);
 }
 
 static void