Unify it more with the rest of the signal handling code. There's
no reason not to specify SA_RESTART and SA_NOCLDSTOP for flags
always, so just do it.
Remove unnecessary initialization, and push the internal API
towards just ensure_unix_signal_handler_installed_unlocked().
https://bugzilla.gnome.org/show_bug.cgi?id=651725
_GNU_SOURCE must be defined before including any other (system)
header, so defining it in glib-unix.h (and hoping no one has included
anything else before that) is wrong. And the "#define _USE_GNU"
workaround for this problem in gnetworkingprivate.h is even wronger
(and still prone to failure anyway due to single-include guards).
Fix this by defining _GNU_SOURCE in config.h when building against
glibc. In theory this is bad because new releases of glibc may include
symbols that conflict with glib symbols, which could then cause
compile failures. However, most people only see new releases of glibc
when they upgrade their distro, at which point they also generally get
new releases of gcc, which have new warnings/errors to clean up
anyway.
https://bugzilla.gnome.org/show_bug.cgi?id=649201
This new API allows watching a few select Unix signals;
looking through the list on my system, I didn't see anything
else that I think it'd reasonable to watch.
We build on the previous patch to make the child watch helper thread
that existed on Unix handle these signals in the threaded case.
In the non-threaded case, they're just global variables.
https://bugzilla.gnome.org/show_bug.cgi?id=644941
GLib historically has been designed to be "mostly" portable; there
are some functions only available on Unix like g_io_channel_unix_new(),
but these are typically paired with obvious counterparts for Win32.
However, as GLib is used not only by portable software, but components
targeting Unix (or even just Linux), there are a few cases where it
would be very convenient if GLib shipped built-in functionality.
This initial patch is a basic wrapper around pipe2(), including
fallbacks for older kernels. This pairs well with the
existing g_spawn_*() API and its child_setup functionality.
However, in the future, I want to add a signal() wrapper here,
complete with proxying the signal to a mainloop. I have initial code
for this, but doing it sanely (including factoring out gmain.c's
private worker thread), is a complex task, and I don't want to block
on that.
See also gwin32.h for Win32 specific functionality.
https://bugzilla.gnome.org/show_bug.cgi?id=644941
g_tls_certificate_list_new_from_file() was leaking the file contents,
and GSource was leaking the GSourcePrivate structure that got
created when using child sources.
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
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.
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.
These allow applications to give meaningful names to their sources.
Source names can then be used for debugging and profiling, for
example with systemtap or gdb.
https://bugzilla.gnome.org/show_bug.cgi?id=606044
These allow applications to give meaningful names to their sources.
Source names can then be used for debugging and profiling, for
example with systemtap or gdb.
https://bugzilla.gnome.org/show_bug.cgi?id=606044
2008-09-25 Tor Lillqvist <tml@novell.com>
Bug 553820 - gpoll.c: undeclared identifier
* glib/gmain.c
* glib/gpoll.c: Make the g_poll() function non-static also on
Windows. Prefix an underscore to the g_main_poll_debug variable
and make it non-static in gmain.c so that it can be used in
gpoll.c. Add back missing variable declaration.
svn path=/trunk/; revision=7542
2008-09-24 Sven Herzberg <sven@imendio.com>
Be a little more explcit in the docs. Includes Owen's requested
changes.
* glib/gmain.c: improved documentation for g_source_attach() and
g_source_destroy()
svn path=/trunk/; revision=7539
* glib/gpoll.c (g_poll): Move this out of gmain.c and make it part
of the public API. (Part of Bug 505361 - gunixinputstream.c
assumes poll() available.)
svn path=/trunk/; revision=7535