mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 09:50:08 +01:00
changed coding style. added possibility to use default timer instead of PC/HW timer.
This commit is contained in:
parent
aa7a27b38e
commit
0c68589673
1 changed files with 147 additions and 131 deletions
|
|
@ -19,9 +19,9 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* DOS/DJGPP glut driver v1.4 for Mesa
|
||||
* DOS/DJGPP glut driver v1.5 for Mesa
|
||||
*
|
||||
* Copyright (C) 2002 - Borca Daniel
|
||||
* Copyright (C) 2002 - Daniel Borca
|
||||
* Email : dborca@yahoo.com
|
||||
* Web : http://www.geocities.com/dborca
|
||||
*/
|
||||
|
|
@ -32,119 +32,135 @@
|
|||
#include "glutint.h"
|
||||
|
||||
|
||||
|
||||
#define FREQUENCY 100
|
||||
|
||||
#define FREQUENCY 100 /* set this to zero to use the default timer */
|
||||
|
||||
|
||||
static int timer_installed;
|
||||
#if FREQUENCY
|
||||
static volatile int ticks;
|
||||
|
||||
|
||||
|
||||
static void ticks_timer (void *p)
|
||||
static void
|
||||
ticks_timer (void *p)
|
||||
{
|
||||
(void)p;
|
||||
ticks++;
|
||||
(void)p;
|
||||
ticks++;
|
||||
} ENDOFUNC(ticks_timer)
|
||||
#else
|
||||
#include <time.h>
|
||||
|
||||
static struct timeval then;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
int APIENTRY glutGet (GLenum type)
|
||||
int APIENTRY
|
||||
glutGet (GLenum type)
|
||||
{
|
||||
switch (type) {
|
||||
case GLUT_WINDOW_X:
|
||||
return g_curwin->xpos;
|
||||
case GLUT_WINDOW_Y:
|
||||
return g_curwin->ypos;
|
||||
case GLUT_WINDOW_WIDTH:
|
||||
return g_curwin->width;
|
||||
case GLUT_WINDOW_HEIGHT:
|
||||
return g_curwin->height;
|
||||
case GLUT_WINDOW_STENCIL_SIZE:
|
||||
return g_stencil;
|
||||
case GLUT_WINDOW_DEPTH_SIZE:
|
||||
return g_depth;
|
||||
case GLUT_WINDOW_RGBA:
|
||||
return !(g_display_mode & GLUT_INDEX);
|
||||
case GLUT_WINDOW_COLORMAP_SIZE:
|
||||
return (g_display_mode & GLUT_INDEX) ? (256 - RESERVED_COLORS) : 0;
|
||||
case GLUT_SCREEN_WIDTH:
|
||||
return g_screen_w;
|
||||
case GLUT_SCREEN_HEIGHT:
|
||||
return g_screen_h;
|
||||
case GLUT_INIT_WINDOW_X:
|
||||
return g_init_x;
|
||||
case GLUT_INIT_WINDOW_Y:
|
||||
return g_init_y;
|
||||
case GLUT_INIT_WINDOW_WIDTH:
|
||||
return g_init_w;
|
||||
case GLUT_INIT_WINDOW_HEIGHT:
|
||||
return g_init_h;
|
||||
case GLUT_INIT_DISPLAY_MODE:
|
||||
return g_display_mode;
|
||||
case GLUT_ELAPSED_TIME:
|
||||
if (!timer_installed) {
|
||||
timer_installed = GL_TRUE;
|
||||
LOCKDATA(ticks);
|
||||
LOCKFUNC(ticks_timer);
|
||||
pc_install_int(ticks_timer, NULL, FREQUENCY);
|
||||
}
|
||||
return ticks*1000/FREQUENCY;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
switch (type) {
|
||||
case GLUT_WINDOW_X:
|
||||
return g_curwin->xpos;
|
||||
case GLUT_WINDOW_Y:
|
||||
return g_curwin->ypos;
|
||||
case GLUT_WINDOW_WIDTH:
|
||||
return g_curwin->width;
|
||||
case GLUT_WINDOW_HEIGHT:
|
||||
return g_curwin->height;
|
||||
case GLUT_WINDOW_STENCIL_SIZE:
|
||||
return g_stencil;
|
||||
case GLUT_WINDOW_DEPTH_SIZE:
|
||||
return g_depth;
|
||||
case GLUT_WINDOW_RGBA:
|
||||
return !(g_display_mode & GLUT_INDEX);
|
||||
case GLUT_WINDOW_COLORMAP_SIZE:
|
||||
return (g_display_mode & GLUT_INDEX) ? (256 - RESERVED_COLORS) : 0;
|
||||
case GLUT_SCREEN_WIDTH:
|
||||
return g_screen_w;
|
||||
case GLUT_SCREEN_HEIGHT:
|
||||
return g_screen_h;
|
||||
case GLUT_INIT_WINDOW_X:
|
||||
return g_init_x;
|
||||
case GLUT_INIT_WINDOW_Y:
|
||||
return g_init_y;
|
||||
case GLUT_INIT_WINDOW_WIDTH:
|
||||
return g_init_w;
|
||||
case GLUT_INIT_WINDOW_HEIGHT:
|
||||
return g_init_h;
|
||||
case GLUT_INIT_DISPLAY_MODE:
|
||||
return g_display_mode;
|
||||
case GLUT_ELAPSED_TIME:
|
||||
#if FREQUENCY
|
||||
if (!timer_installed) {
|
||||
timer_installed = GL_TRUE;
|
||||
LOCKDATA(ticks);
|
||||
LOCKFUNC(ticks_timer);
|
||||
pc_install_int(ticks_timer, NULL, FREQUENCY);
|
||||
}
|
||||
return ticks * 1000 / FREQUENCY;
|
||||
#else
|
||||
if (!timer_installed) {
|
||||
timer_installed = GL_TRUE;
|
||||
gettimeofday(&then, NULL);
|
||||
return 0;
|
||||
} else {
|
||||
struct timeval now;
|
||||
gettimeofday(&now, NULL);
|
||||
return (now.tv_usec - then.tv_usec) / 1000 +
|
||||
(now.tv_sec - then.tv_sec) * 1000;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int APIENTRY glutDeviceGet (GLenum type)
|
||||
int APIENTRY
|
||||
glutDeviceGet (GLenum type)
|
||||
{
|
||||
switch (type) {
|
||||
case GLUT_HAS_KEYBOARD:
|
||||
return GL_TRUE;
|
||||
case GLUT_HAS_MOUSE:
|
||||
return (g_mouse != 0);
|
||||
case GLUT_NUM_MOUSE_BUTTONS:
|
||||
return g_mouse;
|
||||
case GLUT_HAS_SPACEBALL:
|
||||
case GLUT_HAS_DIAL_AND_BUTTON_BOX:
|
||||
case GLUT_HAS_TABLET:
|
||||
return GL_FALSE;
|
||||
case GLUT_NUM_SPACEBALL_BUTTONS:
|
||||
case GLUT_NUM_BUTTON_BOX_BUTTONS:
|
||||
case GLUT_NUM_DIALS:
|
||||
case GLUT_NUM_TABLET_BUTTONS:
|
||||
return 0;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
switch (type) {
|
||||
case GLUT_HAS_KEYBOARD:
|
||||
return GL_TRUE;
|
||||
case GLUT_HAS_MOUSE:
|
||||
return (g_mouse != 0);
|
||||
case GLUT_NUM_MOUSE_BUTTONS:
|
||||
return g_mouse;
|
||||
case GLUT_HAS_SPACEBALL:
|
||||
case GLUT_HAS_DIAL_AND_BUTTON_BOX:
|
||||
case GLUT_HAS_TABLET:
|
||||
return GL_FALSE;
|
||||
case GLUT_NUM_SPACEBALL_BUTTONS:
|
||||
case GLUT_NUM_BUTTON_BOX_BUTTONS:
|
||||
case GLUT_NUM_DIALS:
|
||||
case GLUT_NUM_TABLET_BUTTONS:
|
||||
return 0;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int APIENTRY glutGetModifiers (void)
|
||||
int APIENTRY
|
||||
glutGetModifiers (void)
|
||||
{
|
||||
int mod = 0;
|
||||
int shifts = pc_keyshifts();
|
||||
int mod = 0;
|
||||
int shifts = pc_keyshifts();
|
||||
|
||||
if (shifts & (KB_SHIFT_FLAG | KB_CAPSLOCK_FLAG)) {
|
||||
mod |= GLUT_ACTIVE_SHIFT;
|
||||
}
|
||||
if (shifts & (KB_SHIFT_FLAG | KB_CAPSLOCK_FLAG)) {
|
||||
mod |= GLUT_ACTIVE_SHIFT;
|
||||
}
|
||||
|
||||
if (shifts & KB_ALT_FLAG) {
|
||||
mod |= GLUT_ACTIVE_ALT;
|
||||
}
|
||||
if (shifts & KB_ALT_FLAG) {
|
||||
mod |= GLUT_ACTIVE_ALT;
|
||||
}
|
||||
|
||||
if (shifts & KB_CTRL_FLAG) {
|
||||
mod |= GLUT_ACTIVE_CTRL;
|
||||
}
|
||||
if (shifts & KB_CTRL_FLAG) {
|
||||
mod |= GLUT_ACTIVE_CTRL;
|
||||
}
|
||||
|
||||
return mod;
|
||||
return mod;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* GAME MODE
|
||||
* Hack alert: incomplete... what is GameMode, anyway?
|
||||
*/
|
||||
|
|
@ -157,63 +173,63 @@ static GLuint game_bpp;
|
|||
static GLuint game_refresh;
|
||||
|
||||
|
||||
|
||||
void APIENTRY glutGameModeString (const char *string)
|
||||
void APIENTRY
|
||||
glutGameModeString (const char *string)
|
||||
{
|
||||
if (sscanf(string, "%ux%u:%u@%u", &game_width, &game_height, &game_bpp, &game_refresh) == 4) {
|
||||
game_possible = GL_TRUE;
|
||||
}
|
||||
if (sscanf(string, "%ux%u:%u@%u", &game_width, &game_height, &game_bpp, &game_refresh) == 4) {
|
||||
game_possible = GL_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int APIENTRY glutGameModeGet (GLenum mode)
|
||||
int APIENTRY
|
||||
glutGameModeGet (GLenum mode)
|
||||
{
|
||||
switch (mode) {
|
||||
case GLUT_GAME_MODE_ACTIVE:
|
||||
return game_active;
|
||||
case GLUT_GAME_MODE_POSSIBLE:
|
||||
return game_possible && !g_curwin;
|
||||
case GLUT_GAME_MODE_WIDTH:
|
||||
return game_active ? (int)game_width : -1;
|
||||
case GLUT_GAME_MODE_HEIGHT:
|
||||
return game_active ? (int)game_height : -1;
|
||||
case GLUT_GAME_MODE_PIXEL_DEPTH:
|
||||
return game_active ? (int)game_bpp : -1;
|
||||
case GLUT_GAME_MODE_REFRESH_RATE:
|
||||
return game_active ? (int)game_refresh : -1;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
switch (mode) {
|
||||
case GLUT_GAME_MODE_ACTIVE:
|
||||
return game_active;
|
||||
case GLUT_GAME_MODE_POSSIBLE:
|
||||
return game_possible && !g_curwin;
|
||||
case GLUT_GAME_MODE_WIDTH:
|
||||
return game_active ? (int)game_width : -1;
|
||||
case GLUT_GAME_MODE_HEIGHT:
|
||||
return game_active ? (int)game_height : -1;
|
||||
case GLUT_GAME_MODE_PIXEL_DEPTH:
|
||||
return game_active ? (int)game_bpp : -1;
|
||||
case GLUT_GAME_MODE_REFRESH_RATE:
|
||||
return game_active ? (int)game_refresh : -1;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int APIENTRY glutEnterGameMode (void)
|
||||
int APIENTRY
|
||||
glutEnterGameMode (void)
|
||||
{
|
||||
if (glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)) {
|
||||
g_bpp = game_bpp;
|
||||
g_refresh = game_refresh;
|
||||
if (glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)) {
|
||||
g_bpp = game_bpp;
|
||||
g_refresh = game_refresh;
|
||||
|
||||
glutInitWindowSize(game_width, game_height);
|
||||
glutInitWindowSize(game_width, game_height);
|
||||
|
||||
if ((g_game = glutCreateWindow("<game>")) > 0) {
|
||||
game_active = GL_TRUE;
|
||||
}
|
||||
if ((g_game = glutCreateWindow("<game>")) > 0) {
|
||||
game_active = GL_TRUE;
|
||||
}
|
||||
|
||||
return g_game;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
return g_game;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void GLUTAPIENTRY glutLeaveGameMode (void)
|
||||
void GLUTAPIENTRY
|
||||
glutLeaveGameMode (void)
|
||||
{
|
||||
if (glutGameModeGet(GLUT_GAME_MODE_ACTIVE)) {
|
||||
game_active = GL_FALSE;
|
||||
if (glutGameModeGet(GLUT_GAME_MODE_ACTIVE)) {
|
||||
game_active = GL_FALSE;
|
||||
|
||||
glutDestroyWindow(g_game);
|
||||
}
|
||||
glutDestroyWindow(g_game);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue