From 2971625418c528e9310d4004bf01bfed7e901eb1 Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Mon, 20 Feb 2023 13:40:27 +0100 Subject: Add GLUT_ELAPSED_TIME simulation --- FL/glut.H | 4 ++-- src/glut_compatibility.cxx | 13 ++++++++++++- 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)+ -- cgit v1.2.3