2.13.4:

2007-04-11  Armin Burgmeier  <[email protected]>

       * tools/pm/WrapParser.pm: Added peek_token() function which only
       returns the next token without removing it from the tokens array.
       Parse '/**' as a separate token and handle it in a special way so that
       when the final '*/' is encountered and _WRAP_SIGNAL follows, the
       comment is not terminated but continued by that automatically
       generated doxygen comment.

       * tools/pm/Output.pm: Added a merge_doxygen_comment_with_previous
       parameter in output_wrap_sig_decl(). If it is nonzero, the function
       assumes that there is already a comment open and continues to use it
       instead of opening a new comment by removing the leading '/**' from
       what get_refdoc_comment() returns. Bug #378810.

2007-04-06  Johannes Schmid <[email protected]>

       * tools/generate_wrap_init.pl.in:
       Use _CLASS_DEPRECATE instead of just _DEPRECATE to
       known whether a whole class should be avoided in wrap_init.
       Otherwise every .hg file containing deprecated methods
       might get ignored. (Fixes Gtk::TextBuffer bug in maemo)

2007-03-19  Bradley Bell  <[email protected]>

       * glib/glibmm/helperlist.h: Change variable name to avoid
       warnings about a shadowed member.
       Bug #420316.

2007-03-19  Bradley Bell  <[email protected]>

       * glib/glibmm/utility.h: remove g_free prototype, include gmem.h
       instead, to avoid a warning about a redundant declaration.
       Bug #420339.

2007-03-17  Armin Burgmeier  <[email protected]>

       * tools/m4/signal.m4:
       * tools/m4/vfunc.m4:
       Use static_cast in vfuncs and signal handlers to cast the
       wrapper object to ObjectBase*. This is enough to check whether the object is
       from a derived type or not. A slow dynamic_cast has only to be performed if it
       is derived, and the C++ vfunc needs to be called.
       * glib/glibmm/objectbase.h: This requires ObjectBase::is_derived_ to be public,
       because it is called on a ObjectBase* rather than the actual type.
       This causes a slight speed up of vfuncs and default signal handler invokation.

       Also added commented-out inline versions of ObjectBase::_get_current_wrapper() and
       ObjectBase::is_derived(), which could be used in the generated code if we find
       that this has significant performance benefits. Note that these methods must be
       additional to the non-inline methods, because inline methods are not usually exported in the
       shared library.

2007-02-10  Murray Cumming  <[email protected]>

       * examples/options/main.cc: Use a default value, to show that it
       can be done.
       (This change, from 2006-03-30 was restored after being accidentally lost on Apr 12 2006)

2007-02-10  Armin Burgmeier <[email protected]>

       * glib/src/optiongroup.ccg: default_c_arg(): Set the initial
       value of the C argument to the value the C++ argument has, to avoid
       that glibmm resets arguments to zero that were not given on the
       command line.
       (This change, from 2006-03-30 was restored after being accidentally lost on Apr 12 2006)

2007-01-28  Daniel Elstner  <[email protected]>

       * tools/m4/ctor.m4: If the argument list is empty, call the non-
       varargs overload of the Glib::ConstructParams constructor instead
       of using an empty varargs list.  This mistake was exposed thanks
       to the recent addition of G_GNUC_NULL_TERMINATED to the varargs
       constructor declaration.  Fortunately it was harmless in this case.
       Also use the opportunity to clean up the M4 code and prefix builtin
       M4 macros with m4_, so that we may get rid of the unprefixed macros
       altogether some day.

Thu, 25 Jan 2007 23:13:05 +0100 Dodji Seketeli

       * tools/m4/base.m4:
         prefix the builting mkstemp with 'm4' because otherwise,
         m4 1.4.8 recognizes it as a builtin macro and expands it, leading
         to compilation errors on some distros.
         This should fix #397167. Thanks to Daniel Elstner for spotting this.

2007-01-20  Daniel Elstner  <[email protected]>

       * glib/glibmm/dispatcher.{cc,h}: Early spring cleaning.  Also add
       a paragraph about Dispatcher on win32 to the documentation.
       (DispatchNotifyData): Remove the 'tag' member from the struct that
       was always set to 0xdeadbeef in order to detect memory corruption.
       This is pointless, as we already check the DispatchNotifier pointer
       sent across the pipe, which is a far better indicator of corruption
       anyway.
       (warn_failed_pipe_io): Remove the err_no parameter and retrieve
       errno respectively GetLastError() within the function instead.
       (DispatchNotifier::conn_io_handler_): Remove, as we now inherit
       from sigc::trackable.  I verified that this doesn't cause problems
       with threading in this particular case.
       (DispatchNotifier::DispatchNotifier): If creating the pipe failed
       and exceptions are disabled, call at least warn_failed_pipe_io()
       instead of doing nothing at all.
       (DispatchNotifier::*): Rework the win32 implementation so that it
       matches more closely the Dispatcher semantics on Unix.  This still
       needs testing by someone on win32, though.  So far I only verified
       that it compiles with dummy definitions of the win32 API.  Also,
       I accidentally located the real cause of the race condition Cedric
       experienced in bug #109966.  It was a bug in my patch, rather than
       in the example code.

       * examples/thread/dispatcher.cc: Cleanup.  In particular, get rid
       of the Glib::RefPtr<> abuse with non-Glib::Object types.  I don't
       believe we endorse such usage officially, so it shouldn't be in
       the examples.

2007-01-20  Daniel Elstner  <[email protected]>

       * glib/glibmm/miscutils.cc: Clean up the code a bit.
       (get_application_name): Remove the code that checked the string for
       valid UTF-8, and attempted conversion if not valid.  I must have
       been on crack when I wrote this, as the combination of conditions
       that would cause the string to be invalid UTF-8 is quite unlikely.
       If this is a valid concern at all, it should be filed as a GLib bug
       and not worked around in glibmm.
       (build_filename(const std::string&, const std::string&)): Just call
       the plain g_build_filename() instead of building a temporary array
       and passing that via ArrayHandle to the build_filename() overload
       for containers.
       (build_path): Remove the already deactivated custom implementation
       from the time before g_build_pathv() was added to GLib.

       * glib/glibmm/object.{cc,h}: Improve/fix a couple of comments.
       (ConstructParams::ConstructParams): Add G_GNUC_NULL_TERMINATED
       function attribute to make the compiler complain if the variadic
       argument list is not terminated by a NULL pointer.

       * glib/glibmm/ustring.{cc,h} (utf8_find_last_of): Avoid applying
       bitwise logical operators directly to (possibly signed) operands
       of char type.  In order to avoid relying on implementation-defined
       behavior, make sure that the operands are of unsigned integer type.
       (ustring::is_ascii): Likewise,
       (ustring_Iterator<T>::operator--): Likewise.
       (get_unichar_from_std_iterator): De-obfuscate this highly optimized
       piece of code, as the current stable release of GCC (4.1.2-pre on
       my system) generates better assembler output without the voodoo.