examples: fix ecore_exe_child example to work properly on Windows
authorAndrii Kroitor <an.kroitor@samsung.com>
Thu, 15 Jun 2017 03:17:39 +0000 (12:17 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 15 Jun 2017 03:18:42 +0000 (12:18 +0900)
Summary: ecore_main_fd_handler_add is not working on Windows

Reviewers: vtorri, raster

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4470

src/examples/ecore/ecore_exe_example_child.c

index c22a7e5..b59ff81 100644 (file)
@@ -8,8 +8,14 @@
 
 #define BUFFER_SIZE 1024
 
+#ifdef _WIN32
+#define HANDLER_TYPE Ecore_Win32_Handler
+#else
+#define HANDLER_TYPE Ecore_Fd_Handler
+#endif
+
 static Eina_Bool
-_fd_handler_cb(void *data EINA_UNUSED, Ecore_Fd_Handler *fd_handler EINA_UNUSED)
+_fd_handler_cb(void *data EINA_UNUSED, HANDLER_TYPE *fd_handler EINA_UNUSED)
 {
    static int numberOfMessages = 0;
    char message[BUFFER_SIZE];
@@ -40,10 +46,22 @@ main(void)
    if (!ecore_init())
      goto error;
 
+#ifdef _WIN32
+   /* note that stdin fd's on windows don't work the same
+    * as on unixes. this uses stdin just as a quick
+    * example that's simple instead of a more complex
+    * one, so this won't actually work on windows unless
+    * you use a fd that comes from somewhere that is
+    * select()able. */
+   ecore_main_win32_handler_add(GetStdHandle(STD_INPUT_HANDLE),
+                                _fd_handler_cb,
+                                NULL);
+#else
    ecore_main_fd_handler_add(STDIN_FILENO,
                              ECORE_FD_READ,
                              _fd_handler_cb,
                              NULL, NULL, NULL);
+#endif
    ecore_main_loop_begin();
 
    ecore_shutdown();