2.13.4: 2007-04-11 Armin Burgmeier * 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 * 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 * glib/glibmm/helperlist.h: Change variable name to avoid warnings about a shadowed member. Bug #420316. 2007-03-19 Bradley Bell * 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 * 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 * 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 * 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 * 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 * 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 * 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::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.