Commit Graph

529 Commits

Author SHA1 Message Date
Matthias Clasen
75f7eef9cd Fix doc typos
Now with fewer broken links...
2011-06-04 14:43:52 -04:00
Paolo Bonzini
c5d9a46394 avoid quadratic behavior of GMainLoop when all fd's have the same priority
https://bugzilla.gnome.org/show_bug.cgi?id=640518
2011-06-04 00:00:24 -04:00
Colin Walters
c34a6a66e7 gmain: Consolidate UNIX signal init state handling
For a future signalfd() patch, it will be easier to handle if
we don't separate initialization from watching for a particular
signal.

https://bugzilla.gnome.org/show_bug.cgi?id=651725
2011-06-03 11:38:18 -04:00
Colin Walters
6ea274bca4 gmain: Clean up SIGCHLD handling
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
2011-06-03 11:38:18 -04:00
David Schleef
b92861b5a0 main: Use public function in documentation
https://bugzilla.gnome.org/show_bug.cgi?id=651009
2011-05-26 20:56:51 -04:00
Colin Walters
542215b78a Rename g_unix_pipe_flags to g_unix_open_pipe
From IRC discussion, people liked this name more.

https://bugzilla.gnome.org/show_bug.cgi?id=649322
2011-05-03 23:34:17 -04:00
Colin Walters
ed37970a04 g_unix_set_fd_nonblocking: New API to control file descriptor blocking state
And use it in relevant places in GLib.

https://bugzilla.gnome.org/show_bug.cgi?id=649225
2011-05-03 10:14:48 -04:00
Dan Winship
e56498ee0b Fix usage of _GNU_SOURCE
_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
2011-05-03 07:07:41 -04:00
Colin Walters
549d895fa4 glib-unix: New API to watch some Unix signals
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
2011-04-27 16:01:39 -04:00
Colin Walters
920899d78f gmain: Prepare child watch handling for more generic signal handling
In preparation for supporting more Unix signals such as SIGHUP,
SIGTERM etc.,

https://bugzilla.gnome.org/show_bug.cgi?id=644941
2011-04-27 14:58:36 -04:00
Colin Walters
0ff211f520 glib-unix: New Unix-specific API
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
2011-04-27 13:29:38 -04:00
Dan Winship
784619bc3a Fix two leaks seen when using TLS connections
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.
2011-04-07 08:32:06 -04:00
Emmanuele Bassi
08f0a31289 Revert "Remove all uses of G_CONST_RETURN"
This reverts commit 36741245cc.

The removal has not been discussed, except on Bugzilla:

https://bugzilla.gnome.org/show_bug.cgi?id=644611
2011-03-15 09:03:28 +00:00
Ryan Lortie
36741245cc Remove all uses of G_CONST_RETURN
Just use 'const'.
2011-03-15 01:32:22 -04:00
Emilio Pozuelo Monfort
89ca0f7296 Document g_timeout_add_seconds first call latency
And fix /timeout/rounding to not fail if the first call
happens after 2 seconds.

https://bugzilla.gnome.org/show_bug.cgi?id=644552
2011-03-12 15:51:44 +00:00
Matthias Clasen
121ce56fe1 Go back to the old logic in set_expiration
It was more complicated, but also more correct...
Also add a test to ensure that our rounding works as expected.
https://bugzilla.gnome.org/show_bug.cgi?id=643795
2011-03-06 22:38:17 -05:00
Ryan Lortie
c2fbef4125 Bug 642052 - g_timeout_add(_seconds) overflow
Fix integer overflow error.
2011-02-14 23:23:33 -05:00
Dan Winship
3c59c38404 Fix g_source_add_child_source docs
https://bugzilla.gnome.org/show_bug.cgi?id=640823
2011-01-28 10:18:42 -05:00
Damien Lespiau
beec9743eb gmain: Add Since: 2.28 tag to g_source_{add,remove}_child_source
New API should have gtk-doc tags to document the version it was
introduced.

Signed-off-by: Javier Jardón <jjardon@gnome.org>
2010-12-01 01:12:32 +01:00
Dan Winship
d15cdbefec gmain: add g_source_add_child_source and g_source_remove_child_source
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
2010-11-26 15:07:28 -05:00
Dan Winship
ece936e84d gmain: fix some silly code in a programmer-error case
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
2010-11-26 15:07:28 -05:00
Dan Winship
b358202856 gmain: move finalization of GSource outside of context lock
This avoids ugly deadlock situations such as in
https://bugzilla.gnome.org/show_bug.cgi?id=586432

https://bugzilla.gnome.org/show_bug.cgi?id=626702

https://bugzilla.gnome.org/show_bug.cgi?id=634239
2010-11-26 15:07:28 -05:00
Ryan Lortie
e4ad3442c0 GMainContext: store real time as int64 2010-11-02 22:39:09 -04:00
Ryan Lortie
5dab4727ee Add g_get_real_time() for wall-clock int64 micros
Similar in spirit to g_get_monotonic_time().
2010-11-02 22:39:09 -04:00
Ryan Lortie
92df8a1d77 Drop GTimeSpec type 2010-11-02 22:39:09 -04:00
Ryan Lortie
c3a0d32ef1 Switch GTimeSpec users to int64 microseconds
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.
2010-11-02 22:39:09 -04:00
Ryan Lortie
d9f5ab56c3 GTimeout: simplify math for 'seconds' case
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.
2010-11-02 22:39:09 -04:00
Ryan Lortie
2af4b6e544 Deprecate g_source_get_current_time() 2010-10-27 09:22:13 -04:00
Ryan Lortie
91113a8aee switch GTimeoutSource to use monotonic time 2010-10-27 09:22:12 -04:00
Ryan Lortie
b7d8363fbe Add g_source_get_time()
Cached version of g_get_monotonic_time() that does similar to what
g_source_get_current_time() does for g_get_current_time().
2010-10-27 09:22:12 -04:00
Ryan Lortie
bf941f200c Rename time_is_current to current_time_is_fresh
Internal structure field; no semantic changes.
2010-10-27 09:22:12 -04:00
Ryan Lortie
ab548d240a Add g_get_monotonic_time()
Gets the system monotonic time on systems that have it.  Otherwise, call
g_get_current_time().
2010-10-27 09:22:12 -04:00
Ryan Lortie
ac82e74895 Add 'GTimeSpec' as 'struct timespec' equivalent 2010-10-27 09:22:12 -04:00
Ryan Lortie
92974b80fc Bug 618737 - "dispatch to context" functionality
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.
2010-10-03 17:34:16 -04:00
Tor Lillqvist
548ddd5fe9 Fix build on Windows and possibly other non-Linux platforms
Include glibconfig.h in files that test G_OS_WIN32. Include headers
for GLib APIs used conditionally where needed.
2010-09-06 15:57:32 +03:00
Emmanuele Bassi
581e68b7d3 gmain: Define _GNU_SOURCE before including glibconfig.h
As it pulls in unistd.h from something else.
2010-09-04 18:15:15 +01:00
Matthias Clasen
04077ff5c5 More include cleanups 2010-09-03 23:03:14 -04:00
Matthias Clasen
358b9d6ac7 Move main loop docs inline 2010-07-10 23:56:45 -04:00
Ryan Lortie
2e53e50244 glib/: fully remove galias hacks 2010-07-07 19:34:35 -04:00
Havoc Pennington
6b53e4826f GSource: add g_source_set_name, g_source_get_name, g_source_set_name_by_id
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
2010-05-25 16:59:22 -04:00
Havoc Pennington
e5696c282e GSource: add g_source_set_name, g_source_get_name, g_source_set_name_by_id
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
2010-05-25 13:45:28 -04:00
Dan Winship
4363f1932f Add g_main_context_push_thread_default() etc
This allows applications to use async methods from other threads, or
in multiple independent main loops.

http://bugzilla.gnome.org/show_bug.cgi?id=579984
2009-07-01 09:02:23 -04:00
Matthias Clasen
440bf5bee5 Use pipe2 when available
This avoids a small window for races between pipe and fdset.
Reported in bug 579933 by Thiago Macieira.
2009-06-19 23:44:29 -04:00
Matthias Clasen
00151ec0e1 Fix a locking problem in g_main_context_iterate()
We failed to ensure that the context is locked on every exit of
the function. This fixes bug 583324.
2009-05-27 12:04:35 -04:00
Ryan Lortie
8df23d2283 trivial spelling/whitespace fixes
svn path=/trunk/; revision=8011
2009-03-17 23:03:33 +00:00
Matthias Clasen
0f6b25ca96 Fix some compiler warnings
svn path=/trunk/; revision=7755
2008-12-31 05:51:47 +00:00
Matthias Clasen
40e192abf2 Add more docs
svn path=/trunk/; revision=7545
2008-09-26 14:05:03 +00:00
Tor Lillqvist
fc542a462a Bug 553820 - gpoll.c: undeclared identifier
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-25 19:59:49 +00:00
Sven Herzberg
ee685b003e Be a little more explcit in the docs. Includes Owen's requested changes.
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
2008-09-24 13:44:27 +00:00
Dan Winship
ac68024ec1 Move this out of gmain.c and make it part of the public API. (Part of Bug
* 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
2008-09-23 16:32:30 +00:00