-
The event loop functionality GMain has extensively
been revised to support multiple separate main loops in separate threads.
All sources (timeouts, idle functions, etc.) are associated with a
GMainContext.
Compatibility functions exist so that most application code dealing with
the main loop will continue to work. However, code that creates new custom
types of sources will require modification.
The main changes here are:
Sources are now exposed as GSource *, rather than simply as
numeric ids.
New types of sources are created by structure "derivation" from
GSource, so the source_data
parameter to the GSource virtual functions has been
replaced with a GSource *.
Sources are first created, then later added to a specific
GMainContext.
Dispatching has been modified so both the callback and data are passed
in to the dispatch() virtual function.
To go along with this change, the vtable for
GIOChannel has changed and
add_watch() has been replaced by
create_watch().
-
g_list_foreach() and
g_slist_foreach() have been changed so they
are now safe against removal of the current item, not the next item.
It's not recommended to mutate the list in the callback to these
functions in any case.
GDate now works in UTF-8, not in the current locale.
If you want to use it with the encoding of the locale, you need to convert
strings using g_locale_to_utf8() first.
-
g_strsplit() has been fixed to:
include trailing empty tokens, rather than stripping them
split into a maximum of max_tokens tokens, rather
than max_tokens + 1
Code depending on either of these bugs will need to be fixed.
Deprecated functions that got removed:
g_set_error_handler(),
g_set_warning_handler(),
g_set_message_handler(), use
g_log_set_handler() instead.