glib r6571 - in trunk: . glib
- From: tml svn gnome org
- To: svn-commits-list gnome org
- Subject: glib r6571 - in trunk: . glib
- Date: Sun, 24 Feb 2008 01:46:42 +0000 (GMT)
Author: tml
Date: Sun Feb 24 01:46:42 2008
New Revision: 6571
URL: http://svn.gnome.org/viewvc/glib?rev=6571&view=rev
Log:
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)
Modified:
trunk/ChangeLog
trunk/glib/gmain.c
Modified: trunk/glib/gmain.c
==============================================================================
--- trunk/glib/gmain.c (original)
+++ trunk/glib/gmain.c Sun Feb 24 01:46:42 2008
@@ -426,18 +426,18 @@
else
{
/* Wait for either message or event
- * -> Use MsgWaitForMultipleObjects
+ * -> Use MsgWaitForMultipleObjectsEx
*/
#ifdef G_MAIN_POLL_DEBUG
- g_print ("MsgWaitForMultipleObjects(%d, %d)\n", nhandles, timeout);
+ g_print ("MsgWaitForMultipleObjectsEx(%d, %d)\n", nhandles, timeout);
#endif
- ready = MsgWaitForMultipleObjects (nhandles, handles, FALSE,
- timeout, QS_ALLINPUT);
+ ready = MsgWaitForMultipleObjectsEx (nhandles, handles, timeout,
+ QS_ALLINPUT, MWMO_ALERTABLE);
if (ready == WAIT_FAILED)
{
gchar *emsg = g_win32_error_message (GetLastError ());
- g_warning (G_STRLOC ": MsgWaitForMultipleObjects() failed: %s", emsg);
+ g_warning (G_STRLOC ": MsgWaitForMultipleObjectsEx() failed: %s", emsg);
g_free (emsg);
}
}
@@ -451,16 +451,16 @@
else
{
/* Wait for just events
- * -> Use WaitForMultipleObjects
+ * -> Use WaitForMultipleObjectsEx
*/
#ifdef G_MAIN_POLL_DEBUG
- g_print ("WaitForMultipleObjects(%d, %d)\n", nhandles, timeout);
+ g_print ("WaitForMultipleObjectsEx(%d, %d)\n", nhandles, timeout);
#endif
- ready = WaitForMultipleObjects (nhandles, handles, FALSE, timeout);
+ ready = WaitForMultipleObjectsEx (nhandles, handles, FALSE, timeout, TRUE);
if (ready == WAIT_FAILED)
{
gchar *emsg = g_win32_error_message (GetLastError ());
- g_warning (G_STRLOC ": WaitForMultipleObjects() failed: %s", emsg);
+ g_warning (G_STRLOC ": WaitForMultipleObjectsEx() failed: %s", emsg);
g_free (emsg);
}
}
@@ -477,7 +477,8 @@
if (ready == WAIT_FAILED)
return -1;
- else if (ready == WAIT_TIMEOUT)
+ else if (ready == WAIT_TIMEOUT ||
+ ready == WAIT_IO_COMPLETION)
return 0;
else if (poll_msgs && ready == WAIT_OBJECT_0 + nhandles)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]