[libgda/LIBGDA_4.2] Use _close() and _write() on Windows
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda/LIBGDA_4.2] Use _close() and _write() on Windows
- Date: Mon, 13 Jun 2011 19:01:00 +0000 (UTC)
commit 529071c71c7d9383c723412cab8191d79a78cd10
Author: Vivien Malerba <malerba gnome-db org>
Date: Fri Jun 10 20:53:03 2011 +0200
Use _close() and _write() on Windows
libgda/thread-wrapper/gda-thread-wrapper.c | 19 ++++++++++++++++++-
1 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/libgda/thread-wrapper/gda-thread-wrapper.c b/libgda/thread-wrapper/gda-thread-wrapper.c
index 972ad50..fd72451 100644
--- a/libgda/thread-wrapper/gda-thread-wrapper.c
+++ b/libgda/thread-wrapper/gda-thread-wrapper.c
@@ -59,6 +59,9 @@ struct _GdaThreadWrapperPrivate {
/*
* Threads synchronization with notifications
+ *
+ * Both Unix and Windows create a set of 2 file descriptors, the one at potision 0 for reading
+ * and the one at position 1 for writing.
*/
struct _Pipe {
GThread *thread;
@@ -100,10 +103,17 @@ pipe_unref (Pipe *p)
/* destroy @p */
if (p->ioc)
g_io_channel_unref (p->ioc);
+#ifdef G_OS_WIN32
+ if (p->fds[0] >= 0)
+ _close (p->fds[0]);
+ if (p->fds[1] >= 0)
+ _close (p->fds[1]);
+#else
if (p->fds[0] >= 0)
close (p->fds[0]);
if (p->fds[1] >= 0)
close (p->fds[1]);
+#endif
g_mutex_free (p->mutex);
#ifdef DEBUG_NOTIFICATION
g_print ("Destroyed Pipe %p\n", p);
@@ -453,8 +463,11 @@ write_notification (GdaThreadWrapper *wrapper, ThreadData *td,
ssize_t nw;
notif.type = type;
notif.job_id = job_id;
-
+#ifdef G_OS_WIN32
+ nw = _write (p->fds[1], ¬if, sizeof (notif));
+#else
nw = write (p->fds[1], ¬if, sizeof (notif));
+#endif
if (nw != sizeof (notif)) {
/* Error */
goto onerror;
@@ -470,7 +483,11 @@ write_notification (GdaThreadWrapper *wrapper, ThreadData *td,
g_print ("Closed FD %d\n", p->fds [1]);
#endif
/* close the writing end of the pipe */
+#ifdef G_OS_WIN32
+ _close (p->fds [1]);
+#else
close (p->fds [1]);
+#endif
p->fds [1] = -1;
if (td)
clean_notifications (wrapper, td);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]