2005-11-17 Matthias Clasen <mclasen@redhat.com>
* glib/gbacktrace.c:
* glib/gdate.c:
* glib/gthread.c: const correctness fixes, found
by Arjan van de Ven and gcc.
Tue Nov 1 16:24:20 2005 Tim Janik <timj@imendio.com>
* glib/gmem.[hc]: prepared deprecation of GMemChunk and GAllocator.
added g_slice_*() API to allocate and cache small bits of memory.
an actuall allocator implementation for g_slice_*() is still pending.
* glib/gthread.[hc]: changes from a patch by Matthias Clasen.
changed GRealThread list to use in-structure *next; fields instead
of GSList, in order for thread iteration to not depenend on g_slice_*()
indirectly.
_g_thread_mem_private_get():
_g_thread_mem_private_set(): added accessors for private memory,
needed because the ordinary GPrivate implementation relies on GArray
and GSList and therefore indirectly on working g_slice_*() allocations.
* glib/gthread.[hc]:
g_thread_foreach(): new public API function to loop over all existing threads.
* glib/gdataset.c:
* glib/gstring.c:
* glib/gcache.c:
* glib/garray.c:
* glib/gqueue.c:
* glib/gslist.c:
* glib/glist.c:
* glib/ghash.c:
* glib/gtree.c:
* glib/ghook.c:
* glib/gmain.c:
* glib/gnode.c:
removed GAllocator and free list usages and accompanying locks.
use g_slice_*() API to allocate and cache small bits of memory.
* glib/ghook.h: removed GMemChunk field from public API.
* glib/gslist.h:
* glib/glist.h: deprecate allocator API, provide _free1() for consistency.
* glib/gnode.h: deprecate allocator API.
* glib/gmain.c: reordered GPollRec fields so g_slice_free_chain() can
be used for poll rec lists.
* glib/grel.c: removed mem chunk usage, and allocated tuples via g_slice_*().
g_relation_destroy(): free all tuples from the all_tuples hash table,
this effectively maintains the life time track keeping of tuples.
g_relation_delete_tuple(): free tuples which are removed from the
all_tuples hash table. this fixes a temporary leak that was present
in the memchunk code until the destruction of the relation.
2005-09-28 Michael Natterer <mitch@gimp.org>
* gtype.h (G_IMPLEMENT_INTERFACE): revert last change, it breaks
all users of G_IMPLEMENT_INTERFACE() inside
G_DEFINE_TYPE_WITH_CODE(), since apparently GCC doesn't like
commas enclosed in {}, not (), in nested macro calls.
2005-09-26 Matthias Clasen <mclasen@redhat.com>
* glib-mkenums.in: Don't hang on '{' following a trigraph comment
in the same line. (#314890, Mathias Hasselmann)
Thu Sep 22 12:42:12 2005 Tim Janik <timj@gtk.org>
* gparam.c (g_param_spec_internal): fix pspec->name assignment which
needs to be strdup()ed for non G_PARAM_STATIC_NAME pspecs. this fixes
recently introduced crashes during plugin unloading.
also, ensure that static pspec names are canonicalized.
* gsignal.h: reverted last change from matthias, we don't guarantee
that type ids aren't mangled with G_SIGNAL_TYPE_STATIC_SCOPE anywhere.
2005-09-20 Matthias Clasen <mclasen@redhat.com>
* gsignal.h (struct _GSignalQuery): Remove the misleading comment
about G_SIGNAL_TYPE_STATIC_SCOPE, since we don't allow that
on return types.
2005-09-08 Kjartan Maraas <kmaraas@gnome.org>
* gclosure.c: (g_closure_set_meta_marshal): Remove some unused
code.
* gsignal.c: (g_signal_emitv): Same here
* gtype.c: (g_type_register_fundamental): And here
* testgobject.c: Mark some functions static.
2005-09-05 Matthias Clasen <mclasen@redhat.com>
* gsignal.c (struct _SignalNode): Make the name field const.
(g_signal_newv): Don't keep an unnecessary extra copy of the
signal name around, and don't forget to free the name if
an existing node is reused.
2005-08-31 Matthias Clasen <mclasen@redhat.com>
* gparam.c (g_param_spec_internal): Intern the name here,
since we need the quark anyway when sending change notification.
* gobject/genums.c: (g_flags_get_first_value): Special-case flag
value of 0. Instead of returning the first random GFlagsValue
we come across, return the GFlagsValue for 0 if it exists or
NULL if it does not exist. Never return the GFlagsValue for 0
if the requested flags value is nonzero.
2005-08-09 Matthias Clasen <mclasen@redhat.com>
* gvaluetransform.c: Access enum and flags
values as v_long/v_ulong, not v_int/v_uint,
to make value transformation of such types
work on bigendian 64bit machines. (#312485,
Michael Lorenz)
2005-08-02 Matthias Clasen <mclasen@redhat.com>
* gclosure.c (union ClosureInt): Mark the vint member as
volatile, which seems to be necessary to make atomic operations
work on s390.
Mon Aug 1 23:00:42 2005 Tim Janik <timj@imendio.com>
* gclosure.c: turned all modifications to the first 32 integer bits in a
closure into atomic accesses. wrapped write accesses into special macros
to keep the atomic modification logic in a single place. comment cleanups.
* gclosure.h: made all atomicly accessed closure fields volatile.
* gobject.h: made ref_count field volatile.
Sun Jul 31 02:04:23 2005 Tim Janik <timj@gtk.org>
* gobject.c: use g_datalist_set_flags() and g_datalist_unset_flags() to
allow proper locking around &qdata modifications.
Sat Jul 30 21:10:26 2005 Tim Janik <timj@gtk.org>
* gobject.c: reverted notify_mutex introduction, since this prevents
parallelized setting of object properties on different objects, and
serves no apparent purpose (to me at least).
g_object_real_dispose(): removed non-atomic reference count
modifications.
g_object_unref(): make sure the closures array is destroyed when
destroying signal handlers.
* gparam.c: cosmetic changes.
* gsignal.c: comment fixup. allow 16bit blocking count.
* gsignal.c: reverted GClosure related changes.
* gclosure.c: reverted premature commit of atomic reference
counting attempt.
2005-07-15 Matthias Clasen <mclasen@redhat.com>
Make refcounting threadsafe by using atomic
operations. (#166020, Wim Taymans)
* gobject.c: Use a recursive lock to protect the
notify queue.
(g_object_unref): Get rid of g_object_last_unref and
do the last unref handling in g_object_unref.
(g_object_ref, g_object_unref): Use atomic operations.
* gsignal.c (struct _HandlerMatch): Use a full integer
for the ref_count field.
(handler_ref, handler_unref_R): Use atomic operations.
* gparam.c (g_param_spec_ref, g_param_spec_unref):
Use atomic operations instead of a lock to make the
refcounting threadsafe.
* gclosure.c (g_closure_ref, g_closure_unref): Use atomic
operations. This is more complicated here, since the
refcount is stored in a bitfield, so we also have
to access all other bitfield members atomically.
* gsignal.c (handlers_find): Read the meta_marshal flag
of the closure atomically.
* tests/Makefile.am (SUBDIRS): Add tests/refcount
* configure.in: Add tests/refcount
* tests/refcount/properties.c: Test property changes
from multiple threads.
* tests/refcount/signals.c: Test signal emission from
multiple threads.
* tests/refcount/objects.c: Test refcounting from
multiple threads.
* tests/refcount/objects2.c:
* tests/refcount/properties2.c: Tests to measure the
overhead of threadsafe refcounting.
* glib/giochannel.c (g_io_channel_ref, g_io_channel_unref):
Use atomic operations to make refcounting
threadsafe. (#166020, Wim Taymans)
2005-07-11 Matthias Clasen <mclasen@redhat.com>
* gobject.h:
* gobject.symbols: Remove G_GNUC_NULL_TERMINATED from
g_object_new again, since that makes gcc warn on calls of
the form g_object_new (some_type, NULL)
2005-07-09 Tor Lillqvist <tml@novell.com>
* configure.in: Don't use autoconf variables for the resource
object files on Win32 any longer. Instead handle that in the
Makefile.am files. Check for windres.
* glibconfig.h.win32.in: Minor tuning to match the
configure-produced glibconfig.h closely.
* */Makefile.am: Don't use the scripts in build/win32 to
compile the .rc file into a resource object file. (This means
we loose the build number increment magic, but I doubt it was
that useful anyway.) Instead use windres directly. To pass the
normal .o file produced by windres through libtool, which
wants .lo files, pass it directly to the linker using a -Wl
option.
* */*.rc.in: Thus replace BUILDNUMBER with 0.
2005-06-26 Tor Lillqvist <tml@novell.com>
* Makefile.am: libtool installs/uninstalls the import library, no
need to do it ourselves. Do still install/uninstall the .def file,
though.
2005-06-24 Tor Lillqvist <tml@novell.com>
* glib/Makefile.am
* gmodule/Makefile.am
* gobject/Makefile.am: Current GNU tools do understand the
PRIVATE keyword.
* glib/gfileutils.c (g_mkdir_with_parents): Return error with
EINVAL also for empty pathnames.
(g_build_pathname_va): Fix typo.
2005-06-13 Matthias Clasen <mclasen@redhat.com>
* gparam.h (GParamFlags): Re-add G_PARAM_PRIVATE as a
deprecated name for bit 5, since some language bindings
have it bound.
2005-05-20 Matthias Clasen <mclasen@redhat.com>
* gvaluetypes.c (g_value_set_string): dup the new value
before freeing the old, just in case. (#172142, Morten
Welinder)
2005-05-05 Owen Taylor <otaylor@redhat.com>
* gobject.[ch] gobject.symbols: Add
g_object_add/remove_toggle_ref() functions to get notification
when a reference count is the last remaining reference; this
enables better memory management for language bindings.
(http://mail.gnome.org/archives/gtk-devel-list/2005-April/msg00095.html)
2005-05-05 Owen Taylor <otaylor@redhat.com>
* glib/gdataset.[ch] glib/gdatasetprivate.h: Add
g_datalist_set/unset_flags(), g_datalist_get_flags() functions
to squeeze some bits into a GDataSet... this is needed for
efficient implementation of toggle references in GObject.
* tests/gobject/references.c tests/gobject/Makefile.am:
Add a test case for weak and toggle references.
* glib/gfileutils.[ch]: Rename g_file_replace() back
to g_file_set_contents().
* glib/glib.symbols: Update.
2005-05-05 Owen Taylor <otaylor@redhat.com>
* glib/Makefile.am glib/glib-sections.txt gobject/gobject-sections.txt:
Update
* gobject/tmpl/objects.sgml: Document toggle-references.
2005-03-25 Matthias Clasen <mclasen@redhat.com>
* gparam.c (param_spec_ht_lookup): Don't do the second
lookup if the name was already canonical. (#171502, Morten
Welinder)
2005-03-14 Matthias Clasen <mclasen@redhat.com>
* abicheck.sh: Make work again.
* gsourceclosure.c: Fix a typo.
Make PLT-reduction work with gcc4, and don't include
everything in gobjectalias.h:
* gobject.symbols: Group symbols by header and source
file.
* makegobjectalias.pl: Protect definitions by the same
preprocessor symbols used to guard the headers. Move
the alias declarations to a separate file which is
produced when calling makegalias.pl -def
* Makefile.am (gobjectaliasdef.c): Add a rule to
build this file.
* *.c: Include gobjectalias.h after the other i
GLib headers, include gobjectaliasdef.c at the bottom.
2005-02-24 Tor Lillqvist <tml@novell.com>
* Makefile.am (BUILT_EXTRA_DIST): Don't distribute
glib.def. (#167496, J. Ali Harlow)
* gobject/Makefile.am (EXTRA_DIST): Don't distribute
gobject.def. (#167496, J. Ali Harlow)
Sun Feb 6 22:00:46 2005 Manish Singh <yosh@gimp.org>
* abicheck.sh: feed the contents of config.h and glibconfig.h
into the preprocessor, since glib.symbols could need #defines
from them.
2005-02-04 Matthias Clasen <mclasen@redhat.com>
* configure.in: Define a HAVE_GNUC_VISIBILITY automake
conditional.
* glib/Makefile.am (TESTS): Only check the abi if
the compiler supports visibility, otherwise we
know there will be (harmless) extra symbols.
(#166181, Ed Avis)
2005-01-11 Owen Taylor <otaylor@redhat.com>
* configure.in: Add gmodule-export-2.0.pc to AC_CONFIG_FILES.
* glib/Makefile.am gobject/Makefile.am gthread/Makefile.am:
Use grep | head -n 1 instead of grep -m 1 which doesn't work
with slightly older versions of GNU grep in
install-libtool-import-lib rule.
2005-01-06 Tor Lillqvist <tml@iki.fi>
* glib/Makefile.am
* gobject/Makefile.am: glib.def and gobject.def are generated, not
in $(srcdir). (#163143, J. Ali Harlow)
2004-12-27 Matthias Clasen <mclasen@redhat.com>
* configure.in: Add an OS_LINUX conditional.
* glib/Makefile.am (TESTS): Only check the ABI on
linux, since the shell script is not portable, and libtool
deficiencies may distort the ABI on other platforms. (#161741)
2004-11-30 Tor Lillqvist <tml@iki.fi>
* glib/Makefile.am (glib.def)
* gobject/Makefile.am (gobject.def): gcc -E complains "linker
unused because linking not done" if told to preprocess an
*.symbols file. Use '-' and redirection to pass it as standard
input instead.
Sun Nov 28 01:37:54 2004 <timj@birnet.org>
* gsignal.c: applied patch by sven@gimp.org (#153727) to reduce
signal connection complexity from O(n_handlers) to O(1).
2004-11-23 Matthias Clasen <mclasen@redhat.com>
Fix a problem with the PLT reduction changes which caused the
internal aliases to lose all attributes.
* glib/glib.symbols: Add attribute annotations.
* glib/makegalias.pl: Keep attribute annotations, but strip PRIVATE.
* glib/Makefile.am (glib.def): Strip attribute annotations, but keep
PRIVATE.
2004-11-11 J. Ali Harlow <ali@juiblex.co.uk>
* gobject/Makefile.am:
* glib/Makefile.am (gtk.def): Use embedded tab rather than '\t'
escape sequence. (#157951)
Mon Nov 8 10:47:41 2004 Manish Singh <yosh@gimp.org>
* gobject/gsourceclosure.c: removed wrap_g_io_channel_ref() hack,
since g_io_channel_ref() has a compatible API now.
2004-10-29 Hans Breuer <hans@breuer.org>
* glibconfig.h */makefile.msc.in : updated [and finally fixed my
script to produce ready to go de-in(ed) files, w/o autotools]
* */*.rc.in : updated copyrights to 2004
* glib/gutils.c : some CSIDL_* defines lacking from older SDK;
use the same fallback mecahnism as on *NIX where ever applicable
2004-10-26 Matthias Clasen <mclasen@redhat.com>
* glib/glib.symbols: Add new symbols.
* abicheck.sh: Don't include symbols which are just in the
symbols list for .defs file compatibility.
2004-10-23 Matthias Clasen <mclasen@redhat.com>
* gtype.h (GTypeInterfaceCheckFunc): Rename first parameter to
check_data, since apparently the system headers on AIX leak a
macro named func_data. (#155178, Andrea Campi)
Wed Oct 6 02:12:44 2004 <timj@birnet.org>
* gtype.c (g_type_instance_get_private): applied patch from Jean-Yves
Lefort <jylefort@brutele.be> to not access the instance_real_class_bsa
pointer without holding the instance_real_class lock.
2004-10-04 Matthias Clasen <mclasen@redhat.com>
* gsignal.c (g_signal_add_emission_hook): Improve the warning
if G_SIGNAL_NO_HOOKS is set. (#154299, Nickolay V. Shmyrev)
2004-09-22 Tor Lillqvist <tml@iki.fi>
* Makefile.am (install-libtool-import-lib): [Win32] Add code to
remove the bug-compatibility entries (see #134813, and related
comments below) from the import library. The PRIVATE keyword in
the .def file is supposed to mean that, but it isn't implemented
yet by GNU ld.
* makegobjectalias.pl: In case the symbol is followed by some
stuff ("PRIVATE") that's intended for the .def file, use just the
actual symbol.
* gobject.symbols: For binary bug compatibility on Win32, add the
g_slist_remove_all and g_unichar_validate symbols inside #ifdef
INCLUDE_INTERNAL_SYMBOLS. (See #134813 and log entries from March
below.)
2004-09-16 Matthias Clasen <mclasen@redhat.com>
Implement the same PLT reduction technique used in GTK+:
* Makefile.am: Generate gobjectalias.h from gobject.symbols.
(BUILT_SOURCES): Add gobjectalias.h.
* makegobjectalias.pl: Script to generate gobjectalias.h.
* *.c: Include gobjectalias.h
2004-09-16 Matthias Clasen <mclasen@redhat.com>
Add ABI control using the same technique that is used in GTK+.
* gobject.symbols: Master list of symbols.
* gobject.def: Removed. It is now generated from gobject.symbols.
* Makefile.am (gobject.def): Generate from gobject.symbols.
(TESTS): Add abicheck.sh
(EXTRA_DIST): Add abicheck.sh
(export_symbols): Don't export _-prefixed symbols.
* gtype.h:
* gtype.c: Move the declarations of the various _init() functions
to the header, and mark them as G_GNUC_INTERNAL.
2004-07-21 Matthias Clasen <mclasen@redhat.com>
* glib-genmarshal.c (put_marshal_value_getters): Use the
correct fields for enums and flags. (#145015,Tommi Komulainen)
Tue Jul 6 00:46:43 2004 Matthias Clasen <maclas@gmx.de>
* gtypemodule.h:
* gtypemodule.c: Fix the declarations of the new
functions to return GType, not void.
Also add missing includes. (#145508, Morten Welinder)
Wed Jun 23 12:55:34 2004 Matthias Clasen <maclas@gmx.de>
* gtype.h (G_DEFINE_TYPE_EXTENDED): Add an initializer for
the g_define_type_info.value_table. (#144678,Mariano
Suárez-Alvarez)
Fri Jun 18 22:55:36 2004 Matthias Clasen <maclas@gmx.de>
* gsourceclosure.h (__G_SOURCECLOSURE_H__): Actually
define the guard after checking for it. (#108038,
Morten Welinder)
2004-04-30 Matthias Clasen <mclasen@redhat.com>
* === Released 2.4.1 ===
* glib/libcharset/Makefile.am (INCLUDES): Add -I$(top_srcdir)
to make make distcheck happy.
* configure.in: Version 2.4.1, interface age 1.
* NEWS: Updates
2004-04-15 Matthias Clasen <mclasen@redhat.com>
* gparamspecs.c (param_float_init): Correct the initial
minimal value to be -G_MAXFLOAT. The initial values were
inconsistant before, with the initial default being smaller
than the inital minimum.
(param_double_init): Correct the initial minimal value
to be -G_MAXDOUBLE.
* glib/tmpl/types.sgml: Correct the description of the
gfloat and gdouble ranges.
2004-03-06 Tor Lillqvist <tml@iki.fi>
* README.win32: Update.
* configure.in
* Makefile.am
* */Makefile.am: Drop the hand-written makefile.mingw(.in)
files. They haven't been maintained in a long time. As several
people have managed to build GLib for Win32 using the
autoconfiscation mechanism, there is no real reason to even try to
maintain the hand-written mingw makefiles.
2004-03-04 Tor Lillqvist <tml@iki.fi>
* gobject.def: Another of the glib DLL's functions was erronously
present in the stable branch's gobject.def: g_unichar_validate,
and nobody noticed until too late. Thus there are applications
deployed that expect it to be found in the gobject DLL, and to
keep ABI compatibility, we must keep it there forever. Argh.
Mon Mar 1 16:49:51 2004 Owen Taylor <otaylor@redhat.com>
* === Released 2.3.5 ===
* configure.in: Version 2.3.5, interface ago 0.
* NEWS: Some further updates.
2004-03-01 Tor Lillqvist <tml@iki.fi>
* gobject.def: Add g_slist_remove_all back for ABI
compatibility. That entry point actually is in the glib DLL, but
it was at some time many years ago by mistake added to
gobject.def. Thus there presumably are executables out there that
expect it to be exported from the gobject DLL. We don't want to
break those. (#134813, J. Ali Harlow)
Tue Feb 3 21:24:01 2004 Tim Janik <timj@gtk.org>
* gtype.h (_G_TYPE_CVH): provide a short-cut version for
this macro in case value->g_type==checked_type for gcc, similar
to instance and class check short-cuts. this speeds up code that
makes frequent use of G_VALUE_HOLDS_*() (e.g. setters/getters).
* gtype.c (type_data_last_unref_Wm): don't call class-cache functions
for the uncached case, this rendered g_type_class_unref_uncached()
useless. pointed out by Stefan Westerfeld.
Sat Jan 24 18:20:13 2004 Tim Janik <timj@gtk.org>
* gtype.h: prefixed the parent_class variable defined by G_DEFINE_TYPE()
with type_name. removed type_parent_class argument
from G_DEFINE_TYPE_EXTENDED().
Sun Jan 11 15:34:35 2004 Manish Singh <yosh@gimp.org>
* gsourceclosure.c: wrap g_io_channel_ref in a function that returns
the passed in GIOChannel, so we aren't abusing GBoxedCopyFunc
semantics. Fixes bug #131076.
Sat Jan 10 02:43:20 2004 Tim Janik <timj@gtk.org>
* gtype.h: made G_DEFINE_TYPE_INTERNAL() public by renaming it to
G_DEFINE_TYPE_EXTENDED() and moving it into the appropriate section.
2003-12-30 Murray Cumming <murrayc@usa.net>
* gobject/glib-mkenums.in: Added a lowercase_name option, to be used
next to the enum declaration, where the flag option is already used,
when it is not possible to guess where to put the underscores in the
_get_type() function name, for instance for GNOMEVFSURIHide.
Wed Dec 17 23:29:17 2003 Matthias Clasen <maclas@gmx.de>
* gvalue.c (g_value_peek_pointer): Use g_assert() instead of
g_return_val_if_fail(), suggested by Sheldon Simms.
Sat Nov 29 14:57:20 2003 Tim Janik <timj@gtk.org>
* gobject.c: fix g_object_set() whithin _init() implementations
not working for construct-only properties.
(g_object_init): make the object enter a construct_objects list.
(g_object_newv): remove object from construct_objects after creation.
(g_object_set_valist):
(g_object_set_property): allow construct-only properties for
objects which are in construct_objects.
Thu Nov 27 17:53:52 2003 Tim Janik <timj@gtk.org>
* gtype.[hc]:
(g_type_class_peek_static): variant of class_peek() which works for
static types only.
* gobject.c:
(g_object_do_class_init): make ::notify a run-action signal.
(g_object_newv): use g_type_class_peek_static() by default to
speed up common code path (trades two write-locks for one read-lock).
(g_object_disconnect):
(g_object_connect): allow signal specification words to be
seperated by '-'.
(g_object_set_valist):
(g_object_new_valist): don't leak values.
(g_object_get_property): check property for readability.
(g_object_set_property): check property for writability and to
not be construct-only.
(g_object_set_valist): check property to not be construct-only.
Tue Oct 14 17:40:19 2003 Owen Taylor <otaylor@redhat.com>
* gparamspecs.[ch]: Add a new GParamSpecOverride type
that is a pointer to a different paramspec in a parent
class or interface.
* gparam.[ch]: Add g_paramspec_get_redirect_target()
which follows GParamSpecOverride to the real property.
Make g_param_spec_pool_list() hand redirections,
properties on interfaces.
* gobject.[ch] gobjectnotifyqueue.c: Add
g_object_interface_install_property,
g_object_interface_find_property,
g_object_interface_list_properties(). Redirect virtually all
publically exposed GParamSpec's to the redirect target if
any. (->constructor is the exception.)
(#105894)
Thu Oct 2 01:16:50 2003 Owen Taylor <otaylor@redhat.com>
* gtype.[ch]: Add g_type_add/remove_interface_check(),
which allows inserting a post-interface-initialization
check.
* testgobject.c: Fix a deprecated usage.
Mon Sep 29 10:51:01 2003 Owen Taylor <otaylor@redhat.com>
* gtype.[ch]: Add g_type_default_interface_ref/peek/unref
for accessing the default vtable of an interface.
Fri Sep 26 17:24:53 2003 Owen Taylor <otaylor@redhat.com>
* gtype.c (g_type_instance_get_private): You can
have instance_real_class_bsa be non-NULL, but still
the class not be in the bsa. (Found by Kris Rietveld)