This adds "child source" support to GSource. A child source behaves
basically like a GPollFD; when you add a source to a context, all of
its child sources are added with the same priority; when you destroy a
source, all of its child sources are destroyed; and when a child
source triggers, its parent source's dispatch function is run.
Use cases include:
- adding a GTimeoutSource to another source to cause the source to
automatically trigger after a certain timeout.
- wrapping an existing source type with a new type that has
a different callback signature
- creating a source that triggers based on different conditions
at different times.
https://bugzilla.gnome.org/show_bug.cgi?id=634239
Previously if a source got finalized while still attached to a
context, it would warn and re-ref the source. But then it just freed
it anyway... So keep the warning but drop the re-ref.
https://bugzilla.gnome.org/show_bug.cgi?id=634239
This is the same as what we were already doing with 2 changes:
- use an initial value of 5381 instead of 0
- multiply by 33 in each round instead of 31
Remove some code that was written in 2000 to support OSes that do not
have nanosleep(). nanosleep() has been specified (in POSIX-1.2001) for
almost a decade now, so assume we have it (except on Windows).
Remove the checks for nanosleep and nsleep from configure.ac.
We're removing this code because we honestly believe that nobody will be
affected. If this change negatively impacts you, please file a bug.
glib is trying to move toward using microseconds-in-gint64 as its
universal time format.
No real API breaks here since GTimeSpec is new this unstable release
series.
The code was designed to deal with any granularity of timer and due to
the use of GTimeVal/GTimeSpec, the math for this gets extremely
confusing.
From a practical standpoint, we only ever have a granularity of seconds.
Take advantage of that fact in the code and vastly simplify the math.
Add some helpers for freeing a linked list along with its elements by
providing a GDestroyNotify to call on each of them.
Add a test.
Based on a patch from Cosimo Cecchi.
Avoid acquiring the lock on the instance on the case of deserialising a
child. We know that it is safe to do this unlocked because a serialised
child will never become unserialised.
Closes#626320
Make g_get_user_data_dir() return the CSIDL_LOCAL_APPDATA folder on
Windows, and not CSIDL_PERSONAL. On Windows 7, that corresponds to the
subfolders AppData\Local vs. Documents under the profile ("home")
folder. This matches what Qt does, for instance, and has been widely
requested.
Also make g_get_user_config_dir() return this and not the (roaming)
CSIDL_APPDATA folder. The reason for this change is that it would be
surprising and hard to justify if g_get_user_data_dir() returned the
local application data folder while g_get_user_config_dir() would
return the roaming one. Nothing in the function names or the XDG specs
suggests that any roaming vs. local dichotomy would be involved.
Document the new semantics and the fact that these two functions now
return the same directory on Windows.
Note that in reality, code that really truly wants to support Windows
as well as possible probably will not use these GLib functions anyway,
but Win32 APIs directly to be sure what it is doing...
Should hopefully satisfy complaints in bug #620710 and related bugs.
One of the GVariant test cases allocates a pair of character arrays on
the stack and then passes them to functions that assume that they will
be aligned to a multiple of two.
This is not the case for some versions of GCC (4.0.3 on PowerPC).
Make g_variant_byteswap() merely return a new reference on the given
value in the event that we know that byteswapping will have no effect
(ie: types which have no alignment requirement).
This fixes a somewhat complicated interaction between GVariant,
GSettings and GVDB on big endian machines: GSettings assumes that it
can unref values returned from GVDB without losing access to the
underlying data. This only works if the underlying data is in the
mapped file -- not a freshly-allocated buffer that GVariant byteswapped
into.
Adds a new function g_main_context_invoke() (and _full() variant).
This function takes a main context, a function and a user_data. If the
main context is already acquired in the current thread, the function is
invoked directly. If the main context is the default main context of
the current thread and it can be acquired then the function is invoked
directly while the context is owned. Otherwise, the function is
scheduled as an idle on the context.
No functionality changes here.
Vastly simplify the algorithm for calculating the day of the week.
Fix the documentation (which is incorrectly stating that 1 means
Sunday) and clarify that the number we return is in line with ISO 8601
week day numbering.
Emmanuele suggested adding G_GNUC_WARN_UNUSED_RESULT to all of the
g_date_time_add_* functions to help deal with the situation where people
may mistakenly believe that these functions are inplace modifiers.
Using the internal pcre has the side effect of exposing gregex.c to
glib.h. When we use the system one, we lose that, so we need to
explicitly include the things we use (glist, gatomic, etc..)