Enlightenment CVS committal

Author  : doursse
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore


Modified Files:
        ecore_main.c 


Log Message:
forgot to add glew support in configure.in

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_main.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- ecore_main.c        30 Sep 2007 15:24:51 -0000      1.28
+++ ecore_main.c        21 Nov 2007 12:16:16 -0000      1.29
@@ -455,16 +455,73 @@
    return ret;
 }
 
-static void
-_ecore_main_loop_iterate_internal(int once_only)
+static int
+_ecore_main_win32_message(double timeout)
 {
 #ifdef _WIN32
    MSG msg;
+
+   if (!finite(timeout))
+     timeout = 0.0;
+
+   if (timeout < 0.0)
+     {
+       for (;;)
+         {
+            if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
+              return 1;
+         }
+     }
+   else
+     {
+        double start;
+        double t;
+
+        start = ecore_time_get();
+        while ((t = ecore_time_get()) < (start + timeout))
+          {
+             if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
+               return 1;
+          }
+     }
 #endif /* _WIN32 */
+
+   return 0;
+}
+
+static int
+_ecore_main_win32_message_buf_call(void)
+{
+#ifdef _WIN32
+   MSG msg;
+   int ret;
+
+   ret = 0;
+   if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+     {
+        if ((msg.message & 0xffff) < 0xC000)
+          {
+             TranslateMessage(&msg);
+             DispatchMessage(&msg);
+          }
+        ret = 1;
+     }
+
+   return ret;
+#else
+   return 0;
+#endif /* _WIN32 */
+}
+
+static void
+_ecore_main_loop_iterate_internal(int once_only)
+{
    double next_time;
    int    have_event = 0;
    int    have_signal;
+   int    have_msg = 0;
 
+/*    printf ("_ecore_main_loop_iterate_internal\n"); */
    in_main_loop++;
    /* expire any timers */
      {
@@ -482,11 +539,11 @@
 #endif /* _WIN32 */
    if (_ecore_event_exist())
      {
-       int ret;
-
        have_event = 1;
        have_signal = 1;
-       ret = _ecore_main_select(0);
+       have_msg = 1;
+       _ecore_main_select(0.0);
+       _ecore_main_win32_message(0.0);
        goto process_events;
      }
    /* call idle enterers ... */
@@ -494,30 +551,30 @@
      _ecore_idle_enterer_call();
    else
      {
-        int ret;
+       have_event = have_signal = have_msg = 0;
 
-       have_event = have_signal = 0;
-       ret = _ecore_main_select(0);
+       if (_ecore_main_select(0.0) > 0) have_event = 1;
 
-       if (ret > 0) have_event = 1;
+       if (_ecore_main_win32_message(0.0) > 0) have_msg = 1;
 #ifndef _WIN32
        if (_ecore_signal_count_get() > 0) have_signal = 1;
 #endif /* _WIN32 */
 
-       if (have_signal || have_event)
+       if (have_signal || have_event || have_msg)
          goto process_events;
      }
 
-   /* if these calls caused any biuffered events to appear - deal with them */
+   /* if these calls caused any buffered events to appear - deal with them */
    while (_ecore_main_fd_handlers_buf_call());
+   while (_ecore_main_win32_message_buf_call());
    /* if ther are any - jump to processing them */
    if (_ecore_event_exist())
      {
-       int ret;
-
        have_event = 1;
        have_signal = 1;
-       ret = _ecore_main_select(0);
+       have_msg = 1;
+       _ecore_main_select(0.0);
+       _ecore_main_win32_message(0.0);
        goto process_events;
      }
    if (once_only)
@@ -527,14 +584,12 @@
        return;
      }
 
-#ifndef _WIN32
    if (_ecore_fps_debug)
      {
        t2 = ecore_time_get();
        if ((t1 > 0.0) && (t2 > 0.0))
          _ecore_fps_debug_runtime_add(t2 - t1);
      }
-#endif /* _WIN32 */
    start_loop:
    if (do_quit)
      {
@@ -544,7 +599,7 @@
    if (!_ecore_event_exist())
      {
        /* init flags */
-       have_event = have_signal = 0;
+       have_event = have_signal = have_msg = 0;
        next_time = _ecore_timer_next_get();
        /* no timers */
        if (next_time < 0)
@@ -552,10 +607,8 @@
             /* no idlers */
             if (!_ecore_idler_exist())
               {
-                 int ret;
-
-                 ret = _ecore_main_select(-1);
-                 if (ret > 0) have_event = 1;
+                 if (_ecore_main_select(-1.0) > 0) have_event = 1;
+                 if (_ecore_main_win32_message(-1.0) > 0) have_msg = 1;
 #ifndef _WIN32
                  if (_ecore_signal_count_get() > 0) have_signal = 1;
 #endif /* _WIN32 */
@@ -565,16 +618,14 @@
               {
                  for (;;)
                    {
-                      int ret;
-
                       if (!_ecore_idler_call()) goto start_loop;
                       if (_ecore_event_exist()) break;
-                      ret = _ecore_main_select(0);
-                      if (ret > 0) have_event = 1;
+                      if (_ecore_main_select(0.0) > 0) have_event = 1;
+                      if (_ecore_main_win32_message(0.0) > 0) have_msg = 1;
 #ifndef _WIN32
                       if (_ecore_signal_count_get() > 0) have_signal = 1;
 #endif /* _WIN32 */
-                      if (have_event || have_signal) break;
+                      if (have_event || have_signal || have_msg) break;
                       next_time = _ecore_timer_next_get();
                       if (next_time >= 0) goto start_loop;
                       if (do_quit) break;
@@ -587,10 +638,8 @@
             /* no idlers */
             if (!_ecore_idler_exist())
               {
-                 int ret;
-
-                 ret = _ecore_main_select(next_time);
-                 if (ret > 0) have_event = 1;
+                 if (_ecore_main_select(next_time) > 0) have_event = 1;
+                 if (_ecore_main_win32_message(next_time) > 0) have_msg = 1;
 #ifndef _WIN32
                  if (_ecore_signal_count_get() > 0) have_signal = 1;
 #endif /* _WIN32 */
@@ -601,16 +650,15 @@
                  for (;;)
                    {
                       double cur_time, t;
-                      int ret;
 
                       if (!_ecore_idler_call()) goto start_loop;
                       if (_ecore_event_exist()) break;
-                      ret = _ecore_main_select(0);
-                      if (ret > 0) have_event = 1;
+                      if (_ecore_main_select(0.0) > 0) have_event = 1;
+                      if (_ecore_main_win32_message(0.0) > 0) have_msg = 1;
 #ifndef _WIN32
                       if (_ecore_signal_count_get() > 0) have_signal = 1;
 #endif /* _WIN32 */
-                      if ((have_event) || (have_signal)) break;
+                      if (have_event || have_signal || have_msg) break;
                       cur_time = ecore_time_get();
                       t = ecore_time_get() - cur_time;
                       if (t >= next_time) break;
@@ -621,12 +669,10 @@
               }
          }
      }
-#ifndef _WIN32
    if (_ecore_fps_debug)
      {
        t1 = ecore_time_get();
      }
-#endif /* _WIN32 */
    /* we came out of our "wait state" so idle has exited */
    if (!once_only)
      _ecore_idle_exiter_call();
@@ -647,13 +693,8 @@
        _ecore_main_fd_handlers_cleanup();
      }
    while (_ecore_main_fd_handlers_buf_call());
-#ifdef _WIN32
-   while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
-     {
-        TranslateMessage(&msg);
-        DispatchMessage(&msg);
-     }
-#endif /* _WIN32 */
+   if (have_msg) _ecore_main_win32_message_buf_call();
+   while (_ecore_main_win32_message_buf_call());
    if (once_only) _ecore_idle_enterer_call();
    in_main_loop--;
 }



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to