X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_internal.h;h=cfd0f5a3888ab2af8ecf41a4bfafae85422b9a58;hb=dfa14f157ccbb96b8e82e6187ad0a6357732e964;hp=ed01830883777ae7820652a839232249a6c68cf9;hpb=72af7eeaf8e2c2ecf8949137cfea2030069b1dd8;p=freeglut diff --git a/src/freeglut_internal.h b/src/freeglut_internal.h index ed01830..cfd0f5a 100644 --- a/src/freeglut_internal.h +++ b/src/freeglut_internal.h @@ -110,9 +110,12 @@ # include # include # include -# ifdef HAVE_XXF86VM +# ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H # include # endif +# ifdef HAVE_X11_EXTENSIONS_XRANDR_H +# include +# endif /* If GLX is too old, we will fail during runtime when multisampling is requested, but at least freeglut compiles. */ # ifndef GLX_SAMPLE_BUFFERS @@ -235,6 +238,11 @@ typedef void (* FGCBTabletMotion )( int, int ); 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 ); @@ -355,7 +363,13 @@ struct tagSFG_Display 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 @@ -368,7 +382,7 @@ struct tagSFG_Display 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 */ @@ -579,6 +593,12 @@ enum CB_Joystick, CB_Destroy, + /* MPX-related */ + CB_MultiEntry, + CB_MultiButton, + CB_MultiMotion, + CB_MultiPassive, + /* Presently ignored */ CB_Select, CB_OverlayDisplay, @@ -801,11 +821,12 @@ extern SFG_State fgState; * 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) ) ; \ } /* @@ -825,7 +846,7 @@ void fgDestroyStructure( void ); /* 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 */ @@ -961,6 +982,13 @@ void fgWarning( const char *fmt, ... ); */ #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 );