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
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-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-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-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 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-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
* 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-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-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-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-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 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-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-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
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-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
* 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-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-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-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.