diff options
| -rw-r--r-- | CHANGES | 2 | ||||
| -rw-r--r-- | src/Fl.cxx | 4 | ||||
| -rw-r--r-- | test/mandelbrot.cxx | 6 |
3 files changed, 9 insertions, 3 deletions
@@ -1,5 +1,7 @@ CHANGES IN FLTK 1.3.0 + - Fixed adding an idle handler during + a draw() call (STR #1950) - Fl_Group::clip_children() is now public (STR #2017) - Added clarification to Fl_GL_Window mode function (STR #1945) diff --git a/src/Fl.cxx b/src/Fl.cxx index 57d8cf778..0b62f4c4e 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -381,6 +381,8 @@ double Fl::wait(double time_to_wait) { 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 @@ -427,6 +429,8 @@ double Fl::wait(double time_to_wait) { } 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 diff --git a/test/mandelbrot.cxx b/test/mandelbrot.cxx index 1bc6293a0..358d91b6a 100644 --- a/test/mandelbrot.cxx +++ b/test/mandelbrot.cxx @@ -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);} |
