Ryan Lortie [Sun, 13 Nov 2011 22:31:39 +0000 (23:31 +0100)]
store some extra info in GSettingsKeyInfo
Ryan Lortie [Sun, 13 Nov 2011 22:24:24 +0000 (23:24 +0100)]
GSettingsKeyInfo: drop unused variable
Ryan Lortie [Sun, 13 Nov 2011 20:41:01 +0000 (21:41 +0100)]
rename gsettingsschema.h to -internal.h
Ryan Lortie [Sun, 13 Nov 2011 20:38:31 +0000 (21:38 +0100)]
unGObjectify GSettingsSchema
Christian Persch [Thu, 17 Nov 2011 13:21:24 +0000 (14:21 +0100)]
Fix the fix for G*_TO_POINTER casts on 32 bits
The 'fix' from commit
16292dd753cb63f8ccb2267644aefbd2632dd52c broke the
build on 32 bit because it was missing the parentheses around "gint" / "guint"
in glib_gp[u]i_cast.
https://bugzilla.gnome.org/show_bug.cgi?id=661546
Jorge González [Thu, 17 Nov 2011 13:21:12 +0000 (14:21 +0100)]
Updated Spanish translation
Daniel Mustieles [Thu, 17 Nov 2011 11:36:54 +0000 (12:36 +0100)]
Updated Spanish translation
Matthias Clasen [Thu, 17 Nov 2011 05:01:18 +0000 (00:01 -0500)]
Fix doc formatting
Matthias Clasen [Thu, 17 Nov 2011 02:42:28 +0000 (21:42 -0500)]
Deal gracefully with NULL log domains
Ryan Lortie [Wed, 16 Nov 2011 15:46:19 +0000 (15:46 +0000)]
[notify] remove some rather bogus 'inline' use
Ryan Lortie [Wed, 16 Nov 2011 15:45:31 +0000 (15:45 +0000)]
[notify] add warning to gobjectnotifyqueue.c
Mention that this file gets installed, so people should probably not
modify it.
Ryan Lortie [Wed, 16 Nov 2011 13:02:23 +0000 (13:02 +0000)]
[notify] dispatch 'notify' directly if not frozen
Avoid the notify queue in the case that we're not already frozen.
Ryan Lortie [Wed, 16 Nov 2011 15:42:36 +0000 (15:42 +0000)]
[notify] add 'conditional' to _notify_queue_freeze
When the 'conditional' parameter is TRUE, the queue will only be frozen
(ie: have its freeze count increase by one) if it is already frozen.
This will allow us to avoid a freeze-notify-thaw in the case that we
just want to notify on a single property.
Another approach may have been to add an is_frozen() type call and avoid
even increasing the freeze count at all in this case. Unfortunately,
I'm not totally sure what is the exact expected semantics of
simultaneous notifications in multiple threads and this may interact
badly with someone freezing or thawing in between our check and
emission.
Ryan Lortie [Wed, 16 Nov 2011 15:41:06 +0000 (15:41 +0000)]
[notify] Remove GObjectNotifyContext indirection
This silly abstraction is causing more trouble than it's worth -- just
use the relevant bits directly.
Ryan Lortie [Wed, 16 Nov 2011 15:38:25 +0000 (15:38 +0000)]
[notify] lift some logic out of _notify_queue_add
Lift the check-if-READABLE and redirect-target logic from out of
g_object_notify_queue_add() into its own function, get_notify_pspec().
Use that function at the site of our two calls to
g_object_notify_queue_add().
Ryan Lortie [Wed, 16 Nov 2011 15:37:17 +0000 (15:37 +0000)]
[notify] remove an obviously false comment
Ryan Lortie [Wed, 16 Nov 2011 15:36:57 +0000 (15:36 +0000)]
[notify] lift some code outside of critical region
Ryan Lortie [Wed, 16 Nov 2011 15:35:58 +0000 (15:35 +0000)]
[notify] drop some unused code
Ryan Lortie [Wed, 16 Nov 2011 15:31:58 +0000 (15:31 +0000)]
[notify] merge gobjectnotifyqueue.c into gobject.c
This was done as a separate file before, and #include brought it into
gobject.c. That's a bit mad, so stop doing that.
Unfortunately, the insanity steps up a level: gobjectnotifyqueue.c is
installed in the public include dir, so we can't just get rid of it
entirely.
Ryan Lortie [Wed, 16 Nov 2011 12:47:40 +0000 (12:47 +0000)]
[notify] remove some useless forward declarations
These cause trouble in the next commit.
Benjamin Otte [Tue, 1 Nov 2011 23:31:50 +0000 (00:31 +0100)]
localfileenumerator: Improve non-stat'ing code
We now avoid the per-enumerated-file stat for type and names. We could
improve this further by moving things to the no_stat function, but this
is what the file chooser needs for autocomplete, so I am happy.
Benjamin Otte [Tue, 1 Nov 2011 22:37:35 +0000 (23:37 +0100)]
localfileinfo: Split out attributes that don't need a stat
This will be used in the next commit.
Benjamin Otte [Tue, 1 Nov 2011 22:21:42 +0000 (23:21 +0100)]
localfileenumerator: Take the type from the readdir() call
That way, we can avoid stat() calls for all enumerated files in various
cases. In particular in the autocompletion code in the GTK filechooser.
Benjamin Otte [Tue, 1 Nov 2011 19:12:27 +0000 (20:12 +0100)]
gio: Add tests for g_file_attribute_matcher_subtract()
Benjamin Otte [Tue, 1 Nov 2011 19:11:47 +0000 (20:11 +0100)]
fileinfo: Add g_file_attribute_matcher_subtract()
Added as public API so I can write tests, the use case is local.
Benjamin Otte [Tue, 1 Nov 2011 18:12:17 +0000 (19:12 +0100)]
tests: Add tests for fileattributematchers
Benjamin Otte [Tue, 1 Nov 2011 18:06:39 +0000 (19:06 +0100)]
fileinfo: Add g_file_attribute_matcher_to_string()
This is to be mainly used for debugging and tests.
Benjamin Otte [Tue, 1 Nov 2011 16:50:22 +0000 (17:50 +0100)]
fileinfo: Store namespace::* as 0th attribute
This way, we can get_attribute() namespaces. This will be important in
the next commit.
Benjamin Otte [Tue, 1 Nov 2011 12:58:09 +0000 (13:58 +0100)]
fileinfo: Change the way attribute matchers are created
We now sort the matchers and remove unnecessary duplicates (like
removing standard:type when we already match standard:*), so that we can
do more complex operations on them easily in later commits.
Benjamin Otte [Tue, 1 Nov 2011 11:47:33 +0000 (12:47 +0100)]
fileinfo: Remove optimization for GFileAttributeMatcher
It makes code more complicated, in particular the code I'm about to add.
Lucas De Marchi [Thu, 6 Oct 2011 14:18:03 +0000 (11:18 -0300)]
Fix G*_TO_POINTER casts on 32 bits
If we don't do the cast to the proper size in 32 bits, things like below
doesn't work:
uint8_t u = 20;
void *p;
p = GUINT_TO_POINTER(u);
Signed-off-by: Colin Walters <walters@verbum.org>
https://bugzilla.gnome.org/show_bug.cgi?id=661546
Alexander Larsson [Fri, 4 Nov 2011 15:45:41 +0000 (16:45 +0100)]
win32: Make g_get_monotonic_clock lockless
Alexander Larsson [Fri, 4 Nov 2011 14:42:38 +0000 (15:42 +0100)]
win32: Use timeGetTime as monotonic base
This allows apps that need it to increase timer accuracy
using timeBeginPeriod
Alexander Larsson [Fri, 4 Nov 2011 10:27:00 +0000 (11:27 +0100)]
win32: Add a monotonic timer
Piotr Drąg [Tue, 15 Nov 2011 19:46:17 +0000 (20:46 +0100)]
Updated POTFILES.in
Daniel Mustieles [Tue, 15 Nov 2011 16:37:39 +0000 (17:37 +0100)]
Updated Spanish translation
Javier Jardón [Tue, 15 Nov 2011 12:11:55 +0000 (12:11 +0000)]
docs: Remove tmpl directory
We use inline comments now
Sjoerd Simons [Sun, 13 Nov 2011 16:49:57 +0000 (17:49 +0100)]
Fix 1bit mutex test on platforms with 32 bit aligned pointers
The 1 bit mutex tests asserts: ((gsize) ptrs) % 8, ==, 0), which fails
when the platform only aligns porters to 32 bits (e.g. S390 and
powerpc).
I'm not sure why this assertion was placed here, but given
that internally g_pointer_bit_trylock uses g_atomic_int_or internally
change the assertion so it only requires the alignment to be a multiple
of sizeof(int)
Matthias Clasen [Tue, 15 Nov 2011 04:30:18 +0000 (23:30 -0500)]
Avoid unused variable warnings in g_ascii_strtod
Matthias Clasen [Tue, 15 Nov 2011 03:18:13 +0000 (22:18 -0500)]
GThread: handle thread names safely
Avoid a race condition where the string may be freed before
the new thread got around to using it. Also add a test for
thread names.
https://bugzilla.gnome.org/show_bug.cgi?id=663381
Matthias Clasen [Tue, 15 Nov 2011 02:18:12 +0000 (21:18 -0500)]
Switch to using template-free docs build
All docs are finally inline, so we can do this switch.
Matthias Clasen [Mon, 14 Nov 2011 12:44:52 +0000 (07:44 -0500)]
Move remaining docs inline
This introduces a fake source file just for holding
docs that have no good place elsewhere. Not great, but
better than templates.
Matthias Clasen [Tue, 15 Nov 2011 02:06:30 +0000 (21:06 -0500)]
Move GModule docs inline
Matthias Clasen [Sun, 13 Nov 2011 20:37:56 +0000 (15:37 -0500)]
Move GDate docs inline
Matthias Clasen [Sun, 13 Nov 2011 05:43:50 +0000 (00:43 -0500)]
Move i18n docs inline
Matthias Clasen [Sun, 13 Nov 2011 05:26:57 +0000 (00:26 -0500)]
Move slice and hook docs inline
Dan Winship [Tue, 15 Nov 2011 00:46:02 +0000 (19:46 -0500)]
GSocketClient: improve error messages on connection failure
Include the hostname (or proxy hostname if it was the connection to
the proxy server that failed) in the GError message when
g_socket_client_connect* fail.
https://bugzilla.gnome.org/show_bug.cgi?id=661266
Dan Winship [Mon, 14 Nov 2011 23:27:34 +0000 (18:27 -0500)]
GUnixInput/OutputStream: fix blocking methods to always block
Previously, if you created a GUnixInputStream or GUnixOutputStream
from a non-blocking file descriptor, it might sometimes return
G_IO_ERROR_WOULD_BLOCK from g_input_stream_read/g_output_stream_write,
which is wrong. Fix that. (Use the GPollableInput/OutputStream methods
if you want non-blocking I/O.)
Also, add a test for this to gio/tests/unix-streams.
Also, fix the GError messages to say "Error reading from file
descriptor", etc instead of "Error reading from unix" (which was
presumably from a bad search and replace job).
https://bugzilla.gnome.org/show_bug.cgi?id=626866
Dan Winship [Mon, 14 Nov 2011 18:55:14 +0000 (13:55 -0500)]
Fix glib/tests/utils for g_parse_debug_string() changes
Dan Winship [Sun, 12 Jun 2011 19:59:36 +0000 (15:59 -0400)]
add GNetworkMonitor, for... monitoring the network
Add GNetworkMonitor and its associated extension point, provide a base
implementation that always claims the network is available, and a
netlink-based implementation built on top of that that actually tracks
the network state.
https://bugzilla.gnome.org/show_bug.cgi?id=620932
Dan Winship [Sat, 1 Oct 2011 12:31:54 +0000 (08:31 -0400)]
GInetAddressMask: new type for internet address range matching
Eg, for matching a GInetAddress to a range like "10.0.0.0/8" or
"fe80::/10"
https://bugzilla.gnome.org/show_bug.cgi?id=620932
Dan Winship [Sun, 13 Nov 2011 21:39:45 +0000 (16:39 -0500)]
gunixinput/outputstream: fix docs
Don't try to link to the docs of undocumented private classes
Dan Winship [Tue, 27 Apr 2010 20:54:18 +0000 (16:54 -0400)]
GUnixInputStream, GUnixOutputStream: support ordinary files better
If the fd is not a pipe or socket, fall back to using threads to do
async I/O rather than poll, since poll doesn't work the way you want
for ordinary files.
https://bugzilla.gnome.org/show_bug.cgi?id=606913
Matthias Clasen [Sun, 13 Nov 2011 03:52:24 +0000 (22:52 -0500)]
Some more docs reshuffling
Matthias Clasen [Sun, 13 Nov 2011 02:54:42 +0000 (21:54 -0500)]
More consistent doc formatting
Move some things around, make capitalization of short descriptions
more consistent.
Matthias Clasen [Sun, 13 Nov 2011 00:13:44 +0000 (19:13 -0500)]
Cleanups to debug env var handling
Matthias Clasen [Sat, 12 Nov 2011 23:36:52 +0000 (18:36 -0500)]
Parse G_DEBUG only once
Matthias Clasen [Sat, 12 Nov 2011 15:26:31 +0000 (10:26 -0500)]
glib-unix.h: Add G_BEGIN/END_DECLS
The omission was pointed out in bug 663880.
Chun-wei Fan [Sat, 12 Nov 2011 02:38:31 +0000 (10:38 +0800)]
gstrfuncs.c: Fix variable declaration
Declare variables at top of block to stop C89 compilers from complaining.
Simon McVittie [Fri, 11 Nov 2011 14:41:50 +0000 (14:41 +0000)]
GDBusWorker: tolerate read errors while closing
My previous fix for GNOME#662100 was incomplete: it seems that with some
timings, the stream can be closed with an async read in-flight. This
can make the read fail immediately with G_IO_ERROR_CLOSED instead of
becoming cancelled.
This happens reliably on an embedded device, and rarely on my laptop;
repeating the test 100 times in quick succession reliably reproduces
the bug on my laptop.
It seems as though what we really want is to ignore read errors, once
we've established that we want to close the connection anyway - this
means that after asking to close, you're immune to exit-on-close,
which seems like a good rule.
An additional subtlety is that continuing to read after we know we
want to close is still required, otherwise we'll never emit ::closed.
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100
Bug-NB: NB#287088
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Colin Walters <walters@verbum.org>
Simon McVittie [Thu, 10 Nov 2011 19:06:43 +0000 (19:06 +0000)]
GDBusWorker: debug on read errors if transport debugging is enabled
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100
Bug-NB: NB#287088
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Colin Walters <walters@verbum.org>
Simon McVittie [Thu, 3 Nov 2011 18:33:08 +0000 (18:33 +0000)]
gdbus-exit-on-close test: don't leak a variant
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100
Bug-NB: NB#287088
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Colin Walters <walters@verbum.org>
Simon McVittie [Thu, 3 Nov 2011 18:32:53 +0000 (18:32 +0000)]
gdbus-exit-on-close test: optionally be more verbose for debugging
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100
Bug-NB: NB#287088
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Colin Walters <walters@verbum.org>
Dan Winship [Sat, 3 Sep 2011 13:03:17 +0000 (09:03 -0400)]
gio: more implementations of GFileDescriptorBased
Implement GFileDescriptorBased in GSocket{Input,Output}Stream and
GUnix{Input,Output}Stream.
https://bugzilla.gnome.org/show_bug.cgi?id=616852
Kristian Rietveld [Wed, 9 Nov 2011 07:32:33 +0000 (08:32 +0100)]
Need to include xlocale.h on Darwin for strtod_l
This fixes the build of gstrfuncs.c on Darwin.
Marc-André Lureau [Mon, 7 Nov 2011 19:04:15 +0000 (20:04 +0100)]
Add G_SIGNAL_DEPRECATED
Similar to G_PARAM_DEPRECATED. It will warn only for users of the
signals, so a signal can still be emited without warning, for
compatibility reasons.
Apparently, there is no way user flags could have been used before,
so that shouldn't break anyone.
https://bugzilla.gnome.org/show_bug.cgi?id=663581
Dan Winship [Mon, 7 Nov 2011 18:50:00 +0000 (13:50 -0500)]
gio/tests/proxy: don't use deprecated functions
Dan Winship [Mon, 7 Nov 2011 18:48:30 +0000 (13:48 -0500)]
Fix g_variant_get_gtype() deprecation message
Instead of:
warning: ‘g_variant_get_gtype’ is deprecated (declared at ../../gobject/glib-types.h:242): Use '((GType) ((21) << (2)))' instead [-Wdeprecated-declarations]
show:
warning: ‘g_variant_get_gtype’ is deprecated (declared at ../../gobject/glib-types.h:242): Use ''G_VARIANT_GET_TYPE'' instead [-Wdeprecated-declarations]
Also, document the macro-expansion problem in the
G_GNUC_DEPRECATED_FOR docs
Benjamin Otte [Sun, 16 Oct 2011 19:58:29 +0000 (12:58 -0700)]
docs: Improve g_variant_loop() docs
Typo fix and changing "is not recommended" to the nice version of "don't
do this", aka "causes undefined behavior".
Benjamin Otte [Mon, 25 Jul 2011 11:08:59 +0000 (13:08 +0200)]
docs: Tell which function to use to avoid errors.
Chun-wei Fan [Mon, 7 Nov 2011 06:14:45 +0000 (14:14 +0800)]
Update VS property sheets
gmain.h was added into the list of deprecated headers, so "install"
that as weel.
Matthias Clasen [Mon, 7 Nov 2011 05:14:28 +0000 (00:14 -0500)]
Add a test for CDATA in gschema.xml files
Matthias Clasen [Mon, 7 Nov 2011 05:13:56 +0000 (00:13 -0500)]
Accept CDATA in gschema.xml files
Alexander Larsson [Thu, 3 Nov 2011 16:27:08 +0000 (17:27 +0100)]
win32: Remove some debug spew on startup
This is not needed anymore and was causing problems for pkg-config.
Matthias Clasen [Thu, 3 Nov 2011 05:48:54 +0000 (01:48 -0400)]
Make the default log handler more useful
We make the default log handler only print default and informational
messages if the log domain is explicitly requested.
https://bugzilla.gnome.org/show_bug.cgi?id=661926
Matthias Clasen [Thu, 3 Nov 2011 04:39:31 +0000 (00:39 -0400)]
Move old deprecated gmain api into deprecated/
Matthias Clasen [Thu, 3 Nov 2011 04:30:56 +0000 (00:30 -0400)]
Remove single-include guards in deprecated/
Not allowed to include these headers single anymore, either.
Matthias Clasen [Thu, 3 Nov 2011 04:16:41 +0000 (00:16 -0400)]
GIO: Don't use G_DISABLE_DEPRECATED for functions
Matthias Clasen [Thu, 3 Nov 2011 04:09:32 +0000 (00:09 -0400)]
GObject: Don't use G_DISABLE_DEPRECATED for functions
Matthias Clasen [Thu, 3 Nov 2011 04:05:29 +0000 (00:05 -0400)]
Update deprecation docs
Matthias Clasen [Thu, 3 Nov 2011 04:04:15 +0000 (00:04 -0400)]
Don't use G_DISABLE_DEPRECATED guards around deprecated functions
I'm leaving the old-style deprecation guards in place around
deprecated macros, enumeration values, etc, for now.
Dan Winship [Fri, 28 Oct 2011 19:38:52 +0000 (15:38 -0400)]
glib-mkenums: add --identifier-prefix and --symbol-prefix args
Allow passing --identifier-prefix and --symbol-prefix to glib-mkenums,
with the same meanings as in g-ir-scanner, to allow fixing up the enum
name parsing globally rather than needing to add a /<* *>/ override to
each enum.
https://bugzilla.gnome.org/show_bug.cgi?id=661797
Dan Winship [Fri, 28 Oct 2011 19:38:27 +0000 (15:38 -0400)]
docs: don't refer to a deprecated glib-mkenums flag
Refer to the new flag instead
https://bugzilla.gnome.org/show_bug.cgi?id=661797
Dan Winship [Fri, 14 Oct 2011 18:32:11 +0000 (14:32 -0400)]
glib-mkenums.in: fix @ENUMPREFIX@ with /*< underscore_name=... >*/
For enums defined with an underscore_name override, @ENUMPREFIX@
would include a trailing "_". Fix.
https://bugzilla.gnome.org/show_bug.cgi?id=661797
Aleksander Morgado [Thu, 27 Oct 2011 14:54:02 +0000 (16:54 +0200)]
gdbus: avoid warning when finalizing a GDBusObjectManagerClient
If the GDBusObjectManagerClient doesn't get a name owner during its lifetime,
`on_control_proxy_g_signal' will never be connected to any signal, so we
shouldn't dump any warning in that case.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=662858
David Zeuthen [Thu, 27 Oct 2011 14:30:58 +0000 (10:30 -0400)]
g_bus_own_name: fix race when unowning a name immediately after owning it
... and also add a test to verify that the fix works.
https://bugzilla.gnome.org/show_bug.cgi?id=662808
Signed-off-by: David Zeuthen <davidz@redhat.com>
Ryan Lortie [Wed, 26 Oct 2011 19:10:33 +0000 (15:10 -0400)]
Revert "gthread: G_STATIC_MUTEX_INIT: Fix this for the non-win32 case."
This reverts commit
52fd106724aa79ad57ecaa7ad9d340f8c89da06d.
Murray Cumming [Wed, 26 Oct 2011 09:38:13 +0000 (11:38 +0200)]
gthread: G_STATIC_MUTEX_INIT: Fix this for the non-win32 case.
Also initialize the unused member. This was correct before but
was broken when the ifndef was moved inside the GStaticMutex
struct:
http://git.gnome.org/browse/glib/commit/glib/gthread.h?id=
24652730a9faaedb19b9e90024077eb7f75a6907
This avoids a compiler warning.
Damien Lespinau [Tue, 25 Oct 2011 02:25:59 +0000 (22:25 -0400)]
Add TAGS files to .gitignore
"make tags" is the best way to produce tags in an automake project and
yet very few people are using it so the tags files it generates are never
added to the .gitignore files.
Add TAGS files to .gitignore then.
https://bugzilla.gnome.org/show_bug.cgi?id=615424
Robert Nagy [Tue, 25 Oct 2011 01:18:48 +0000 (21:18 -0400)]
Fix some build issues on OpenBSD
Adapt to some OpenBSD header quirks.
Patch by Robert Nagy.
https://bugzilla.gnome.org/show_bug.cgi?id=661386
Sjoerd Simons [Fri, 21 Oct 2011 13:40:56 +0000 (15:40 +0200)]
Fix document generation in out of tree builds
https://bugzilla.gnome.org/show_bug.cgi?id=662390
Will Thompson [Thu, 20 Oct 2011 15:07:03 +0000 (16:07 +0100)]
g_parse_debug_string: invert flags given besides "all"
Any flags specified as well as "all" are subtracted from the result,
allowing the user to specify FOO_DEBUG="all,bar,baz" to mean "give me
debugging information for everything except bar and baz".
https://bugzilla.gnome.org/show_bug.cgi?id=642452
Will Thompson [Wed, 16 Feb 2011 10:48:22 +0000 (10:48 +0000)]
Test g_parse_debug_string ("all")
https://bugzilla.gnome.org/show_bug.cgi?id=642452
Matthias Clasen [Mon, 24 Oct 2011 17:43:11 +0000 (13:43 -0400)]
Fix 'make check' with clang
Patch by Elias Pipping
https://bugzilla.gnome.org/show_bug.cgi?id=662491
Matthias Clasen [Mon, 24 Oct 2011 17:25:15 +0000 (13:25 -0400)]
Fix g_hash_table_iter_replace
When reusing an existing key 'internally', we must avoid calling
the key_destroy function on the old key.
https://bugzilla.gnome.org/show_bug.cgi?id=662544
Simon McVittie [Fri, 21 Oct 2011 10:42:10 +0000 (11:42 +0100)]
GDBusConnection: document that this object is (meant to be) thread-safe
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: David Zeuthen <davidz@redhat.com>
Simon McVittie [Fri, 21 Oct 2011 14:46:00 +0000 (15:46 +0100)]
GDBusConnection: make the closed flag atomic (but still lock to write)
Strictly speaking, neither of the two uses that aren't under the lock
*needs* to be atomic, but it seems better to be obviously correct (and
we save another 4 bytes of struct).
One of these uses is in g_dbus_connection_is_closed(), any use of which
is inherently a race condition anyway.
The other is g_dbus_connection_flush_sync, which as far as I can tell
just needs a best-effort check, to not waste effort on a connection that
has been closed for a while (but I could be wrong).
I removed the check for the closed flag altogether in
g_dbus_connection_send_message_with_reply_unlocked, because it turns out
to be redundant with one in g_dbus_connection_send_message_unlocked,
which is called immediately after.
g_dbus_connection_close_sync held the lock to check the closed flag,
which is no longer needed.
As far as I can tell, the only reason why the lock is still desirable
when setting the closed flag is so that remove_match_rule can't fail
by racing with close notification from the worker thread - but
on_worker_closed needs to hold the lock anyway, to deal with other
data structures, so there's no point in trying to eliminate the
requirement to hold the lock.
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: David Zeuthen <davidz@redhat.com>
Simon McVittie [Fri, 21 Oct 2011 15:24:29 +0000 (16:24 +0100)]
GDBusConnection: document which properties are protected by @lock
Also, a few that don't need to be.
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: David Zeuthen <davidz@redhat.com>
Simon McVittie [Mon, 17 Oct 2011 18:27:23 +0000 (19:27 +0100)]
GDBusConnection: access the exit-on-close flag atomically
This isn't strictly necessary, because in every location where it's
checked, if the reading thread misses an update from another thread,
it's indistinguishable from the reading thread having been scheduled
before the writing thread, which is an unavoidable race condition that
callers need to cope with anyway. On the other hand, merging exit_on_close
into atomic_flags gives the least astonishing semantics to library users
and saves 4 bytes of struct, and if you're accessing exit-on-close often
enough for it to be a performance concern, you're probably doing it wrong.
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: David Zeuthen <davidz@redhat.com>
Simon McVittie [Mon, 17 Oct 2011 12:27:03 +0000 (13:27 +0100)]
Annotate GDBusConnection private functions with thread/lock status
The thread shared between all GDBusWorker instances was variously called
the "worker thread" or "message handler thread", which I mostly changed to
"the GDBusWorker thread" to avoid ambiguity.
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: David Zeuthen <davidz@redhat.com>