projects
/
freeglut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixing a 'gamemode at_exit' bug courtesy of Diederick Niehorster per e-mail dated...
[freeglut]
/
src
/
freeglut_internal.h
diff --git
a/src/freeglut_internal.h
b/src/freeglut_internal.h
index
4172112
..
510764a
100644
(file)
--- a/
src/freeglut_internal.h
+++ b/
src/freeglut_internal.h
@@
-47,7
+47,7
@@
|| ( defined(__CYGWIN__) && defined(X_DISPLAY_MISSING) )
# define TARGET_HOST_MS_WINDOWS 1
|| ( defined(__CYGWIN__) && defined(X_DISPLAY_MISSING) )
# define TARGET_HOST_MS_WINDOWS 1
-#elif defined(__posix__) || defined(__unix__) || defined(__linux__)
+#elif defined(__posix__) || defined(__unix__) || defined(__linux__) || defined(__sun)
# define TARGET_HOST_POSIX_X11 1
#elif defined(__APPLE__)
# define TARGET_HOST_POSIX_X11 1
#elif defined(__APPLE__)
@@
-110,9
+110,12
@@
# include <X11/Xatom.h>
# include <X11/keysym.h>
# include <X11/extensions/XInput.h>
# include <X11/Xatom.h>
# include <X11/keysym.h>
# include <X11/extensions/XInput.h>
-# ifdef HAVE_XXF86VM
+# ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H
# include <X11/extensions/xf86vmode.h>
# endif
# include <X11/extensions/xf86vmode.h>
# endif
+# ifdef HAVE_X11_EXTENSIONS_XRANDR_H
+# include <X11/extensions/Xrandr.h>
+# endif
/* If GLX is too old, we will fail during runtime when multisampling
is requested, but at least freeglut compiles. */
# ifndef GLX_SAMPLE_BUFFERS
/* If GLX is too old, we will fail during runtime when multisampling
is requested, but at least freeglut compiles. */
# ifndef GLX_SAMPLE_BUFFERS
@@
-129,6
+132,7
@@
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
+#include <stdarg.h>
/* These are included based on autoconf directives. */
#ifdef HAVE_SYS_TYPES_H
/* These are included based on autoconf directives. */
#ifdef HAVE_SYS_TYPES_H
@@
-160,6
+164,10
@@
# endif
#endif
# endif
#endif
+#if TARGET_HOST_MS_WINDOWS
+# define HAVE_VFPRINTF 1
+#endif
+
/* MinGW may lack a prototype for ChangeDisplaySettingsEx() (depending on the version?) */
#if TARGET_HOST_MS_WINDOWS && !defined(ChangeDisplaySettingsEx)
LONG WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID);
/* MinGW may lack a prototype for ChangeDisplaySettingsEx() (depending on the version?) */
#if TARGET_HOST_MS_WINDOWS && !defined(ChangeDisplaySettingsEx)
LONG WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID);
@@
-230,6
+238,11
@@
typedef void (* FGCBTabletMotion )( int, int );
typedef void (* FGCBTabletButton )( int, int, int, int );
typedef void (* FGCBDestroy )( void );
typedef void (* FGCBTabletButton )( int, int, int, int );
typedef void (* FGCBDestroy )( void );
+typedef void (* FGCBMultiEntry )( int, int );
+typedef void (* FGCBMultiButton )( int, int, int, int, int );
+typedef void (* FGCBMultiMotion )( int, int, int );
+typedef void (* FGCBMultiPassive )( int, int, int );
+
/* The global callbacks type definitions */
typedef void (* FGCBIdle )( void );
typedef void (* FGCBTimer )( int );
/* The global callbacks type definitions */
typedef void (* FGCBIdle )( void );
typedef void (* FGCBTimer )( int );
@@
-239,6
+252,10
@@
typedef void (* FGCBMenuStatus )( int, int, int );
/* The callback used when creating/using menus */
typedef void (* FGCBMenu )( int );
/* The callback used when creating/using menus */
typedef void (* FGCBMenu )( int );
+/* The FreeGLUT error/warning handler type definition */
+typedef void (* FGError ) ( const char *fmt, va_list ap);
+typedef void (* FGWarning ) ( const char *fmt, va_list ap);
+
/* A list structure */
typedef struct tagSFG_List SFG_List;
/* A list structure */
typedef struct tagSFG_List SFG_List;
@@
-322,6
+339,8
@@
struct tagSFG_State
int NumActiveJoysticks; /* Number of active joysticks -- if zero, don't poll joysticks */
GLboolean InputDevsInitialised; /* Only initialize if application calls for them */
int NumActiveJoysticks; /* Number of active joysticks -- if zero, don't poll joysticks */
GLboolean InputDevsInitialised; /* Only initialize if application calls for them */
+ int MouseWheelTicks; /* Number of ticks the mouse wheel has turned */
+
int AuxiliaryBufferNumber; /* Number of auxiliary buffers */
int SampleNumber; /* Number of samples per pixel */
int AuxiliaryBufferNumber; /* Number of auxiliary buffers */
int SampleNumber; /* Number of samples per pixel */
@@
-329,6
+348,8
@@
struct tagSFG_State
int MinorVersion; /* Minor OpenGL context version */
int ContextFlags; /* OpenGL context flags */
int ContextProfile; /* OpenGL context profile */
int MinorVersion; /* Minor OpenGL context version */
int ContextFlags; /* OpenGL context flags */
int ContextProfile; /* OpenGL context profile */
+ FGError ErrorFunc; /* User defined error handler */
+ FGWarning WarningFunc; /* User defined warning handler */
};
/* The structure used by display initialization in freeglut_init.c */
};
/* The structure used by display initialization in freeglut_init.c */
@@
-344,7
+365,13
@@
struct tagSFG_Display
Atom State; /* The state atom */
Atom StateFullScreen; /* The full screen atom */
Atom State; /* The state atom */
Atom StateFullScreen; /* The full screen atom */
-#ifdef X_XF86VidModeGetModeLine
+#ifdef HAVE_X11_EXTENSIONS_XRANDR_H
+ int prev_xsz, prev_ysz;
+ int prev_refresh;
+ int prev_size_valid;
+#endif /* HAVE_X11_EXTENSIONS_XRANDR_H */
+
+#ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H
/*
* XF86VidMode may be compilable even if it fails at runtime. Therefore,
* the validity of the VidMode has to be tracked
/*
* XF86VidMode may be compilable even if it fails at runtime. Therefore,
* the validity of the VidMode has to be tracked
@@
-357,7
+384,7
@@
struct tagSFG_Display
int DisplayPointerX; /* saved X location of the pointer */
int DisplayPointerY; /* saved Y location of the pointer */
int DisplayPointerX; /* saved X location of the pointer */
int DisplayPointerY; /* saved Y location of the pointer */
-#endif /* X_XF86VidModeGetModeLine */
+#endif /* HAVE_X11_EXTENSIONS_XF86VMODE_H */
#elif TARGET_HOST_MS_WINDOWS
HINSTANCE Instance; /* The application's instance */
#elif TARGET_HOST_MS_WINDOWS
HINSTANCE Instance; /* The application's instance */
@@
-568,6
+595,12
@@
enum
CB_Joystick,
CB_Destroy,
CB_Joystick,
CB_Destroy,
+ /* MPX-related */
+ CB_MultiEntry,
+ CB_MultiButton,
+ CB_MultiMotion,
+ CB_MultiPassive,
+
/* Presently ignored */
CB_Select,
CB_OverlayDisplay,
/* Presently ignored */
CB_Select,
CB_OverlayDisplay,
@@
-790,11
+823,12
@@
extern SFG_State fgState;
* A call to those macros assures us that there is a current
* window set, respectively:
*/
* A call to those macros assures us that there is a current
* window set, respectively:
*/
-#define FREEGLUT_EXIT_IF_NO_WINDOW( string ) \
- if ( ! fgStructure.CurrentWindow ) \
- { \
- fgError ( " ERROR: Function <%s> called" \
- " with no current window defined.", (string) ) ; \
+#define FREEGLUT_EXIT_IF_NO_WINDOW( string ) \
+ if ( ! fgStructure.CurrentWindow && \
+ ( fgState.ActionOnWindowClose != GLUT_ACTION_CONTINUE_EXECUTION ) ) \
+ { \
+ fgError ( " ERROR: Function <%s> called" \
+ " with no current window defined.", (string) ) ; \
}
/*
}
/*
@@
-814,7
+848,7
@@
void fgDestroyStructure( void );
/* A helper function to check if a display mode is possible to use */
#if TARGET_HOST_POSIX_X11
/* A helper function to check if a display mode is possible to use */
#if TARGET_HOST_POSIX_X11
-GLXFBConfig* fgChooseFBConfig( void );
+GLXFBConfig* fgChooseFBConfig( int* numcfgs );
#endif
/* The window procedure for Win32 events handling */
#endif
/* The window procedure for Win32 events handling */
@@
-950,6
+984,13
@@
void fgWarning( const char *fmt, ... );
*/
#if TARGET_HOST_POSIX_X11
int fgHintPresent(Window window, Atom property, Atom hint);
*/
#if TARGET_HOST_POSIX_X11
int fgHintPresent(Window window, Atom property, Atom hint);
+
+/* Handler for X extension Events */
+#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
+ void fgHandleExtensionEvents( XEvent * ev );
+ void fgRegisterDevices( Display* dpy, Window* win );
+#endif
+
#endif
SFG_Proc fghGetProcAddress( const char *procName );
#endif
SFG_Proc fghGetProcAddress( const char *procName );