summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2023-02-20 13:40:27 +0100
committerMatthias Melcher <github@matthiasm.com>2023-02-20 13:40:27 +0100
commit2971625418c528e9310d4004bf01bfed7e901eb1 (patch)
tree5710e610f99cc3d97a3206c2375e382601c5b80e
parent6f4cf105b13bf138d592327315441c1ae74ca4bb (diff)
Add GLUT_ELAPSED_TIME simulation
-rw-r--r--FL/glut.H4
-rw-r--r--src/glut_compatibility.cxx13
2 files changed, 14 insertions, 3 deletions
diff --git a/FL/glut.H b/FL/glut.H
index b6e915985..f83231c3a 100644
--- a/FL/glut.H
+++ b/FL/glut.H
@@ -315,12 +315,12 @@ enum {
GLUT_INIT_WINDOW_HEIGHT,
GLUT_INIT_DISPLAY_MODE,
GLUT_WINDOW_BUFFER_SIZE,
- GLUT_VERSION
+ GLUT_VERSION,
//GLUT_WINDOW_NUM_CHILDREN,
//GLUT_WINDOW_CURSOR,
//GLUT_SCREEN_WIDTH_MM,
//GLUT_SCREEN_HEIGHT_MM,
-//GLUT_ELAPSED_TIME,
+ GLUT_ELAPSED_TIME,
};
# define GLUT_WINDOW_STENCIL_SIZE GL_STENCIL_BITS
diff --git a/src/glut_compatibility.cxx b/src/glut_compatibility.cxx
index c7484ad5f..adcac1b7a 100644
--- a/src/glut_compatibility.cxx
+++ b/src/glut_compatibility.cxx
@@ -190,8 +190,14 @@ Fl_Glut_Window::Fl_Glut_Window(int X,int Y,int W,int H, const char *t) :
static int initargc;
static char **initargv;
+static char glut_starttime_set = 0;
+static Fl_Timestamp glut_starttime;
void glutInit(int *argc, char **argv) {
+ if (!glut_starttime_set) {
+ glut_starttime = Fl::now();
+ glut_starttime_set = 1;
+ }
initargc = *argc;
initargv = new char*[*argc+1];
int i,j;
@@ -405,7 +411,12 @@ int glutGet(GLenum type) {
case GLUT_INIT_WINDOW_WIDTH: return initw;
case GLUT_INIT_WINDOW_HEIGHT: return inith;
case GLUT_INIT_DISPLAY_MODE: return glut_mode;
-//case GLUT_ELAPSED_TIME:
+ case GLUT_ELAPSED_TIME:
+ if (!glut_starttime_set) {
+ glut_starttime = Fl::now();
+ glut_starttime_set = 1;
+ }
+ return (int)(Fl::seconds_since(glut_starttime)*1000.0); // milliseconds
case GLUT_WINDOW_BUFFER_SIZE:
if (glutGet(GLUT_WINDOW_RGBA))
return glutGet(GLUT_WINDOW_RED_SIZE)+