FLTK flickering animation

  animation, c++, flicker, fltk

I’m trying to make a simple animation using FLTK(a circle with increasing and decreasing radius). I’ve managed to write a simple program that seems to work, but the animation flickers. The circle disappears for a couple of milliseconds and then gets back. I’ve changed Fl_Window class to Fl_Double_Window, but that didn’t fix this problem.

class Painting : public Fl_Widget {

public:
    Painting(int x, int y, int w, int h) : Fl_Widget(x, y, w, h, 0) {}
private:

    void draw()
    {
        static double inc = 0;
        inc += 0.2;

        double radius = 50 + 10*sin(inc);
        fl_begin_polygon();
        fl_arc(100, 100, radius, 0, 360);
        fl_end_polygon();
    }
};

void redraw_cb(void *data)
{
    Fl_Widget *w = (Fl_Widget*)data;
    w->redraw();
    Fl::repeat_timeout(0.01, redraw_cb, data);
}

int main(int argc, char **argv)
{
    Fl_Double_Window *win = new Fl_Double_Window(1000, 500, "hello");
    Painting *painting = new Painting(0, 0, 1000, 500);
    Fl::add_timeout(1, redraw_cb, painting);
    Fl::visual(FL_DOUBLE|FL_INDEX);
    win->resizable(painting);
    win->end();
    win->show();
    return Fl::run();
}

Source: Windows Questions C++

LEAVE A COMMENT