GLib Reference Manual
<<< Previous Page | Home | Up | Next Page >>>

# Changes from 1.0 to 2.0

## Name

Changes from 1.0 to 2.0 -- Incompatible changes made between version 1.0 and version 2.0

## Incompatible changes from 1.0 to 2.0

The GNOME 2.0 porting guide on http://developer.gnome.org has some more detailed discussion of porting from 1.0 to 2.0. See the section on GLib.

- 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.

<<< Previous Page | Home | Up | Next Page >>>
Running GLib Applications | Mailing lists and bug reports