From cbfba6fecae00c524c04c62bb07cc7da143e7224 Mon Sep 17 00:00:00 2001 From: Ian MacArthur Date: Thu, 13 Nov 2008 19:42:45 +0000 Subject: STR 1948: fix glutIdleFunc so that it does not use the deprecated Fl::set_idle method, and does not interact harmfully with other Fl::add/remove_idle() functions. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6525 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/glut_compatability.cxx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/glut_compatability.cxx b/src/glut_compatability.cxx index e945f3ff8..97a2cd839 100644 --- a/src/glut_compatability.cxx +++ b/src/glut_compatability.cxx @@ -49,6 +49,8 @@ # define MAXWINDOWS 32 static Fl_Glut_Window *windows[MAXWINDOWS+1]; +static void (*glut_idle_func)() = 0; // global glut idle function + Fl_Glut_Window *glut_window; int glut_menu; void (*glut_menustate_function)(int); @@ -499,6 +501,20 @@ int glutExtensionSupported( const char* extension ) } } +// Add a mechanism to handle adding/removing the glut idle function +// without depending on the (deprecated) set_idle method. +void glutIdleFunc(void (*f)()) +{ + // no change + if(glut_idle_func == f) return; + // remove current idle + if(glut_idle_func) Fl::remove_idle((void (*)(void *))glut_idle_func); + // install new idle func - if one was passed + if(f) Fl::add_idle((void (*)(void *))f); + // record new idle func - even if it is NULL + glut_idle_func = f; +} // glutIdleFunc + #endif // HAVE_GL // -- cgit v1.2.3