commit 599c669b23a56d605fc69d96a93a198d27b08b28 Author: Ryan Lortie AuthorDate: Mon Mar 17 17:18:47 2014 -0400 Commit: Ryan Lortie CommitDate: Mon Mar 17 17:18:47 2014 -0400 GLib 2.39.92 NEWS | 28 ++++++++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) commit b0630a37b8310907e5389bb17eb62a7412747345 Author: Claude Paroz AuthorDate: Sat Mar 15 19:45:27 2014 +0000 Commit: GNOME Translation Robot CommitDate: Sat Mar 15 19:45:27 2014 +0000 Updated French translation po/fr.po | 2052 ++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 1123 insertions(+), 929 deletions(-) commit 3f119b2fd408fb2e0f4eea07ed9618d2faa749ee Author: Ryan Lortie AuthorDate: Tue Mar 11 21:41:36 2014 -0400 Commit: Ryan Lortie CommitDate: Fri Mar 14 09:46:39 2014 -0400 GSettingsBackend: fix a nasty race condition In the event that a GSettings object is being destroyed just as a change signal is being delivered, the destroying thread will race with the dconf worker thread for acquiring the lock on the GSettingsBackend. If the signalling thread gets there first then the destroying thread will block on the lock. The signalling thread adds a reference to the GSettings object that is being destroyed and releases the lock. The idea is that this should prevent the GSettings object from being destroyed and thus maintain its entry in the list. Unfortunately, the weak reference notify function is already running and as soon as we release the lock, the list entry is removed. The signalling thread crashes. This bug is indicative of a serious problem encountered in many situations where GObject instances are touched from multiple threads. Ideally, we will move to a place where g_object_ref() is not called at all on the GSettings object from the dconf worker thread and instead, a dispatch will be done without holding a reference (similar to how GAppInfoMonitor presently works). This would also prevent the unfortunate case of someone dropping what they assume to be the last reference on a GSettings object, only to have an already-pending signal delivered once they return to the mainloop, crashing their program. Making this change for GSettings (with multiple instances per thread, the possibility of multiple backends and each instance being interested in different events) is going to be extremely non-trivial, so it's not a change that makes sense at this point in the cycle. For now, we can do a relatively small and isolated tweak so that we never access the list except under a lock. We still perform the bad pattern of acquiring a ref in a foreign thread which means that we still risk delivering a signal to a GSettings object that the user has assumed is dead (unless they explicitly disconnect their signal handler). This is a problem that we already had, however. https://bugzilla.gnome.org/show_bug.cgi?id=710367 gio/gsettingsbackend.c | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) commit 698970f1f70f1821df5ac83ffa6d797fa4579881 Author: Ryan Lortie AuthorDate: Wed Feb 26 17:09:59 2014 -0500 Commit: Ryan Lortie CommitDate: Fri Mar 14 09:46:39 2014 -0400 gsettingsbackend: a minor simplification Change the order of the arguments on the (internal) keys_changed callback in GSettingsListenerVTable. This means that all functions in the table now fit the following signature: void (* f) (GObject *target, GSettingsBackend *backend, const gchar *name_or_path, gpointer origin_tag, const gchar * const *names); allowing the possibility of arguments ignored at the end. This allows us to simplify our dispatch-to-thread code in GSettingsBackend, making it a bit less generic. So far, this should be a straight refactor. https://bugzilla.gnome.org/show_bug.cgi?id=710367 gio/gdelayedsettingsbackend.c | 4 +-- gio/gsettings.c | 4 +-- gio/gsettingsbackend.c | 74 ++++++++++++++---------------------------- gio/gsettingsbackendinternal.h | 4 +-- 4 files changed, 31 insertions(+), 55 deletions(-) commit 62206576c34d4ea10d43324144db44970c99dd97 Author: Chun-wei Fan AuthorDate: Wed Mar 12 17:26:45 2014 +0800 Commit: Chun-wei Fan CommitDate: Wed Mar 12 17:26:45 2014 +0800 Update config.h.win32.in Make the entries of config.h.win32.in match those that are being checked in config.h.in. config.h.win32.in | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) commit bb43d78aff72d406e64a47d2592919c58152aba3 Author: Duarte Loreto AuthorDate: Wed Mar 12 02:10:55 2014 +0000 Commit: GNOME Translation Robot CommitDate: Wed Mar 12 02:10:55 2014 +0000 Updated Portuguese translation po/pt.po | 2040 ++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 1121 insertions(+), 919 deletions(-) commit ffe4e94e3afa16c4e28d6e299f68d8a7ca408b8c Author: Ryan Lortie AuthorDate: Tue Mar 11 12:19:19 2014 -0400 Commit: Ryan Lortie CommitDate: Tue Mar 11 21:28:58 2014 -0400 GUnixVolume: implement _finish functions The _finish functions for GUnixVolume _mount and _eject functions were never implemented, having been simply stubbed out as 'return TRUE;'. Implement them. https://bugzilla.gnome.org/show_bug.cgi?id=724916 gio/gunixvolume.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 62fa9c578f4ee3f2ca5127961a4609596a4bdaee Author: Ryan Lortie AuthorDate: Sun Mar 2 21:24:14 2014 -0500 Commit: Ryan Lortie CommitDate: Tue Mar 11 21:28:58 2014 -0400 GUnixVolume: port to GSubprocess Do the same as we just did for GUnixMount, for GUnixVolume too. https://bugzilla.gnome.org/show_bug.cgi?id=724916 gio/gunixvolume.c | 174 ++++++++++++------------------------------------------ 1 file changed, 37 insertions(+), 137 deletions(-) commit 64ec757d058dae045e275577da8f14f463cc7c44 Author: Ryan Lortie AuthorDate: Sun Mar 2 17:39:11 2014 -0500 Commit: Ryan Lortie CommitDate: Tue Mar 11 21:28:58 2014 -0400 GUnixMount: port unmount to GSubprocess The existing code is buggy and now that we have GSubprocess, we should just use it instead, allowing for some substantial reduction in complexity. https://bugzilla.gnome.org/show_bug.cgi?id=724916 gio/gunixmount.c | 158 +++++++++++-------------------------------------------- 1 file changed, 32 insertions(+), 126 deletions(-) commit cee80dc8c4a1707f8a2e5540540d220f9ca89de2 Author: Yuri Myasoedov AuthorDate: Tue Mar 11 21:21:57 2014 +0400 Commit: Yuri Myasoedov CommitDate: Tue Mar 11 21:21:57 2014 +0400 Updated Russian translation po/ru.po | 2957 ++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 1624 insertions(+), 1333 deletions(-) commit 8c78fb827b51aa6e48fa20bac3f1ede4c699dd43 Author: Lars Uebernickel AuthorDate: Mon Mar 10 19:46:23 2014 +0100 Commit: Lars Uebernickel CommitDate: Tue Mar 11 11:47:57 2014 +0100 glocalfileinfo: don't special-case directory icons As of e6af432, g_content_type_get_symbolic_icon() returns non-symbolic fallbacks. Thus, we can't append another symbolic icon to the fallbacks. The special case was a bit of a hack anyway. It was only applied to themed icons and there was no generic fallback for mime types that are not folders. https://bugzilla.gnome.org/show_bug.cgi?id=726046 gio/glocalfileinfo.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) commit 25f36d8e5efb1312bc684a28158ecfba2dd2ace0 Author: David King AuthorDate: Mon Mar 10 19:16:28 2014 +0000 Commit: David King CommitDate: Mon Mar 10 19:16:28 2014 +0000 Add g_application_command_line_get_options_dict() to docs docs/reference/gio/gio-sections.txt | 1 + 1 file changed, 1 insertion(+) commit a9ac71b50361f035163b7611e06d5b470467d125 Author: Chao-Hsiung Liao AuthorDate: Sun Mar 9 11:39:30 2014 +0800 Commit: Chao-Hsiung Liao CommitDate: Sun Mar 9 11:39:30 2014 +0800 Updated Traditional Chinese translation(Hong Kong and Taiwan) po/zh_HK.po | 1759 +++++++++++++++++++++++++++++------------------------------ po/zh_TW.po | 1759 +++++++++++++++++++++++++++++------------------------------ 2 files changed, 1736 insertions(+), 1782 deletions(-) commit 012011538f4513569f92e322c4377efa2cb64378 Author: Sebastian Dröge AuthorDate: Sun Feb 9 23:08:21 2014 +0100 Commit: Ryan Lortie CommitDate: Sat Mar 8 09:01:52 2014 -0500 gtype – Mark _get_instance_private() function as G_GNUC_UNUSED clang likes to complain about it being unused. https://bugzilla.gnome.org/show_bug.cgi?id=723899 gobject/gtype.h | 1 + 1 file changed, 1 insertion(+) commit 1a736f5f51d19904ab82d684674d003b51364c32 Author: Rūdolfs Mazurs AuthorDate: Sat Mar 8 15:58:53 2014 +0200 Commit: Rūdolfs Mazurs CommitDate: Sat Mar 8 15:58:53 2014 +0200 Updated Latvian translation po/lv.po | 2101 ++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 1168 insertions(+), 933 deletions(-) commit 0fa3a8dd602fba7149825ec3c030d9ac9e70dd42 Author: Wylmer Wang AuthorDate: Sat Mar 8 12:26:07 2014 +0000 Commit: GNOME Translation Robot CommitDate: Sat Mar 8 12:26:07 2014 +0000 Updated Chinese (China) translation po/zh_CN.po | 1709 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 862 insertions(+), 847 deletions(-) commit 66e2ffe97869e13562b13c51d5dbd3ea1a89bd51 Author: Ryan Lortie AuthorDate: Fri Mar 7 07:41:50 2014 -0500 Commit: Ryan Lortie CommitDate: Fri Mar 7 07:47:14 2014 -0500 gio tests: add codegen to BUILT_SOURCES We need to have these in BUILT_SOURCES so that 'make' knows to generate them before attempting to compile other .c files in the same directory (since some of these files include the header). Should fix up remaining issues about partial versions of this file being included under parallel builds. https://bugzilla.gnome.org/show_bug.cgi?id=725891 gio/tests/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 7a6dfd75d66d274020805b6c770ba683900a3402 Author: Matthias Clasen AuthorDate: Fri Mar 7 06:10:36 2014 -0500 Commit: Matthias Clasen CommitDate: Fri Mar 7 06:10:36 2014 -0500 GObject: Remove more leftover markup from headers gobject/gbinding.h | 2 +- gobject/gobject.h | 10 +++++----- gobject/gparam.h | 8 ++++---- gobject/gtypemodule.h | 2 +- gobject/gtypeplugin.h | 5 ++--- 5 files changed, 13 insertions(+), 14 deletions(-) commit fdd7ed94fe7d7427b962c5c0faa66f68b18a3fc1 Author: Changwoo Ryu AuthorDate: Fri Mar 7 02:02:27 2014 +0900 Commit: Changwoo Ryu CommitDate: Fri Mar 7 02:02:27 2014 +0900 Updated Korean translation po/ko.po | 2035 ++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 1109 insertions(+), 926 deletions(-) commit d41dad89681837498202743cd8ee63e62a024f4a Author: Kjartan Maraas AuthorDate: Wed Mar 5 19:24:18 2014 +0100 Commit: Kjartan Maraas CommitDate: Wed Mar 5 19:24:18 2014 +0100 Updated Norwegian bokmål translation po/nb.po | 61 ++++++++++++++++++++++++++++++------------------------------- 1 file changed, 30 insertions(+), 31 deletions(-) commit b22f02a94bc4449f1f7741a73e8d4c899b69d627 Author: Giovanni Campagna AuthorDate: Tue Mar 4 15:30:12 2014 +0100 Commit: Giovanni Campagna CommitDate: Wed Mar 5 17:14:14 2014 +0100 Unskip GVariantDict There is no reason to (skip) GVariantDict, it's a boxed type and perfectly usable from gobject-introspection. https://bugzilla.gnome.org/show_bug.cgi?id=725656 glib/gvariant.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c9cda16a4f607bf9b6498051d2b83aad99e391e4 Author: Ryan Lortie AuthorDate: Wed Mar 5 09:04:00 2014 -0500 Commit: Ryan Lortie CommitDate: Wed Mar 5 09:05:42 2014 -0500 cond test: remove alarm() usage This means that the test can't build on Windows (and we do want it there). This will be properly resolved with bug 725266, but let's not block the build before then. https://bugzilla.gnome.org/show_bug.cgi?id=724859 glib/tests/cond.c | 5 ----- 1 file changed, 5 deletions(-) commit fd8c1a306725ed7f877c0ec6d5c27f5436c5941f Author: Matthias Clasen AuthorDate: Tue Mar 4 20:20:52 2014 -0500 Commit: Matthias Clasen CommitDate: Tue Mar 4 20:20:52 2014 -0500 Work around gtk-doc problems Returns shall never be at the beginning of a line. gio/gsubprocess.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2b11af4f1f336f8e7fda26045fe76375176c8a17 Author: Ryan Lortie AuthorDate: Tue Mar 4 09:08:24 2014 -0500 Commit: Ryan Lortie CommitDate: Tue Mar 4 09:08:24 2014 -0500 gsubprocess: test environment a bit more Add a test for GSubprocess to test setting, unsetting and inheritance of environment variables. Use communicate() to give it a bit more of a workout as well. https://bugzilla.gnome.org/show_bug.cgi?id=725651 gio/tests/gsubprocess-testprog.c | 18 ++++++++++++++++++ gio/tests/gsubprocess.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) commit e767204e0e8108df66893e23209b22b041be893d Author: Ryan Lortie AuthorDate: Tue Mar 4 08:55:00 2014 -0500 Commit: Ryan Lortie CommitDate: Tue Mar 4 08:55:00 2014 -0500 GSubprocessLauncher: don't get empty environment Use g_get_environ() to get the environment variables with their values instead of g_listenv() which only lists off the keys. https://bugzilla.gnome.org/show_bug.cgi?id=725651 gio/gsubprocesslauncher.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9da88a12c52f122e1e2b8faaed6c95ec1bcef104 Author: Ryan Lortie AuthorDate: Mon Mar 3 21:25:16 2014 -0500 Commit: Ryan Lortie CommitDate: Mon Mar 3 21:26:24 2014 -0500 gsubprocess: test empty splices Make sure we handle the case that our splice returns no data properly. https://bugzilla.gnome.org/show_bug.cgi?id=724916 gio/tests/gsubprocess.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) commit 9f71965becd919a736cb57bbd3501b22e6341fa7 Author: Ryan Lortie AuthorDate: Sun Mar 2 21:01:12 2014 -0500 Commit: Ryan Lortie CommitDate: Mon Mar 3 21:26:24 2014 -0500 gsubprocess: fix communicate() with empty buffers On the splice for stdout or stderr completing, GSubprocess calls _slice_finish() to collect the result. We assume that a zero return value here means failure, but in fact this function returns a gssize -- the number of bytes transferred, or -1 for an error. This causes GSubprocess to mistakenly think that it has an error when it actually just has an empty buffer (as would be the case when collecting stderr from a successful command). Check for -1 instead of FALSE to detect the error. https://bugzilla.gnome.org/show_bug.cgi?id=724916 gio/gsubprocess.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)