DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

Link: http://www.fltk.org/str.php?L1950
Version: 1.1.9


If a function to be run during idle time is added from the draw function of
a class inheriting Fl_Widget (for example: if one wishes to update the
exposed area incrementally) this function is not called (the first time)
until an event has been received (e.g the user moves the mouse pointer
over one of the windows belonging to the application).
Once one event has been received the idle function is called as it should.

As far as I understand this behavior occurs because the draw function is
called from Fl::flush in turn called from Fl::wait line Fl.cxx:371
directly before fl_wait (the next line)  (typically with
time_to_wait==FOREVER if no other idle functions are active), the check
that normally set the timeout to zero is earlier in the wait function.

As far as I can see adding "if (idle) time_to_wait = 0.0;"
between flush and wait (Fl.cxx:371-372 (fltk 1.1.9)) resolves this without
side effects.

Reproducing: (only tested using fvwm 2.4.19/Xorg 6.8.2) 

Run test/mandelbrot  (from fltk 1.1.9)

Partially cover the mandelbrot application with some other window, then
move that window away from mandelbrot, thus invalidating a rectangle of
mandelbrot (without moving the mouse pointer over the mandelbrot window or
in any other way cause any event to be sent after the EXPOSE event (test
window manager by doing the same with xev?). The exposed area remains
un-updated until the mouse pointer is moved to the mandelbrot window.

This bug also occurs when starting mandelbrot if the window doesn't come
into focus, and when switching desks if the mandelbrot is not in focus
(again using fvwm 2.4.19) (the whole fractal area remains gray)

While mandelbrot.cxx uses the obsolete set_idle the exact same behavior
occurs with add_idle

(Alternatively, if this is a documentation error and add_idle shouldn't be
used from draw, the mandelbrot application should probably be removed from
the distribution too)


Link: http://www.fltk.org/str.php?L1950
Version: 1.1.9

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

Reply via email to