Commit Graph

14921 Commits

Author SHA1 Message Date
Dan Winship
d8c14f1378 gbinding: warn on failed value transformation
GBinding warned if g_value_transform() returned FALSE, but it didn't
warn if there was no transformation available at all. Fix that and
test it.

https://bugzilla.gnome.org/show_bug.cgi?id=726574
2014-03-17 17:43:19 -04:00
A S Alam
1a8e3074af update Punjabi Translation 17March2014: Alam 2014-03-17 16:39:21 -05:00
Ryan Lortie
599c669b23 GLib 2.39.92 2014-03-17 17:18:47 -04:00
Claude Paroz
b0630a37b8 Updated French translation 2014-03-15 19:45:27 +00:00
Ryan Lortie
3f119b2fd4 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
2014-03-14 09:46:39 -04:00
Ryan Lortie
698970f1f7 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
2014-03-14 09:46:39 -04:00
Chun-wei Fan
62206576c3 Update config.h.win32.in
Make the entries of config.h.win32.in match those that are being checked
in config.h.in.
2014-03-12 17:26:45 +08:00
Duarte Loreto
bb43d78aff Updated Portuguese translation 2014-03-12 02:10:55 +00:00
Ryan Lortie
ffe4e94e3a 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
2014-03-11 21:28:58 -04:00
Ryan Lortie
62fa9c578f 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
2014-03-11 21:28:58 -04:00
Ryan Lortie
64ec757d05 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
2014-03-11 21:28:58 -04:00
Yuri Myasoedov
cee80dc8c4 Updated Russian translation 2014-03-11 21:21:57 +04:00
Lars Uebernickel
8c78fb827b 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
2014-03-11 11:47:57 +01:00
David King
25f36d8e5e Add g_application_command_line_get_options_dict() to docs 2014-03-10 19:16:28 +00:00
Chao-Hsiung Liao
a9ac71b503 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2014-03-09 11:39:30 +08:00
Sebastian Dröge
012011538f 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
2014-03-08 09:01:52 -05:00
Rūdolfs Mazurs
1a736f5f51 Updated Latvian translation 2014-03-08 15:58:53 +02:00
Wylmer Wang
0fa3a8dd60 Updated Chinese (China) translation 2014-03-08 12:26:07 +00:00
Ryan Lortie
66e2ffe978 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
2014-03-07 07:47:14 -05:00
Matthias Clasen
7a6dfd75d6 GObject: Remove more leftover markup from headers 2014-03-07 06:10:36 -05:00
Changwoo Ryu
fdd7ed94fe Updated Korean translation 2014-03-07 02:02:27 +09:00
Kjartan Maraas
d41dad8968 Updated Norwegian bokmål translation 2014-03-05 19:24:18 +01:00
Giovanni Campagna
b22f02a94b 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
2014-03-05 17:14:14 +01:00
Ryan Lortie
c9cda16a4f 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
2014-03-05 09:05:42 -05:00
Matthias Clasen
fd8c1a3067 Work around gtk-doc problems
Returns shall never be at the beginning of a line.
2014-03-04 20:20:52 -05:00
Ryan Lortie
2b11af4f1f 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
2014-03-04 09:08:24 -05:00
Ryan Lortie
e767204e0e 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
2014-03-04 08:55:00 -05:00
Ryan Lortie
9da88a12c5 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
2014-03-03 21:26:24 -05:00
Ryan Lortie
9f71965bec 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
2014-03-03 21:26:24 -05:00
Ryan Lortie
de142c0c5a GLib 2.39.91 2014-03-03 16:03:00 -05:00
Ryan Lortie
5d5ea495b5 desktopappinfo: add Exec to searchable keys
Add the basename from the first component of the Exec line to the list of
strings to search for via g_desktop_app_info_search().

We treat Exec as a fairly strong match -- just below the visible name.

Add a testcase to make sure everything is working OK.

https://bugzilla.gnome.org/show_bug.cgi?id=725023
2014-03-03 16:01:27 -05:00
Theppitak Karoonboonyanan
9ecc859f95 Updated Thai translation 2014-03-03 17:27:09 +07:00
Matthias Clasen
79caa3a7e1 Add a few tests for G_MARKUP_TREAT_CDATA_AS_TEXT
Related to
https://bugzilla.gnome.org/show_bug.cgi?id=725433
2014-03-02 19:10:00 -05:00
Matthias Clasen
b93a13bb79 Add a way to test different markup parser flags
For now, we are mainly interested in G_MARKUP_TREAT_CDATA_AS_TEXT.
This commit makes markup-parse look for expected output files with
the extension .cdata-as-text in addition to .expected, and compares
the output of parsing with G_MARKUP_TREAT_CDATA_AS_TEXT against
them. markup-parse --cdata-as-text foo.gmarkup can be used to produce
such expected output.
2014-03-02 19:03:15 -05:00
Matthias Clasen
49cc207e35 docs: Ditch more markup
Some markup was hiding in docs in headers. Drop it there, too.
2014-03-02 18:23:43 -05:00
Piotr Drąg
ad4d81418e Updated Polish translation 2014-03-02 19:24:01 +01:00
Philip Withnall
fdf14e9e6c hmac: Make unit test const-correct
https://bugzilla.gnome.org/show_bug.cgi?id=724741
2014-02-24 16:38:08 +00:00
Ryan Lortie
393503ba5b gmain: simplify g_main_context_find_source_by_id()
Since we now keep a hashtable of sources, we can implement this function
without iteration.

https://bugzilla.gnome.org/show_bug.cgi?id=724839
2014-02-24 09:28:43 -05:00
Ryan Lortie
9e81709012 gmain: Simplify source id tracking
Simplify our tracking of issued source id integers and fix some bugs.

Previously the source's id was remove from the 'used' table from
source_remove_from_context() which was also called if the source
priority was changed (in which case it would never be added back to the
table).  The source id could be reissued in that case.

In the new approach, we just always keep a hash table of sources, by
source id.  This simplifies the logic and will also allow us to improve
performance of g_main_context_find_source_by_id() which is called in some
fairly common cases, such as g_source_remove().  These improvements will be in
the following commits.

https://bugzilla.gnome.org/show_bug.cgi?id=724839
2014-02-24 09:28:43 -05:00
Matthias Clasen
e7bde4acf4 Test content type icons more thoroughly
Check we actually get the right icon names, and check
that symbolic icons fall back to non-symbolic ones.
2014-02-23 12:11:59 -05:00
John Lindgren
e6af432b39 Add non-symbolic fallback icons in g_content_type_get_symbolic_icon().
This makes the behavior consistent with e.g. g_volume_get_symbolic_icon().

https://bugzilla.gnome.org/show_bug.cgi?id=724994
2014-02-23 12:11:59 -05:00
Ryan Lortie
356fe2cec6 asyncqueue: fix timeout math on 32bit systems
88182d375e caught this issue in
g_async_queue_timed_pop() but failed to fix the same bug in the _unlocked()
variant.

This is only a problem on 32bit systems.  On 64bit systems, the tv_sec
in a timeval is already 64 bits, so no overflow occurs.

https://bugzilla.gnome.org/show_bug.cgi?id=722604
2014-02-23 01:14:27 -05:00
Ryan Lortie
4af9b8e9cb mappedfile test: permit ENODEV on /dev/null
mmap() on /dev/null returns ENODEV on old Linux versions and also on
Hurd, so accept that in the testcase.

https://bugzilla.gnome.org/show_bug.cgi?id=722360
2014-02-23 00:47:29 -05:00
Chun-wei Fan
4825e819b2 Fix build of gio/gapplication.c on Visual C++
Visual C++ is quite zealous about checking against the types used in the
initializing of array of structures, even up to Visual C++ 2013.  Fix this
by splitting up the initializing steps.

https://bugzilla.gnome.org/show_bug.cgi?id=724609
2014-02-23 11:48:06 +08:00
Ryan Lortie
8da795de4f gsocket: use check/prepare only on win32
There is no longer any code left in the check/prepare functions on UNIX,
so put %NULL in the GSourceFuncs vtable.

This also allows us to simplify some logic.

https://bugzilla.gnome.org/show_bug.cgi?id=724707
2014-02-22 10:25:42 -05:00
Ryan Lortie
e8f26efe0d gsocket: use _add_unix_fd() instead of _add_poll()
Use g_source_add_unix_fd() on UNIX instead of using a GPollFD.

https://bugzilla.gnome.org/show_bug.cgi?id=724707
2014-02-22 10:25:42 -05:00
Ryan Lortie
04aee2d920 gsocket: make use of g_source_set_ready_time()
Drop our own hand-rolled version of the same functionality.

https://bugzilla.gnome.org/show_bug.cgi?id=724707
2014-02-22 10:25:42 -05:00
Ryan Lortie
12d65f2509 GSource: mark some API as "implementation only"
Clarify that _add_poll() _remove_poll() _add_unix_fd(),
_modify_unix_fd(), _remove_unix_fd(), _query_unix_fd(),
_set_ready_time(), _add_child_source() and _remove_child_source() are only
intended to be used by the implementation of a particular GSource -- not its
consumers.

https://bugzilla.gnome.org/show_bug.cgi?id=724707
2014-02-22 10:25:06 -05:00
Ryan Lortie
1f7100506a gsocket: don't abuse GPollFD.revents field
We are reusing the GPollFD.revents field of the source to store a
temporary value.  Use a local variable for that instead.

This is a refactor to make the next commit easier to understand.

https://bugzilla.gnome.org/show_bug.cgi?id=724707
2014-02-22 10:24:19 -05:00
Ryan Lortie
ff96f88e17 gsocket: use cancellable child source
Now that GCancellable's GSource is based on _set_ready_time() instead of
an fd, we should use it as a child source, instead of forcing the
creation of the fd and adding it as a poll.

https://bugzilla.gnome.org/show_bug.cgi?id=724707
2014-02-22 10:24:19 -05:00