*/\r
\r
/*\r
- * DOS/DJGPP glut driver v0.2 for Mesa 4.0\r
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0\r
*\r
* Copyright (C) 2002 - Borca Daniel\r
* Email : dborca@yahoo.com\r
*/\r
\r
\r
-#include <signal.h>\r
#include "GL/glut.h"\r
#include "internal.h"\r
\r
\r
-static void *old_sig_int = NULL;\r
-\r
-\r
-static void signal_handler (int num)\r
-{\r
- signal(SIGINT, old_sig_int);\r
-\r
- raise(num);\r
-}\r
-\r
-\r
void APIENTRY glutInit (int *argcp, char **argv)\r
{\r
glutGet(GLUT_ELAPSED_TIME);\r
- /* Hack alert:\r
- only SIGINT (but not Ctrl-Break)\r
- calls the destructors and will safely clean up\r
- */\r
- old_sig_int = signal(SIGINT, signal_handler);\r
}\r
\r
\r
}\r
}\r
\r
- if (g_mouse && motion_func && ((pc_mouse_x != old_mouse_x) || (pc_mouse_y != old_mouse_y))) {\r
- idle = GL_FALSE;\r
- old_mouse_x = pc_mouse_x;\r
- old_mouse_y = pc_mouse_y;\r
-\r
- motion_func(old_mouse_x, old_mouse_y);\r
- }\r
-\r
- if (g_mouse && mouse_func && (pc_mouse_b != old_mouse_b)) {\r
- int new_mouse_b = pc_mouse_b;\r
-\r
- if ((old_mouse_b & 1) && !(new_mouse_b & 1))\r
- mouse_func(GLUT_LEFT_BUTTON, GLUT_UP, pc_mouse_x, pc_mouse_y);\r
- else if (!(old_mouse_b & 1) && (new_mouse_b & 1))\r
- mouse_func(GLUT_LEFT_BUTTON, GLUT_DOWN, pc_mouse_x, pc_mouse_y);\r
-\r
- if ((old_mouse_b & 2) && !(new_mouse_b & 2))\r
- mouse_func(GLUT_RIGHT_BUTTON, GLUT_UP, pc_mouse_x, pc_mouse_y);\r
- else if (!(old_mouse_b & 2) && (new_mouse_b & 2))\r
- mouse_func(GLUT_RIGHT_BUTTON, GLUT_DOWN, pc_mouse_x, pc_mouse_y);\r
-\r
- if ((old_mouse_b & 4) && !(new_mouse_b & 4))\r
- mouse_func(GLUT_MIDDLE_BUTTON, GLUT_UP, pc_mouse_x, pc_mouse_y);\r
- else if (!(old_mouse_b & 3) && (new_mouse_b & 4))\r
- mouse_func(GLUT_MIDDLE_BUTTON, GLUT_DOWN, pc_mouse_x, pc_mouse_y);\r
-\r
- idle = GL_FALSE;\r
- old_mouse_b = new_mouse_b;\r
+ if (g_mouse) {\r
+ int mouse_x;\r
+ int mouse_y;\r
+ int mouse_b;\r
+ \r
+ mouse_b = pc_query_mouse(&mouse_x, &mouse_y);\r
+ \r
+ if (motion_func && ((mouse_x != old_mouse_x) || (mouse_y != old_mouse_y))) {\r
+ idle = GL_FALSE;\r
+ old_mouse_x = mouse_x;\r
+ old_mouse_y = mouse_y;\r
+ \r
+ motion_func(old_mouse_x, old_mouse_y);\r
+ }\r
+ \r
+ if (mouse_func && (mouse_b != old_mouse_b)) {\r
+ int new_mouse_b = mouse_b;\r
+ \r
+ if ((old_mouse_b & 1) && !(new_mouse_b & 1))\r
+ mouse_func(GLUT_LEFT_BUTTON, GLUT_UP, mouse_x, mouse_y);\r
+ else if (!(old_mouse_b & 1) && (new_mouse_b & 1))\r
+ mouse_func(GLUT_LEFT_BUTTON, GLUT_DOWN, mouse_x, mouse_y);\r
+ \r
+ if ((old_mouse_b & 2) && !(new_mouse_b & 2))\r
+ mouse_func(GLUT_RIGHT_BUTTON, GLUT_UP, mouse_x, mouse_y);\r
+ else if (!(old_mouse_b & 2) && (new_mouse_b & 2))\r
+ mouse_func(GLUT_RIGHT_BUTTON, GLUT_DOWN, mouse_x, mouse_y);\r
+ \r
+ if ((old_mouse_b & 4) && !(new_mouse_b & 4))\r
+ mouse_func(GLUT_MIDDLE_BUTTON, GLUT_UP, mouse_x, mouse_y);\r
+ else if (!(old_mouse_b & 3) && (new_mouse_b & 4))\r
+ mouse_func(GLUT_MIDDLE_BUTTON, GLUT_DOWN, mouse_x, mouse_y);\r
+ \r
+ idle = GL_FALSE;\r
+ old_mouse_b = new_mouse_b;\r
+ }\r
}\r
\r
if (idle && idle_func)\r