1998-12-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* Made the thread related code follow GNU coding standard.
* Made a comment (HOLDS:) above each function, that expects the
given locks to be held.
* Changed try_lock to trylock throughout.
* glib.c: Eventually removed the #if 0'ed code for old GStaticMutex.
* glib.c: Corrected g_trylock macro for G_DEBUG_LOCKS.
* gmain.c (g_main_poll_add_unlocked): first take a new poll record
form the poll_free_list.
* gmem.c, gstrfuncs.c, gutils.c: Made it MT safe.
* gthraed/*.c: Added copyright headers.
* gthread/gthread-solaris.c: do not use g_log for errors, as g_log
uses these module and endless recursions might happen, just use a
plain fprintf(stderr,...).
* gthread/gthread.c (g_thread_try_init): Call g_mutex_init().
* gthread/testgthread.c: updated test program.
Tue Dec 8 18:49:56 1998 Owen Taylor <otaylor@redhat.com>
* Start at adding thread-safety. (mostly work
of Sebastian Wilhelmi <wilhelmi@ira.uka.de>)
- configure.in now looks for a system thread implementation.
Currently support is included for POSIX threads
and Solaris threads. The default support is built
into a separate library -lgthread.
- The thread implementation can be modified by passing
a vector of functions g_thread_init().
- The default or supplied functions are used to
implement a small set of thread functions for
mutexes, condition variables, and thread-private
data.
- GLib now uses these functions to provide thread
safety. (In the sense that all global static
data is locked... individual structures must still
be locked by the caller.)
Tue Nov 24 09:40:00 1998 Tim Janik <timj@gtk.org>
* glib.h: removed the GListAllocator type and its g_*_allocator_*()
function variants (which weren't working anyways) in favour of a
generic GAllocator type. new functions:
g_allocator_new, g_allocator_free, g_slist_push_allocator,
g_slist_pop_allocator, g_list_push_allocator, g_list_pop_allocator,
g_node_push_allocator and g_node_pop_allocator.
* gstring.c: removed bogus slist allocator code.
* gtree.c: maintain own list of free tree nodes and don't waste
GSLists for that, removed bogus slist allocator code.
* glist.c: use GAllocators for node allocation.
* gslist.c: use GAllocators for node allocation.
* gnode.c: use GAllocators for node allocation.
* gdataset.c: cleanups wrt automatic initialization.
Thu Oct 8 06:47:27 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gdataset.c: removed functions g_dataset_id_set_destroy and
g_datalist_id_set_destroy and macros g_dataset_set_destroy and
g_datalist_set_destroy.
added new functions g_dataset_id_remove_no_notify and
g_datalist_id_remove_no_notify plus associated macros
g_dataset_remove_no_notify and g_datalist_remove_no_notify, which
will remove a certain data portion without invokation of its destroy
notifier, this should only be used in very controled circumstances.
Fri Sep 18 18:46:14 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gdataset.c: make the datalists a safe type (not using a generic
gpointer) by expecting a GData* argument in the g_datalist functions.
provide g_dataset_foreach() and g_datalist_foreach() functions that
allow a GDataForeachFunc function to walk the data lists.
(g_dataset_destroy_internal): made this function truely reentrant (i.e.
can be called from within destroy notifiers as well).
the *_foreach functions are _not_ reentrant (unless all the other
dataset and datalist functions).
Thu Sep 17 06:36:25 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gdataset.c: implemented g_datalist_* along the lines of g_dataset,
but operates on an opaque gpointer *datalist; pointer, e.g. for the
implementation of GtkObject named data.
we cache a certain portion of the already freed data entries now, to
gain a slight performance improve with data reallocation.
Thu Sep 17 06:34:22 1998 Tim Janik <timj@gtk.org>
* gmodule.h:
* gmodule.c: implemented g_module_make_resident() which can be
used to make modules resident.
fixed a buglet about the optional "g_module_de_init" function in
modules, which could get invoked twice on very obscure occasions.
Fri Jun 19 03:11:02 1998 Tim Janik <timj@gtk.org>
* gdataset.c: removed g_dataset_try_key, g_dataset_force_id and
g_dataset_retrive_key in favour of GQuarks.
a GQuark is an numeric id wich is associated with a certain string.
(g_quark_try_string): try to get the quark associated with this string,
if the lookup failed return 0.
(g_quark_from_string): get the associated quark for a string, if there
isn't currently a GQuark associated with this string, then allocate a
new quark and return that.
(g_quark_from_static_string): like the above function, but the string
isn't strdup()ed to save memory.
(g_quark_to_string): get the string that is associated with a certain
GQuark.
* gdataset.c (g_dataset_id_set_data_full): invoke the destroy function
_after_ the new data has been setup.
Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gdataset.c: new function g_dataset_retrive_key. adjusted prealloc
sizes, to take up less space on initial allocation.