[gimp] Do not use g_io_channel_unix_new() for the win32 platforms.



commit b8aabcac5c06b393911ae7556d18e137f4781e6a
Author: Jehan <jehan girinstud io>
Date:   Mon Aug 11 23:01:12 2014 +0000

    Do not use g_io_channel_unix_new() for the win32 platforms.
    
    It is advised to use the more accurate g_io_channel_win32_new_fd() or
    g_io_channel_win32_new_socket() because GLib can't differentiate between
    file descriptors and sockets on Windows, which outputs a warning when
    there is ambiguity.

 app/config/gimpxmlparser.c |    4 ++++
 app/plug-in/gimpplugin.c   |    7 ++++++-
 libgimp/gimp.c             |    5 +++++
 3 files changed, 15 insertions(+), 1 deletions(-)
---
diff --git a/app/config/gimpxmlparser.c b/app/config/gimpxmlparser.c
index 840d3d0..62f121f 100644
--- a/app/config/gimpxmlparser.c
+++ b/app/config/gimpxmlparser.c
@@ -153,7 +153,11 @@ gimp_xml_parser_parse_fd (GimpXmlParser  *parser,
   g_return_val_if_fail (parser != NULL, FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
+#ifdef G_OS_WIN32
+  io = g_io_channel_win32_new_fd (fd);
+#else
   io = g_io_channel_unix_new (fd);
+#endif
 
   success = gimp_xml_parser_parse_io_channel (parser, io, error);
 
diff --git a/app/plug-in/gimpplugin.c b/app/plug-in/gimpplugin.c
index 2025138..93e4dc0 100644
--- a/app/plug-in/gimpplugin.c
+++ b/app/plug-in/gimpplugin.c
@@ -261,12 +261,17 @@ gimp_plug_in_open (GimpPlugIn         *plug_in,
   /* Prevent the plug-in from inheriting our ends of the pipes */
   SetHandleInformation ((HANDLE) _get_osfhandle (my_read[0]), HANDLE_FLAG_INHERIT, 0);
   SetHandleInformation ((HANDLE) _get_osfhandle (my_write[1]), HANDLE_FLAG_INHERIT, 0);
-#endif
 
+  plug_in->my_read   = g_io_channel_win32_new_fd (my_read[0]);
+  plug_in->my_write  = g_io_channel_win32_new_fd (my_write[1]);
+  plug_in->his_read  = g_io_channel_win32_new_fd (my_write[0]);
+  plug_in->his_write = g_io_channel_win32_new_fd (my_read[1]);
+#else
   plug_in->my_read   = g_io_channel_unix_new (my_read[0]);
   plug_in->my_write  = g_io_channel_unix_new (my_write[1]);
   plug_in->his_read  = g_io_channel_unix_new (my_write[0]);
   plug_in->his_write = g_io_channel_unix_new (my_read[1]);
+#endif
 
   g_io_channel_set_encoding (plug_in->my_read, NULL, NULL);
   g_io_channel_set_encoding (plug_in->my_write, NULL, NULL);
diff --git a/libgimp/gimp.c b/libgimp/gimp.c
index aea24b2..0d85d2d 100644
--- a/libgimp/gimp.c
+++ b/libgimp/gimp.c
@@ -401,8 +401,13 @@ gimp_main (const GimpPlugInInfo *info,
   gimp_signal_private (SIGCHLD, SIG_DFL, SA_RESTART);
 #endif
 
+#ifdef G_OS_WIN32
+  _readchannel  = g_io_channel_win32_new_fd (atoi (argv[2]));
+  _writechannel = g_io_channel_win32_new_fd (atoi (argv[3]));
+#else
   _readchannel  = g_io_channel_unix_new (atoi (argv[2]));
   _writechannel = g_io_channel_unix_new (atoi (argv[3]));
+#endif
 
   g_io_channel_set_encoding (_readchannel, NULL, NULL);
   g_io_channel_set_encoding (_writechannel, NULL, NULL);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]