Commit Graph

188 Commits

Author SHA1 Message Date
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
Tor Lillqvist
f911ead382 Fix embarrassing bug: I was passing an incorrect third parameter to
2008-09-23  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c (poll_rest) [Win32]: Fix embarrassing bug: I was
	passing an incorrect third parameter to memmove(), had forgotten
	to multiply by the size of the table entry. Just use a for loop
	instead, clearer. Odd I didn't notice when testing this code.


svn path=/trunk/; revision=7533
2008-09-23 15:35:12 +00:00
Matthias Clasen
b36ea0b1c7 Bug 523463 – Core dump in gmain.c:2482:IA__g_main_context_check()
2008-09-09  Matthias Clasen  <mclasen@redhat.com>

        Bug 523463 – Core dump in gmain.c:2482:IA__g_main_context_check()

        * glib/gmain.c (g_main_context_check): Be robust against setting
        event fields on the fly, as e.g. happens in linc. Tracked down
        by Paul Smith, fix proposed by Owen Taylor.

svn path=/trunk/; revision=7447
2008-09-09 06:04:21 +00:00
Tor Lillqvist
605682521b Rework the g_poll() implementation on Windows to match poll() semantics
2008-08-21  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c: Rework the g_poll() implementation on Windows to
	match poll() semantics more closely. This makes the test program
	in bug #468910 behave better and doesn't seem to break anything
	else.

	If polling several GPollFDs, i.e. messages and/or waitable
	handles, first check if one or several of them are in the
	signalled state right away, and return indication for all that are
	in that case.

	If not, then poll with timeout and indicate only the single one
	that the Win32 wait function tells us as before.

	Remove unnecessary ifdefs, as we always have G_MAIN_POLL_DEBUG
	defined on Windows.

	Initialise g_main_poll_debug in g_main_context_new() so we have it
	before testing it in one case.

	Don't add several copies of a handle in the array of handles to
	wait for. The documentation says this is not allowed, although it
	did seem to work fine in practise. But do as the documentations
	says anyway.


svn path=/trunk/; revision=7375
2008-08-21 02:27:13 +00:00
Tor Lillqvist
c9211d68fc MSDN says: "Do not cast a pointer to a FILETIME structure to either a
2008-08-04  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c (g_get_current_time): MSDN says: "Do not cast a
	pointer to a FILETIME structure to either a LARGE_INTEGER* or
	__int64* value because it can cause alignment faults on 64-bit
	Windows." So don't do that then. Indeed the code did work randomly
	on Win64 when compiled with optimisation.


svn path=/trunk/; revision=7308
2008-08-04 19:22:05 +00:00
Tor Lillqvist
0e2384faa8 glib/giowin32.c glib/gmain.c glib/gspawn-win32.c Change gssize casts
2008-08-04  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c
	* glib/gmain.c
	* glib/gspawn-win32.c
	* glib/gspawn-win32-helper.c: Change gssize casts introduced on
	2008-07-28 to gintptr casts now that we have that. gssize is as
	such the same as gintptr on both 32- and 64-bit Windows, but the
	gintptr name indicates that it is used to hold pointers, i.e. also
	HANDLEs.


svn path=/trunk/; revision=7306
2008-08-04 18:46:59 +00:00
Tor Lillqvist
a3fa74853a Fix problems on 64-bit Windows. Avoid warnings, some of which indicated
2008-07-28  Tor Lillqvist  <tml@novell.com>

	Fix problems on 64-bit Windows. Avoid warnings, some of which
	indicated actual problems, some which were just annoyances. 

	Where casts to an integer type are needed for pointers, use
	gssize. Technically intptr_t would be the more proper type, but we
	still want to be compilable with MSVS6 and 7 which don't have
	intptr_t. MSVS8 and 9 do have intptr_t, but in <crtdefs.h>, not
	<stdint.h>.

	Use %p to print out handles. Use gssize casts when assigning
	GPollFD::fd fields.

	Use G_GSIZE_FORMAT when printing size_t values.
	
	* configure.in: Define automake conditional G_OS_WIN32_X64 which
	is true on Win64.

	* glib/giochannel.h: Use slightly different prototype for
	g_io_channel_win32_new_messages() on Win64 with gsize instead of
	guint.

	* glib/giowin32.c
	* glib/gmain.c
	* glib/gspawn-win32.c
	* tests/testglib.c: Generic changes as described above.

	* glib/gmain.h: Don't bother mentioning GIMP in comment.

	* glib/grel.c (tuple_hash_2): Use all bits of pointer.

	* glib/gspawn-win32.c
	* glib/gspawn-win32-helper.c: Use gssize types in the
	communication between parent and helper process, so that we can
	pass process handles, which are pointers, also on Win64.

	* glib/gtimer.c (g_time_val_to_iso8601): time_t is 64 bits on
	Win64 so we can't pass the address of a GTimeVal::tv_sec which is
	a long directly to gmtime(). On the other hand, changing
	GTimeVal::tv_sec to be a gint64 on Win64 is not really feasible
	either, as that would then require changes in much code that uses
	GTimeVals.

	* glib/gspawn-win32.c
	* glib/Makefile.am: Call the helper programs
	gspawn-win64-helper.exe and gspawn-win64-helper-console.exe on
	Win64, to avoid potential risk of running a 32-bit version of the
	helper.


svn path=/trunk/; revision=7260
2008-07-28 00:24:14 +00:00
Matthias Clasen
fef22bfe23 Add a g_return_val_if_fail check in both versions. Proposed by Patrik
* glib/gmain.c (g_get_current_time): Add a g_return_val_if_fail
        check in both versions. Proposed by Patrik Olsson in bug 540545.

svn path=/trunk/; revision=7142
2008-07-02 16:16:27 +00:00
Matthias Clasen
4c78992dbf Don't leak the pipes to child processes. Patch by Thiago Macieira.
* glib/gmain.c (g_main_context_init_pipe): Don't leak the
        pipes to child processes. Patch by Thiago Macieira.


svn path=/trunk/; revision=7037
2008-06-13 14:11:03 +00:00
Tor Lillqvist
a689811a41 glib/gmain.c Clarify what a "child pid" is in the doc comments.
2008-06-11  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c
	* glib/gspawn.c: Clarify what a "child pid" is in the doc
	comments.


svn path=/trunk/; revision=6995
2008-06-11 06:57:22 +00:00
Tor Lillqvist
2ded70ee94 Improve debugging printouts. When G_MAIN_POLL_DEBUG is defined, we check
2008-05-17  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c: Improve debugging printouts. When
	G_MAIN_POLL_DEBUG is defined, we check for an environment variable
	of the same name to decide whether to print out debugging
	information or not. G_MAIN_POLL_DEBUG is always defined on Windows
	as there is more often a need to debug this stuff there. On Unix
	the definition has to be uncommented (or done on the compile
	command line).


svn path=/trunk/; revision=6897
2008-05-17 02:25:59 +00:00
13:24:13 Tim Janik
02e2b95393 renamed GMainDispatch.dispatching_sources to be more descriptive and
2008-05-02 13:24:13  Tim Janik  <timj@imendio.com>

        * glib/gmain.c: renamed GMainDispatch.dispatching_sources to be more
        descriptive and distinguishable within the source file.


svn path=/trunk/; revision=6874
2008-05-02 11:22:10 +00:00
Matthias Clasen
ccd3ec90bf Make the fix for bug 448943 work.
2008-04-04  Matthias Clasen  <mclasen@redhat.com>

        * glib/gmain.c: Make the fix for bug 448943 work.



svn path=/trunk/; revision=6826
2008-04-04 13:06:14 +00:00
Matthias Clasen
7f82bb3196 Bug 448943 – g_timeout_add_seconds() problems
2008-04-03  Matthias Clasen  <mclasen@redhat.com>

        Bug 448943 – g_timeout_add_seconds() problems

        * glib/gmain.c (g_timeout_set_expiration): Prevent expiration
        time going negative. Reported by Cody Russell, analyzed by
        Olivier Crete, patch by Sjoerd Simons.


svn path=/trunk/; revision=6814
2008-04-03 04:51:16 +00:00
Tor Lillqvist
d8fa7b34d2 Improve fix for #525192 below: Use SleepEx() so that the sleep is
2008-03-31  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c (g_poll): Improve fix for #525192 below: Use
	SleepEx() so that the sleep is alertable. Thanks to John
	Ehresman.


svn path=/trunk/; revision=6794
2008-03-31 18:05:47 +00:00
Tor Lillqvist
3e877f984e Bug 525192 - 100% CPU if run main loop with no IO sources
2008-03-31  Tor Lillqvist  <tml@novell.com>

	Bug 525192 - 100% CPU if run main loop with no IO sources

	* glib/gmain.c (g_poll) [Win32]: Patch by Neil Roberts.


svn path=/trunk/; revision=6787
2008-03-31 07:37:17 +00:00
Tor Lillqvist
d01acfe811 Further patch by Vlad Grecescu: Drop the code path that called
2008-02-26  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c (g_poll): Further patch by Vlad Grecescu: Drop
	the code path that called WaitMessage(), as WaitMessage()
	doesn't offer any chance for APCs to run. Instead just use the
	code path with MsgWaitForMultipleObjectsEx() even for the
	wait-only-for-messages case. (#517484)


svn path=/trunk/; revision=6597
2008-02-26 17:26:28 +00:00
Tor Lillqvist
6eb2b42715 Use alertable wait functions so that I/O completion routines or user-mode
2008-02-24  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c (g_poll) [Win32]: Use alertable wait functions so
	that I/O completion routines or user-mode Asynchronous Procedure
	Calls can be run. (#517484, Vlad Grecescu)


svn path=/trunk/; revision=6571
2008-02-24 01:46:42 +00:00
Matthias Clasen
d2f111fca7 Require gtk-doc 1.8.
2007-11-25  Matthias Clasen  <mclasen@redhat.com>

        * configure.in: Require gtk-doc 1.8.

        * glib/gasyncqueue.c:
        * glib/gdate.c:
        * glib/gfileutils.c:
        * glib/gmain.c:
        * glib/gmarkup.c:
        * glib/gregex.c:
        * glib/gtestutils.c:
        * glib/gutils.c: Use gtk-doc abbreviations for
        examples in doc comments.


svn path=/trunk/; revision=5933
2007-11-25 06:05:06 +00:00
Matthias Clasen
4abb6c13be Improve the docs. (#491974, Areg Beketovski)
2007-11-09  Matthias Clasen <mclasen@redhat.com>

        * glib/gmain.c (g_main_context_iteration): Improve the
        docs.  (#491974, Areg Beketovski)



svn path=/trunk/; revision=5850
2007-11-10 00:23:16 +00:00
Matthias Clasen
e8900bc3b7 More docs fixes
svn path=/trunk/; revision=5842
2007-11-09 03:33:35 +00:00
Matthias Clasen
58178261fd More doc fixes
svn path=/trunk/; revision=5840
2007-11-09 03:29:51 +00:00
Matthias Clasen
ed7e9b2459 Expand the docs a bit. (#317775, Søren Sandmann)
2007-11-08  Matthias Clasen <mclasen@redhat.com>

        * glib/gmain.c (g_main_loop_quit): Expand the docs
        a bit.  (#317775, Søren Sandmann)



svn path=/trunk/; revision=5833
2007-11-09 02:46:41 +00:00
Matthias Clasen
1c93d867fc Don't leak the condvar. (#479724, Areg Beketovski)
2007-11-07  Matthias Clasen <mclasen@redhat.com>

        * glib/gmain.c (g_main_context_unref): Don't leak the
        condvar.  (#479724, Areg Beketovski)


svn path=/trunk/; revision=5818
2007-11-08 03:53:41 +00:00
Behdad Esfahbod
9df1f4fcc7 Fix warnings from sparse. (#487491, Kjartan Maraas)
2007-10-21  Behdad Esfahbod  <behdad@gnome.org>

        * glib/gdate.c (g_date_strftime):
        * glib/gmain.c (g_main_context_check):
        * glib/gregex.c (g_match_info_fetch_all), (g_regex_split_full):
        * glib/gthread.c (g_once_init_enter_impl), (g_once_init_leave):
        * glib/gthread.h:
        * glib/gutf8.c (g_utf16_to_utf8), (g_utf16_to_ucs4):
        * tests/errorcheck-mutex-test.c (lock_locked_mutex),
        (trylock_locked_mutex), (unlock_unlocked_mutex),
        (free_locked_mutex), (wait_on_unlocked_mutex),
        (wait_on_otherwise_locked_mutex), (timed_wait_on_unlocked_mutex),
        (timed_wait_on_otherwise_locked_mutex):
        Fix warnings from sparse. (#487491, Kjartan Maraas)


svn path=/trunk/; revision=5792
2007-10-21 17:01:29 +00:00
Matthias Clasen
34a9878985 Fix a doc formatting problem
svn path=/trunk/; revision=5766
2007-09-16 17:30:57 +00:00
Matthias Clasen
23cb7803c2 Coding style cleanups
svn path=/trunk/; revision=5651
2007-07-22 00:34:21 +00:00
Emmanuele Bassi
00ab83b8e8 Add full variant to the approximate timeout functiont
The g_timeout_add_seconds() API lacks a _full() counterpart, allowing the
setting of a destroy notification function to be invoked when the timeout
source is removed.

This patch adds g_timeout_add_seconds_full() to the public API and
reimplements g_timeout_add_seconds() as a call to g_timeout_add_seconds_full().

svn path=/trunk/; revision=5575
2007-06-18 16:55:50 +00:00
Matthias Clasen
b2d6494a5e Fix typos
svn path=/trunk/; revision=5558
2007-06-14 13:52:01 +00:00
Chris Wilson
af8671792d Replace a g_slist_prepend/g_slist_remove pair with an on-stack link and
2007-03-15  Chris Wilson  <chris@chris-wilson.co.uk>

	* glib/gmain.c (g_main_dispatch): Replace a
	g_slist_prepend/g_slist_remove pair with an on-stack link
	and open coding. (#416094)


svn path=/trunk/; revision=5407
2007-03-15 08:47:28 +00:00
Matthias Clasen
2d7fa2dd18 Readd a return which was removed as dead code a while ago. icc may
* glib/gmain.c (child_watch_helper_thread): Readd a
        return which was removed as dead code a while ago.
        icc may consider it dead, but gcc doesn't like non-void
        functions without a return...  (#354707)
2006-12-19 02:49:39 +00:00
Matthias Clasen
dc78f9b202 Improve the docs. (#345569, Tim-Philipp Müller)
2006-12-14  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmain.c (g_child_watch_add_full): Improve the docs.
	(#345569, Tim-Philipp Müller)
2006-12-15 03:42:24 +00:00
Matthias Clasen
caecf2dda0 Add a check for broken poll on Mac OS X.
2006-12-12  Matthias Clasen  <mclasen@redhat.com>

        * configure.in: Add a check for broken poll on Mac OS X.

        * glib/gmain.c: Use poll emulation on OS X.  (#302672, Toby Peterson,
        patch by Dave Vasilevsky)
2006-12-12 20:04:45 +00:00
Matthias Clasen
3080ebdaa8 Fix typos in doc comments. (#358421, Tom Tromey)
2006-10-01  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmain.c: Fix typos in doc comments.
	(#358421, Tom Tromey)
2006-10-01 05:35:29 +00:00
Matthias Clasen
f8c1c1f9e0 Add functions for approximate timeouts 2006-09-10 05:44:46 +00:00
Matthias Clasen
58ea1db43e Add Since tags. Fix Since tag. (#351583, Brian Cameron)
2006-08-15  Matthias Clasen  <mclasen@redhat.com>

        * glib/gbookmarkfile.c (g_bookmark_file_get_groups):
        * glib/gmain.c (g_source_is_destroyed): Add Since tags.
        * glib/gkeyfile.c (g_key_file_get_double_list): Fix
        Since tag.  (#351583, Brian Cameron)
2006-08-16 03:33:57 +00:00
Matthias Clasen
0c26468057 2.11.2 2006-06-05 17:34:53 +00:00
Matthias Clasen
03c90584b8 Don't leak the dispatch struct. (#321886)
2006-06-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmain.c (get_dispatch): Don't leak the
	dispatch struct.  (#321886)
2006-06-05 15:02:51 +00:00
Matthias Clasen
a74af928cf fixups 2006-06-02 02:55:50 +00:00
Matthias Clasen
89a803beb4 More additions 2006-06-02 02:50:38 +00:00
Matthias Clasen
bef319723b Add two new functions, g_source_set_funcs and g_source_is_destroyed, that
2006-06-01  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/gmain.h:
	* glib/gmain.c: Add two new functions,
	g_source_set_funcs and g_source_is_destroyed,
	that will be necessary to solve thread-safety
	issues with idles in GTK+.  (#321886, Chris Wilson)
2006-06-02 02:36:30 +00:00
Sebastian Wilhelmi
e4f8f3b95c Renamed to glib/gthreadprivate.h and moved system thread identifier
2006-05-09  Sebastian Wilhelmi  <wilhelmi@google.com>

	* glib/gthreadinit.h: Renamed to glib/gthreadprivate.h and moved
	system thread identifier comparision and assignment macros from
	glib/gthread.c to glib/gthreadprivate.h.

	* glib/Makefile.am, glib/gatomic.c, glib/gconvert.c, glib/gmain.c,
	glib/gmem.c, glib/gmessages.c, glib/grand.c, glib/gslice.c,
	glib/gthread.c, glib/gutils.c, gthread/gthread-impl.c: Use
	glib/gthreadprivate.h instead of glib/gthreadinit.h.

	* gthread/gthread-impl.c: Use GSystemThread instead of GThread for
	owner determination. This fixes #311043 and is mostly modeled
	after the patch from jylefort@FreeBSD.org.
2006-05-10 00:44:50 +00:00