Author: matt
Date: 2008-10-19 13:15:48 -0700 (Sun, 19 Oct 2008)
New Revision: 6474
Log:
Fixed adding an idle handler during a draw() call (STR #1950)

Modified:
   branches/branch-1.1/CHANGES
   branches/branch-1.1/src/Fl.cxx
   branches/branch-1.1/test/mandelbrot.cxx

Modified: branches/branch-1.1/CHANGES
===================================================================
--- branches/branch-1.1/CHANGES 2008-10-19 20:15:32 UTC (rev 6473)
+++ branches/branch-1.1/CHANGES 2008-10-19 20:15:48 UTC (rev 6474)
@@ -9,6 +9,8 @@
          function (STR #1945)
        - Fl_Group and Fl_Scroll now resize themselves before
          resizing their children (STR #2032)
+       - Fixed adding an idle handler during
+         a draw() call (STR #1950)
 
 CHANGES IN FLTK 1.1.9
 

Modified: branches/branch-1.1/src/Fl.cxx
===================================================================
--- branches/branch-1.1/src/Fl.cxx      2008-10-19 20:15:32 UTC (rev 6473)
+++ branches/branch-1.1/src/Fl.cxx      2008-10-19 20:15:48 UTC (rev 6474)
@@ -323,6 +323,8 @@
     if (idle) time_to_wait = 0.0;
   }
   flush();
+  if (idle && !in_idle) // 'idle' may have been set within flush()
+    time_to_wait = 0.0;
   return fl_wait(time_to_wait);
 
 #else
@@ -369,6 +371,8 @@
   } else {
     // do flush first so that user sees the display:
     flush();
+    if (idle && !in_idle) // 'idle' may have been set within flush()
+      time_to_wait = 0.0;
     return fl_wait(time_to_wait);
   }
 #endif

Modified: branches/branch-1.1/test/mandelbrot.cxx
===================================================================
--- branches/branch-1.1/test/mandelbrot.cxx     2008-10-19 20:15:32 UTC (rev 
6473)
+++ branches/branch-1.1/test/mandelbrot.cxx     2008-10-19 20:15:48 UTC (rev 
6474)
@@ -33,12 +33,12 @@
 Drawing_Window mbrot;
 Drawing_Window jbrot;
 
-void idle() {
-  if (!mbrot.d->idle() && !(jbrot.d && jbrot.d->idle())) Fl::set_idle(0);
+void idle(void*) {
+  if (!mbrot.d->idle() && !(jbrot.d && jbrot.d->idle())) Fl::remove_idle(idle);
 }
 
 void set_idle() {
-  Fl::set_idle(idle);
+  Fl::add_idle(idle);
 }
 
 static void window_callback(Fl_Widget*, void*) {exit(0);}

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to