2005-02-28  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.6.3 ===

2005-02-02  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.6.2 ===

2005-01-07  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.6.1 ===

2004-12-16  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.6.0 ===
	
2004-12-02  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.5.7 ===
	
2004-11-12  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.5.6 ===
	
2004-11-02  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.5.5 ===

2004-10-27 Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.5.4 ===

2004-09-18 Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.5.3 ===

2004-08-25 Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.5.2 ===

2004-08-01 Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.5.1 ===

Sun Jul 18 18:03:08 2004  Soeren Sandmann  <sandmann@daimi.au.dk>

	* === Released 2.5.0 ===

2002-11-23  Tor Lillqvist  <tml@iki.fi>

	* gthread-win32.c (g_cond_timed_wait_win32_impl): Fix two bugs: 1)
	If abs_time is NULL, should use infinite time. 2) Check for
	current time already being past abs_time. (#99294, Christopher
	R. Palmer, fix by Sebastian Wilhelmi)

Mon Nov  4 14:45:24 2002  Owen Taylor  <otaylor@redhat.com>

	* gthread-posix.c gthread-solaris.c: Include <config.h>

2002-03-10  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c (g_thread_create_posix_impl): Do a comparison,
	not an assignment, stupid! Spotted by Daniel Elstner
	<daniel.elstner@gmx.net>.

2002-02-09  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-impl.c: Only compile most of this file, if
	G_THREADS_ENABLED is set.

	* Fixed typo in G_THREADS_ENABLED. 

2002-01-16  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-solaris.c: Use g_free instead of free. Pointed out by
	Sam O'Connor <sam@panviva.com>.

2001-10-23  Tor Lillqvist  <tml@iki.fi>

	* Makefile.am: (Win32): If we have built the MSVC import library,
	install it. Install the gcc import library. Also support
	uninstall.

2001-09-28  Tor Lillqvist  <tml@iki.fi>

	* gthread-win32.c: Use an extra level of indirection for GMutex.
	It is now a pointer either to a pointer to a CRITICAL_SECTION
	struct, or to a mutex HANDLE. This is needed in case the user
	defines G_ERRORCHECK_MUTEXES. G_MUTEX_SIZE must correctly reflect
	the size of *GMutex, but this used to vary depending on whether we
	at run-time chose to use CRITICAL_SECTIONs or mutexes.
	(g_mutex_free_win32_cs_impl, g_cond_free_win32_impl): Call
	DeleteCriticalSection() when done with it.

	* gthread-impl.c (g_thread_init_with_errorcheck_mutexes): Call
	g_thread_impl_init() before accessing
	g_thread_functions_for_glib_use_default, as the
	g_thread_impl_init() function might modify it.
	
2001-09-26  Tor Lillqvist  <tml@iki.fi>

	* makefile.mingw.in: Fix couple of typos.

	* gthread.def: Add g_thread_init_with_errorcheck_mutexes.

2001-09-25  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-impl.c: Corrected the array size (cough, cough). Pointed
	out by gpablo@intersystems.com.ar. Fixes #61065.

2001-09-25  Tor Lillqvist  <tml@iki.fi>

	* Makefile.am: Use new macros for .def file, and check for
	MS_LIB_AVAILABLE, new rule to build MS import library.

	* makefile.msc.in: Use same DLL and import library names as
	libtool.
	
2001-09-19  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c: Add g_thread_equal_posix_impl and add to the
	function vector g_thread_functions_for_glib_use_default.
	
	* gthread-solaris.c, gthread-win32.c: Add NULL as equal function,
	as on those two platforms you don't need an equal function.

2001-09-19  Tor Lillqvist  <tml@iki.fi>

	* gthread.rc.in: Correct InternalName and OriginalFilename to
	match what we actually produce.

2001-07-20  Hans Breuer  <hans@breuer.org>

	* makefile.msc.in : reflect glib move

2001-06-07  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-win32.c: Use g_win32_error_message to beautify error
	messages.

2001-05-24  Hans Breuer  <hans@breuer.org>

	* makefile.msc.in : pthread isn't required anymore

2001-05-22  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-win32.c (g_cond_wait_internal): Also return TRUE for
	late arrived signals. Thanks to Steven Brooks
	<umbrook0@cs.umanitoba.ca> for pointing out.

	* gthread-impl.c (g_thread_init): Move the thread implementation
	initialization to before assigning GThreadFuncs, which now is just
	struct assigned and not memcpy'ed. Completed check for zero
	members of GThreadFuncs. 

	* makefile.mingw: Don't link to pthread anymore.

	* gthread-win32.c: New file for native thread support for
	win32. Thanks to Hans Breuer <hans@breuer.org> to got me
	kickstarted.

	* Makefile.am: Also distribute gthread-win32.c.

Fri May  4 04:14:45 2001  Tim Janik  <timj@gtk.org>

	* gthread-posix.c (g_cond_timed_wait_posix_impl): don't g_assert()
	the user specified time, but g_return_val_if_fail() here.

2001-04-03  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c: Added special case for priorities on
	  FreeBSD. Thanks to David Reid <dreid@jetnet.co.uk> for the info.

	* gthread-impl.c: Made two macros safe with ().

2001-03-10  Tor Lillqvist  <tml@iki.fi>

	* Makefile.am: Use the _LIBADD dependency on libglib only on
	Win32.

2001-02-21  Tor Lillqvist  <tml@iki.fi>

	* Makefile.am: Use libglib-1.3.la from top_builddir. Invoke
	libtool with -no-undefined for Win32 and Cygwin.

	* gthread-impl.c (g_thread_init): Win32 code snippet used also on
	Cygwin.

2001-02-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c: Removed the G_THREAD_USE_PID_SURROGATE
	implementation, which is now in gthread.c.

2001-01-30  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-impl.c (g_thread_init_with_errorcheck_mutexes): Call
	g_thread_impl_init(), as g_thread_init won't call it.

	* gthread-impl.c (g_mutex_free_errorcheck_impl): Fixed it for
	real. Sorry for this mess. It looked like a real obvious fix, so I
	didn't check. Bad boy. Added some casts to quiet the compiler.

2001-01-29  Havoc Pennington  <hp@redhat.com>

	* gthread-impl.c (g_mutex_free_errorcheck_impl): hack this so it
	compiles, needs fixing for real.

2001-01-29  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-impl.c (g_mutex_free_errorcheck_impl): Add new check to
	errorcheck mutexes to abort, if a locked mutex is freed.

2001-01-03  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-solaris.c, gthread-posix.c: Made g_thread_min_stack_size
	static.

2000-11-28  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-impl.c: Revamped errorcheck mutexes and added errorcheck
	cond_wait() and cond_timed_wait() funtions. This makes he whole
	thing work. Now we only show the location of the locking/unlocking
	for -DG_ERRORCHECK_MUTEXES and not the name of the mutex.

2000-11-21  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-impl.c, gthread-posix.c, gthread-solaris.c: Removed
	g_thread_map_priority function in favour of the
	g_thread_priority_map array.  Initialize the array with
	PRIORITY_{...}_VALUE, if available and interpolate beetween the
	bounds if .._NORMAL_.. and .._HIGH_.. are not available.

	* gthread-posix.c: If we should use the PID niceness as a
	surrogate for thread priorities (G_THREAD_USE_PID_SURROGATE is
	defined), then disable normal priority handling and use PIDs and
	setpriority() instead. Depends on the thread to write its PID into
	the place after the thread id right after thread creation.

2000-11-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c: Include <sched.h> if available.

2000-11-02  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-none.c: Add G_MUTEX_SIZE as needed for gthread-impl.c

2000-10-25  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* Makefile.am : Add @GLIB_DEBUG_FLAGS@ to INCLUDES for accessing
	-DG_ENABLE_DEBUG as needed in gthread-posix.c.

	* gthread-posix.c: Revamped error handling for native thread
	function calls. Now EPERM errors are ignored for some commands and
	only a warning message is output once (at first occurrence).

2000-10-15  Raja R Harinath  <harinath@cs.umn.edu>

	* Makefile.am (BUILT_EXTRA_DIST): New variable.
	(dist-hook): Handle $(BUILT_EXTRA_DIST).

2000-09-29  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-impl.c: Added errorcheck mutexes. New exported function
	g_thread_init_with_errorcheck_mutexes, which is called instead of
	g_thread_init, when compiled with -DG_ERRORCHECK_MUTEXES. New
	static functions
	g_mutex_(new|lock|trylock|unlock|free)_errorcheck_impl to
	implement errorcheck mutexes.

	* gthread-posix.impl.c, gthread-solaris-impl.c: Define the size of
	a mutex.

2000-09-21  Tor Lillqvist  <tml@iki.fi>

	* makefile.mingw.in: Use pthreads macros from ../build.

2000-09-06  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c, gthread-solaris.c:
	s/G_MICROSEC/G_USEC_PER_SEC/ and s/G_NANOSEC/G_NSEC_PER_SEC/	

2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c (g_thread_create_posix_impl): Use GError to
	report errors.

	* gthread-solaris.c (g_thread_create_solaris_impl): Use GError to
	report errors as well.
	
2000-05-13  Tor Lillqvist  <tml@iki.fi>

	* makefile.mingw.in: New file, with gthread stuff moved from
	../makefile.mingw.in.

	* Makefile.am: Add to EXTRA_DIST, add rule to build makefile.mingw.

2000-04-25  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-solaris.c (g_mutex_new_solaris_impl): Changed the scope
	of the initialized mutex to USYNC_THREAD. Thanks to Soeren
	Sandmann <sandmann@daimi.au.dk> for pointing that out.

2000-03-20  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c (posix_check_for_error): Forgot a '}' in a macro
	for DCE-threads. Thanks to Karl Nelson <kenelson@ece.ucdavis.edu>
	for pointing that out.

2000-03-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c: Don't use priorities for threads, when the
	minimal/maximal priorities couldn't be determined at configure
	time.

	* gthread-posix.c: Don't check for errors, when setting the scope
	of a tread to system, as some posix implementations can't do that
	and we don't want the thing to fail because of that.

2000-02-22  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c, gthread-solaris.c: check for sysconf
	(_SC_THREAD_STACK_MIN), which returns the minimal stack size for
	new threads. Patch from Soeren Sandmann <sandmann@daimi.au.dk>.

1999-11-16  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c, gthread-solaris.c: Changed the prototype of
	thread_create and thread_self to return the system thread into
	provided memory instead of a return value. This is necessary, as
	HPUX has a pthread_t, that is bigger than the biggest integral
	type there. Made some more functions static.

	* gthread-posix.c: Small fixes for DCE threads: Detaching has to
	be done after thread creation for DCE.

1999-06-21  Tor Lillqvist  <tml@iki.fi>

	* gthread-posix.c: Guard pthread_attr_setscope call with test
	for _POSIX_THREAD_PRIORITY_SCHEDULING, which should be defined
	in a <pthread.h> that supports that feature.
	
1999-06-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c, gthread-solaris.c: Added the native
	implementations for the GLib's extended thread support.

	* gthread-nspr.c: Removed for good. NSPR is nothing we would want
	to build upon.

	* gthread.c: Renamed to gthread-impl.c to avoid confusion with
	../gthread.c (Formerly known as the file called gmutex.c)

	* testgthread.c: Removed. The new and much extended tests are in
	../tests/thread-test.c.

	* Makefile.am: Changed to reflect the changes above.

1999-03-31  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c: Use the right default arguments for the
	construction of mutexes and conds for dce threads, these are
	&pthread_(cond|mutex)attr_default instead of NULL. Hint from
	D. Emilio Grimaldo Tunon <emilio_tunon@nl.compuware.com>.

1999-03-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* Makefile.am (INCLUDES): Added @GTHREAD_COMPILE_IMPL_DEFINES@.

1999-03-12  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c (g_private_get_posix_impl): Fixed typo for DCE
	implementation.

1999-03-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c: Now handle both dce and posix threads. They are
	sufficently equal. Please do not commit my change to
	glib-1-2/gthread/gthread-posix.c from 1999-03-03, as the current
	change will take care of that too.

1999-03-03  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c: Fixed broken mutex_trylock and slightly broken
	cond_timed_wait functions.

1999-02-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* testgthread.c (test_mutexes): Use new signature of
	g_static_mutex* functions.

1999-02-08  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread-posix.c (g_private_get_posix_impl): Use the
	HAVE_PTHREAD_GETSPECIFIC_POSIX macro to determine, which signature
	to use for pthread_getspecific.

Tue Jan 19 20:56:02 1999  Tor Lillqvist  <tml@iki.fi>

	* Makefile.am (EXTRA_DIST): Added gthread.def.

Sun Jan 17 10:58:19 1999  Tor Lillqvist  <tml@iki.fi>

	* gthread.def: New file.

1999-01-16 1999  Tor Lillqvist  <tml@iki.fi>

	* gthread-posix.c: Conditionalize <sys/time.h> inclusion.

1999-01-07  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* testgthread.c: conditionally compile according to the
	G_THREADS_IMPL_??? macros.
	(test_private_func): use rand_r instead of rand to make it
	thread safe.

1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* testgthread.c (new_thread): As a joinable thread seems to be the
	default on posix, leave the explicit setting out, as it causes
	problems on some older platforms.

Wed Dec 16 22:21:33 CST 1998 Shawn T. Amundson <amundson@gtk.org>

	* gthread-posix.c: use g_free in mutex_free (from Tim Janik)

Thu Dec 17 03:38:57 1998  Tim Janik  <timj@gtk.org>

	* Makefile.am: -DG_LOG_DOMAIN="GThread", we don't need an extern
	variable for that (noticed by Joel Becker <jlbec@ocala.cs.miami.edu>)

Wed Dec 16 03:16:16 1998  Tim Janik  <timj@gtk.org>

	* testgthread.c: s/g_thread_supported/g_thread_supported ()/
	* gthread.c: s/g_thread_supported/g_threads_got_initialized/
	(g_thread_init): bail out if G_THREADS_ENABLED is not defined.

1998-12-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* Makefile.am (EXTRA_DIST): updated.

	* testgthread.c, gthread-*.c: Changed private to private_key to
	avoid problems when compiling with under C++.

	* gthread-none.c: 
	s/g_mutex_functions_for_glib_use/g_thread_functions_for_glib_use/

	* ChangeLog: from now on there is an extra ChangeLog for gthread
	

