summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan MacArthur <imacarthur@gmail.com>2008-11-13 19:42:45 +0000
committerIan MacArthur <imacarthur@gmail.com>2008-11-13 19:42:45 +0000
commitcbfba6fecae00c524c04c62bb07cc7da143e7224 (patch)
tree1a6725adba89d2b24bbe8cc1dddbcc2533ed564d /src
parentba2ed820287d16d19aee60cb0c61bd6680031f8f (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/glut_compatability.cxx16
1 files changed, 16 insertions, 0 deletions
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
//