From: <fa...@us...> - 2009-12-02 03:56:16
|
Revision: 854 http://freeglut.svn.sourceforge.net/freeglut/?rev=854&view=rev Author: fayjf Date: 2009-12-02 03:56:05 +0000 (Wed, 02 Dec 2009) Log Message: ----------- See e-mail from Martin Payne dated 11/30/09 at 5:51 AM. These changes include changing "HAVE_ERRNO" to "HAVE_ERRNO_H" globally, modifying "configure.ac" to check for "errno.h", and modifying the "vcproj" files to suppress spurious warnings. Modified Paths: -------------- trunk/freeglut/freeglut/VisualStudio2008/freeglut.vcproj trunk/freeglut/freeglut/VisualStudio2008Static/freeglut.vcproj trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/src/freeglut_init.c trunk/freeglut/freeglut/src/freeglut_input_devices.c trunk/freeglut/freeglut/src/freeglut_joystick.c trunk/freeglut/freeglut/src/freeglut_main.c trunk/freeglut/freeglut/src/freeglut_spaceball.c Modified: trunk/freeglut/freeglut/VisualStudio2008/freeglut.vcproj =================================================================== --- trunk/freeglut/freeglut/VisualStudio2008/freeglut.vcproj 2009-11-30 01:08:32 UTC (rev 853) +++ trunk/freeglut/freeglut/VisualStudio2008/freeglut.vcproj 2009-12-02 03:56:05 UTC (rev 854) @@ -41,10 +41,9 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalOptions="/D "_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES"" Optimization="0" AdditionalIncludeDirectories="..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;FREEGLUT_EXPORTS" + PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;FREEGLUT_EXPORTS;_CRT_SECURE_NO_WARNINGS" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -125,7 +124,7 @@ Optimization="2" EnableIntrinsicFunctions="true" AdditionalIncludeDirectories="..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;FREEGLUT_EXPORTS" + PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;FREEGLUT_EXPORTS;_CRT_SECURE_NO_WARNINGS" RuntimeLibrary="0" EnableFunctionLevelLinking="true" WarningLevel="3" Modified: trunk/freeglut/freeglut/VisualStudio2008Static/freeglut.vcproj =================================================================== --- trunk/freeglut/freeglut/VisualStudio2008Static/freeglut.vcproj 2009-11-30 01:08:32 UTC (rev 853) +++ trunk/freeglut/freeglut/VisualStudio2008Static/freeglut.vcproj 2009-12-02 03:56:05 UTC (rev 854) @@ -43,7 +43,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\include" - PreprocessorDefinitions="_DEBUG;FREEGLUT_STATIC;WIN32;_LIB" + PreprocessorDefinitions="_DEBUG;FREEGLUT_STATIC;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -113,7 +113,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\include" - PreprocessorDefinitions="NDEBUG;FREEGLUT_STATIC;WIN32;_LIB" + PreprocessorDefinitions="NDEBUG;FREEGLUT_STATIC;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2009-11-30 01:08:32 UTC (rev 853) +++ trunk/freeglut/freeglut/configure.ac 2009-12-02 03:56:05 UTC (rev 854) @@ -46,7 +46,7 @@ AC_HEADER_STDC save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" -AC_CHECK_HEADERS([GL/gl.h GL/glu.h GL/glx.h fcntl.h limits.h sys/ioctl.h sys/param.h sys/time.h]) +AC_CHECK_HEADERS([usbhid.h errno.h GL/gl.h GL/glu.h GL/glx.h fcntl.h limits.h sys/ioctl.h sys/param.h sys/time.h]) AC_HEADER_TIME AC_CHECK_HEADERS([X11/extensions/xf86vmode.h], [], [], [#include <X11/Xlib.h>]) AC_CHECK_HEADERS([X11/extensions/XI.h X11/extensions/XInput.h]) Modified: trunk/freeglut/freeglut/src/freeglut_init.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_init.c 2009-11-30 01:08:32 UTC (rev 853) +++ trunk/freeglut/freeglut/src/freeglut_init.c 2009-12-02 03:56:05 UTC (rev 854) @@ -680,14 +680,6 @@ char* geometry = NULL; int i, j, argc = *pargc; - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) - size_t sLen; -#if HAVE_ERRNO - errno_t err; -#endif -#endif - if( fgState.Initialised ) fgError( "illegal glutInit() reinitialization attempt" ); @@ -707,15 +699,8 @@ /* check if GLUT_FPS env var is set */ #ifndef _WIN32_WCE { - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO - char* fps = NULL; - err = _dupenv_s( &fps, &sLen, "GLUT_FPS" ); - if (err) - fgError("Error getting GLUT_FPS environment variable"); -#else const char *fps = getenv( "GLUT_FPS" ); -#endif + if( fps ) { int interval; @@ -726,20 +711,9 @@ else fgState.FPSInterval = interval; } - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO - free ( fps ); fps = NULL; /* dupenv_s allocates a string that we must free */ -#endif } - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO - err = _dupenv_s( &displayName, &sLen, "DISPLAY" ); - if (err) - fgError("Error getting DISPLAY environment variable"); -#else displayName = getenv( "DISPLAY" ); -#endif for( i = 1; i < argc; i++ ) { @@ -824,10 +798,6 @@ * variable for opening the X display (see code above): */ fghInitialize( displayName ); - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO - free ( displayName ); displayName = NULL; /* dupenv_s allocates a string that we must free */ -#endif /* * Geometry parsing deffered until here because we may need the screen @@ -936,21 +906,13 @@ * delimited by blanks or tabs. */ char *token ; - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) - char *next_token = NULL; -#endif size_t len = strlen ( displayMode ); char *buffer = (char *)malloc ( (len+1) * sizeof(char) ); memcpy ( buffer, displayMode, len ); buffer[len] = '\0'; - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) - token = strtok_s ( buffer, " \t", &next_token ); -#else token = strtok ( buffer, " \t" ); -#endif + while ( token ) { /* Process this token */ @@ -1127,12 +1089,7 @@ break ; } - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) - token = strtok_s ( NULL, " \t", &next_token ); -#else token = strtok ( NULL, " \t" ); -#endif } free ( buffer ); Modified: trunk/freeglut/freeglut/src/freeglut_input_devices.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_input_devices.c 2009-11-30 01:08:32 UTC (rev 853) +++ trunk/freeglut/freeglut/src/freeglut_input_devices.c 2009-12-02 03:56:05 UTC (rev 854) @@ -36,7 +36,7 @@ #include "freeglut_internal.h" #if TARGET_HOST_POSIX_X11 -#if HAVE_ERRNO +#if HAVE_ERRNO_H #include <errno.h> #endif #include <sys/ioctl.h> @@ -140,17 +140,8 @@ { if( !fgState.InputDevsInitialised ) { - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO - char *dial_device=NULL; - size_t sLen; - errno_t err = _dupenv_s( &dial_device, &sLen, "GLUT_DIALS_SERIAL" ); - if (err) - fgError("Error getting GLUT_DIALS_SERIAL environment variable"); -#else const char *dial_device=NULL; dial_device = getenv ( "GLUT_DIALS_SERIAL" ); -#endif #if TARGET_HOST_MS_WINDOWS if (!dial_device){ static char devname[256]; @@ -167,10 +158,6 @@ #endif if ( !dial_device ) return; if ( !( dialbox_port = serial_open ( dial_device ) ) ) return; - /* will return true for VC8 (VC2005) and higher */ -#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO - free ( dial_device ); dial_device = NULL; /* dupenv_s allocates a string that we must free */ -#endif serial_putchar(dialbox_port,DIAL_INITIALIZE); glutTimerFunc ( 10, poll_dials, 0 ); fgState.InputDevsInitialised = GL_TRUE; Modified: trunk/freeglut/freeglut/src/freeglut_joystick.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_joystick.c 2009-11-30 01:08:32 UTC (rev 853) +++ trunk/freeglut/freeglut/src/freeglut_joystick.c 2009-12-02 03:56:05 UTC (rev 854) @@ -75,7 +75,7 @@ # if HAVE_FCNTL_H # include <fcntl.h> # endif -# if HAVE_ERRNO +# if HAVE_ERRNO_H # include <errno.h> # endif # if defined(__FreeBSD__) || defined(__NetBSD__) @@ -240,7 +240,7 @@ if (cp) return 1; } -#if HAVE_ERRNO +#if HAVE_ERRNO_H else if (errno == EACCES) { if (!protection_warned) { fgWarning ( "Can't open %s for read!", buf ); @@ -265,7 +265,7 @@ if ( ( rd = hid_get_report_desc( os->fd ) ) == 0 ) { -#if HAVE_ERRNO +#if HAVE_ERRNO_H fgWarning ( "error: %s: %s", os->fname, strerror( errno ) ); #else fgWarning ( "error: %s", os->fname ); @@ -279,7 +279,7 @@ if( ioctl( os->fd, USB_GET_REPORT_ID, &report_id ) < 0) { /*** XXX {report_id} may not be the right variable? ***/ -#if HAVE_ERRNO +#if HAVE_ERRNO_H fgWarning ( "error: %s%d: %s", UHIDDEV, report_id, strerror( errno ) ); #else fgWarning ( "error: %s%d", UHIDDEV, report_id ); @@ -676,7 +676,7 @@ } } } -#if HAVE_ERRNO +#if HAVE_ERRNO_H if ( len < 0 && errno != EAGAIN ) #else if ( len < 0 ) @@ -699,7 +699,7 @@ if ( status != sizeof( struct js_event ) ) { -#if HAVE_ERRNO +#if HAVE_ERRNO_H if ( errno == EAGAIN ) { /* Use the old values */ @@ -1317,7 +1317,7 @@ joy->os->fd = open( joy->os->fname, O_RDONLY | O_NONBLOCK); -#if HAVE_ERRNO +#if HAVE_ERRNO_H if( joy->os->fd < 0 && errno == EACCES ) fgWarning ( "%s exists but is not readable by you", joy->os->fname ); #endif Modified: trunk/freeglut/freeglut/src/freeglut_main.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_main.c 2009-11-30 01:08:32 UTC (rev 853) +++ trunk/freeglut/freeglut/src/freeglut_main.c 2009-12-02 03:56:05 UTC (rev 854) @@ -27,7 +27,7 @@ #include <GL/freeglut.h> #include "freeglut_internal.h" -#if HAVE_ERRNO +#if HAVE_ERRNO_H # include <errno.h> #endif #include <stdarg.h> @@ -473,7 +473,7 @@ wait.tv_usec = (msec % 1000) * 1000; err = select( socket+1, &fdset, NULL, NULL, &wait ); -#if HAVE_ERRNO +#if HAVE_ERRNO_H if( ( -1 == err ) && ( errno != EINTR ) ) fgWarning ( "freeglut select() error: %d", errno ); #endif Modified: trunk/freeglut/freeglut/src/freeglut_spaceball.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_spaceball.c 2009-11-30 01:08:32 UTC (rev 853) +++ trunk/freeglut/freeglut/src/freeglut_spaceball.c 2009-12-02 03:56:05 UTC (rev 854) @@ -215,7 +215,10 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> + +#if HAVE_ERRNO_H #include <errno.h> +#endif #include <X11/Xlib.h> #include <X11/Xutil.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2009-12-02 12:08:45
|
Revision: 855 http://freeglut.svn.sourceforge.net/freeglut/?rev=855&view=rev Author: fayjf Date: 2009-12-02 12:08:37 +0000 (Wed, 02 Dec 2009) Log Message: ----------- Bumping the version number up to 2.7.0 -- we are now into the new "unstable" build for the next go-around Modified Paths: -------------- trunk/freeglut/freeglut/freeglut.rc trunk/freeglut/freeglut/src/freeglut_internal.h Modified: trunk/freeglut/freeglut/freeglut.rc =================================================================== --- trunk/freeglut/freeglut/freeglut.rc 2009-12-02 03:56:05 UTC (rev 854) +++ trunk/freeglut/freeglut/freeglut.rc 2009-12-02 12:08:37 UTC (rev 855) @@ -2,8 +2,8 @@ /* 0 ICON DISCARDABLE "OpenGL.ico" */ 1 VERSIONINFO - FILEVERSION 2,6,0,0 - PRODUCTVERSION 2,6,0,0 + FILEVERSION 2,7,0,0 + PRODUCTVERSION 2,7,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -21,14 +21,14 @@ /* VALUE "Comments", "\0" */ /* VALUE "CompanyName", "\0" */ VALUE "FileDescription", "Freeglut OpenGL Utility Toolkit\0" - VALUE "FileVersion", "2, 6, 0, 0\0" + VALUE "FileVersion", "2, 7, 0, 0\0" VALUE "InternalName", "freeglutdll\0" VALUE "LegalCopyright", "Copyright \xA9 1999-2000 Pawel W. Olszta\0" /* VALUE "LegalTrademarks", "\0" */ VALUE "OriginalFilename", "freeglut.dll\0" /* VALUE "PrivateBuild", "\0" */ VALUE "ProductName", "Freeglut OpenGL Utility Toolkit\0" - VALUE "ProductVersion", "2, 6, 0, 0\0" + VALUE "ProductVersion", "2, 7, 0, 0\0" /* VALUE "SpecialBuild", "\0" */ END END Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2009-12-02 03:56:05 UTC (rev 854) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2009-12-02 12:08:37 UTC (rev 855) @@ -34,7 +34,7 @@ /* XXX Update these for each release! */ #define VERSION_MAJOR 2 -#define VERSION_MINOR 6 +#define VERSION_MINOR 7 #define VERSION_PATCH 0 /* Freeglut is intended to function under all Unix/X11 and Win32 platforms. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2010-01-04 04:07:10
|
Revision: 867 http://freeglut.svn.sourceforge.net/freeglut/?rev=867&view=rev Author: fayjf Date: 2010-01-04 04:07:03 +0000 (Mon, 04 Jan 2010) Log Message: ----------- Implementing feature request 2824176: detection of X11 special keys: SHIFT, CTRL, ALT Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/src/freeglut_main.c Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2009-12-24 04:05:46 UTC (rev 866) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2010-01-04 04:07:03 UTC (rev 867) @@ -38,6 +38,12 @@ #define GLUT_KEY_NUM_LOCK 0x006D #define GLUT_KEY_BEGIN 0x006E #define GLUT_KEY_DELETE 0x006F +#define GLUT_KEY_SHIFT_L 0x0070 +#define GLUT_KEY_SHIFT_R 0x0071 +#define GLUT_KEY_CTRL_L 0x0072 +#define GLUT_KEY_CTRL_R 0x0073 +#define GLUT_KEY_ALT_L 0x0074 +#define GLUT_KEY_ALT_R 0x0075 /* * GLUT API Extension macro definitions -- behaviour when the user clicks on an "x" to close a window Modified: trunk/freeglut/freeglut/src/freeglut_main.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_main.c 2009-12-24 04:05:46 UTC (rev 866) +++ trunk/freeglut/freeglut/src/freeglut_main.c 2010-01-04 04:07:03 UTC (rev 867) @@ -1387,6 +1387,13 @@ case XK_Num_Lock : special = GLUT_KEY_NUM_LOCK; break; case XK_KP_Begin : special = GLUT_KEY_BEGIN; break; case XK_KP_Delete: special = GLUT_KEY_DELETE; break; + + case XK_Shift_L: special = GLUT_KEY_SHIFT_L; break; + case XK_Shift_R: special = GLUT_KEY_SHIFT_R; break; + case XK_Control_L: special = GLUT_KEY_CTRL_L; break; + case XK_Control_R: special = GLUT_KEY_CTRL_R; break; + case XK_Alt_L: special = GLUT_KEY_ALT_L; break; + case XK_Alt_R: special = GLUT_KEY_ALT_R; break; } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2010-01-25 03:57:57
|
Revision: 871 http://freeglut.svn.sourceforge.net/freeglut/?rev=871&view=rev Author: fayjf Date: 2010-01-25 03:57:50 +0000 (Mon, 25 Jan 2010) Log Message: ----------- Making all Windows include file names lower-case for better *nix compatibility per e-mail from Martin Payne vintage 1/22/2010 6:15 AM. Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_std.h trunk/freeglut/freeglut/src/freeglut_internal.h Modified: trunk/freeglut/freeglut/include/GL/freeglut_std.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_std.h 2010-01-11 01:41:38 UTC (rev 870) +++ trunk/freeglut/freeglut/include/GL/freeglut_std.h 2010-01-25 03:57:50 UTC (rev 871) @@ -58,7 +58,7 @@ # define WIN32_LEAN_AND_MEAN 1 # endif # define NOMINMAX -# include <Windows.h> +# include <windows.h> /* Windows static library */ # ifdef FREEGLUT_STATIC Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2010-01-11 01:41:38 UTC (rev 870) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2010-01-25 03:57:50 UTC (rev 871) @@ -88,15 +88,14 @@ /* -- PLATFORM-SPECIFIC INCLUDES ------------------------------------------- */ -/* All Win32 headers depend on the huge Windows.h recursive include. - * Note: Let's use proper case for MS-Win headers. Even though it's - * not required due to case insensitivity, it's a good habit to keep - * because the cross-platform includes are case sensitive. +/* All Win32 headers depend on the huge windows.h recursive include. + * Note: Lower-case header names are used, for best cross-platform + * compatibility. */ #if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) -# include <Windows.h> -# include <WindowsX.h> -# include <MMSystem.h> +# include <windows.h> +# include <windowsx.h> +# include <mmsystem.h> /* CYGWIN does not have tchar.h, but has TEXT(x), defined in winnt.h. */ # ifndef __CYGWIN__ # include <tchar.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2010-11-01 04:14:01
|
Revision: 877 http://freeglut.svn.sourceforge.net/freeglut/?rev=877&view=rev Author: fayjf Date: 2010-11-01 04:13:54 +0000 (Mon, 01 Nov 2010) Log Message: ----------- Addressing feature request 2116152 -- adding an fgError exit callback routine -- patch from Chris Marshall in e-mail dated 10/30/2010 2:06 PM Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/progs/demos/Makefile.am trunk/freeglut/freeglut/src/freeglut_ext.c trunk/freeglut/freeglut/src/freeglut_init.c trunk/freeglut/freeglut/src/freeglut_internal.h trunk/freeglut/freeglut/src/freeglut_main.c trunk/freeglut/freeglut/src/freeglutdll.def Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2010-05-29 02:07:21 UTC (rev 876) +++ trunk/freeglut/freeglut/configure.ac 2010-11-01 04:13:54 UTC (rev 877) @@ -95,5 +95,5 @@ fi # Generate output. -AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile progs/demos/spaceball/Makefile src/Makefile]) +AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Error/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile progs/demos/spaceball/Makefile src/Makefile]) AC_OUTPUT Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2010-05-29 02:07:21 UTC (rev 876) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2010-11-01 04:13:54 UTC (rev 877) @@ -202,6 +202,12 @@ FGAPI void FGAPIENTRY glutInitContextFlags( int flags ); FGAPI void FGAPIENTRY glutInitContextProfile( int profile ); +/* to get the typedef for va_list */ +#include <stdarg.h> + +FGAPI void FGAPIENTRY glutInitErrorFunc( void (* vError)( const char *fmt, va_list ap ) ); +FGAPI void FGAPIENTRY glutInitWarningFunc( void (* vWarning)( const char *fmt, va_list ap ) ); + /* * GLUT API macro definitions -- the display mode definitions */ Modified: trunk/freeglut/freeglut/progs/demos/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Makefile.am 2010-05-29 02:07:21 UTC (rev 876) +++ trunk/freeglut/freeglut/progs/demos/Makefile.am 2010-11-01 04:13:54 UTC (rev 877) @@ -1,2 +1,2 @@ EXTRA_DIST = demos.dsw -SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes smooth_opengl3 spaceball +SUBDIRS = CallbackMaker Error Fractals Fractals_random Lorenz One shapes smooth_opengl3 spaceball Modified: trunk/freeglut/freeglut/src/freeglut_ext.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_ext.c 2010-05-29 02:07:21 UTC (rev 876) +++ trunk/freeglut/freeglut/src/freeglut_ext.c 2010-11-01 04:13:54 UTC (rev 877) @@ -196,6 +196,8 @@ CHECK_NAME(glutInitContextVersion); CHECK_NAME(glutInitContextFlags); CHECK_NAME(glutInitContextProfile); + CHECK_NAME(glutInitErrorFunc); + CHECK_NAME(glutInitWarningFunc); #undef CHECK_NAME return NULL; Modified: trunk/freeglut/freeglut/src/freeglut_init.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_init.c 2010-05-29 02:07:21 UTC (rev 876) +++ trunk/freeglut/freeglut/src/freeglut_init.c 2010-11-01 04:13:54 UTC (rev 877) @@ -91,7 +91,9 @@ 1, /* MajorVersion */ 0, /* MajorVersion */ 0, /* ContextFlags */ - 0 /* ContextProfile */ + 0, /* ContextProfile */ + NULL, /* ErrorFunc */ + NULL /* WarningFunc */ }; @@ -1143,4 +1145,24 @@ fgState.ContextProfile = profile; } +/* -------------- User Defined Error/Warning Handler Support -------------- */ + +/* + * Sets the user error handler (note the use of va_list for the args to the fmt) + */ +void FGAPIENTRY glutInitErrorFunc( void (* vfgError) ( const char *fmt, va_list ap ) ) +{ + /* This allows user programs to handle freeglut errors */ + fgState.ErrorFunc = vfgError; +} + +/* + * Sets the user warning handler (note the use of va_list for the args to the fmt) + */ +void FGAPIENTRY glutInitWarningFunc( void (* vfgWarning) ( const char *fmt, va_list ap ) ) +{ + /* This allows user programs to handle freeglut warnings */ + fgState.ErrorFunc = vfgWarning; +} + /*** END OF FILE ***/ Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2010-05-29 02:07:21 UTC (rev 876) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2010-11-01 04:13:54 UTC (rev 877) @@ -129,6 +129,7 @@ #include <string.h> #include <math.h> #include <stdlib.h> +#include <stdarg.h> /* These are included based on autoconf directives. */ #ifdef HAVE_SYS_TYPES_H @@ -243,7 +244,11 @@ /* 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; struct tagSFG_List @@ -333,6 +338,8 @@ 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 */ Modified: trunk/freeglut/freeglut/src/freeglut_main.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_main.c 2010-05-29 02:07:21 UTC (rev 876) +++ trunk/freeglut/freeglut/src/freeglut_main.c 2010-11-01 04:13:54 UTC (rev 877) @@ -338,37 +338,62 @@ { va_list ap; - va_start( ap, fmt ); + if (fgState.ErrorFunc) { - fprintf( stderr, "freeglut "); - if( fgState.ProgramName ) - fprintf( stderr, "(%s): ", fgState.ProgramName ); - VFPRINTF( stderr, fmt, ap ); - fprintf( stderr, "\n" ); + va_start( ap, fmt ); - va_end( ap ); + /* call user set error handler here */ + fgState.ErrorFunc(fmt, ap); - if ( fgState.Initialised ) - fgDeinitialize (); + va_end( ap ); - exit( 1 ); + } else { + + va_start( ap, fmt ); + + fprintf( stderr, "freeglut "); + if( fgState.ProgramName ) + fprintf( stderr, "(%s): ", fgState.ProgramName ); + VFPRINTF( stderr, fmt, ap ); + fprintf( stderr, "\n" ); + + va_end( ap ); + + if ( fgState.Initialised ) + fgDeinitialize (); + + exit( 1 ); + } } void fgWarning( const char *fmt, ... ) { va_list ap; - va_start( ap, fmt ); + if (fgState.WarningFunc) { - fprintf( stderr, "freeglut "); - if( fgState.ProgramName ) - fprintf( stderr, "(%s): ", fgState.ProgramName ); - VFPRINTF( stderr, fmt, ap ); - fprintf( stderr, "\n" ); + va_start( ap, fmt ); - va_end( ap ); + /* call user set warning handler here */ + fgState.WarningFunc(fmt, ap); + + va_end( ap ); + + } else { + + va_start( ap, fmt ); + + fprintf( stderr, "freeglut "); + if( fgState.ProgramName ) + fprintf( stderr, "(%s): ", fgState.ProgramName ); + VFPRINTF( stderr, fmt, ap ); + fprintf( stderr, "\n" ); + + va_end( ap ); + } } + /* * Indicates whether Joystick events are being used by ANY window. * Modified: trunk/freeglut/freeglut/src/freeglutdll.def =================================================================== --- trunk/freeglut/freeglut/src/freeglutdll.def 2010-05-29 02:07:21 UTC (rev 876) +++ trunk/freeglut/freeglut/src/freeglutdll.def 2010-11-01 04:13:54 UTC (rev 877) @@ -143,6 +143,8 @@ glutInitContextFlags glutInitContextVersion glutInitContextProfile + glutInitErrorFunc + glutInitWarningFunc __glutInitWithExit __glutCreateWindowWithExit __glutCreateMenuWithExit This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-03-16 03:22:55
|
Revision: 897 http://freeglut.svn.sourceforge.net/freeglut/?rev=897&view=rev Author: fayjf Date: 2011-03-16 03:22:49 +0000 (Wed, 16 Mar 2011) Log Message: ----------- Implementing John Tsiombikas' game mode patch per e-mail dated 3/15/11 8:04 PM Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/src/freeglut_gamemode.c trunk/freeglut/freeglut/src/freeglut_init.c trunk/freeglut/freeglut/src/freeglut_internal.h trunk/freeglut/freeglut/src/freeglut_window.c Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2011-03-14 03:26:15 UTC (rev 896) +++ trunk/freeglut/freeglut/configure.ac 2011-03-16 03:22:49 UTC (rev 897) @@ -29,9 +29,8 @@ EXPORT_FLAGS="-DFREEGLUT_EXPORTS" else GL_LIBS="-lGL -lXext -lX11" - AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode], - [LIBXXF86VM=-lXxf86vm], [LIBXXF86VM=], - [$X_LIBS -lXext -lX11]) + AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode]) + AC_CHECK_LIB([Xrandr], [XRRQueryExtension]) LIBXI=-lXi VERSION_INFO="-version-info 12:0:9" EXPORT_FLAGS= @@ -49,6 +48,7 @@ AC_CHECK_HEADERS([usbhid.h errno.h GL/gl.h GL/glu.h GL/glx.h fcntl.h limits.h sys/ioctl.h sys/param.h sys/time.h]) AC_HEADER_TIME AC_CHECK_HEADERS([X11/extensions/xf86vmode.h], [], [], [#include <X11/Xlib.h>]) +AC_CHECK_HEADERS([X11/extensions/Xrandr.h]) AC_CHECK_HEADERS([X11/extensions/XI.h X11/extensions/XInput.h]) CPPFLAGS="$save_CPPFLAGS" Modified: trunk/freeglut/freeglut/src/freeglut_gamemode.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_gamemode.c 2011-03-14 03:26:15 UTC (rev 896) +++ trunk/freeglut/freeglut/src/freeglut_gamemode.c 2011-03-16 03:22:49 UTC (rev 897) @@ -40,6 +40,65 @@ /* -- PRIVATE FUNCTIONS ---------------------------------------------------- */ +static int xrandr_resize(int xsz, int ysz, int just_checking) +{ + int res = -1; + +#ifdef HAVE_X11_EXTENSIONS_XRANDR_H + int event_base, error_base; + Status st; + XRRScreenConfiguration *xrr_config; + XRRScreenSize *ssizes; + Rotation rot; + int i, ssizes_count, curr; + Time timestamp, cfg_timestamp; + + /* must check at runtime for the availability of the extension */ + if(!XRRQueryExtension(fgDisplay.Display, &event_base, &error_base)) { + return -1; + } + + if(!(xrr_config = XRRGetScreenInfo(fgDisplay.Display, fgDisplay.RootWindow))) { + fgWarning("XRRGetScreenInfo failed"); + return -1; + } + ssizes = XRRConfigSizes(xrr_config, &ssizes_count); + curr = XRRConfigCurrentConfiguration(xrr_config, &rot); + timestamp = XRRConfigTimes(xrr_config, &cfg_timestamp); + + if(xsz == ssizes[curr].width && ysz == ssizes[curr].height) { + /* no need to switch, we're already in the requested mode */ + res = 0; + goto done; + } + + for(i=0; i<ssizes_count; i++) { + if(ssizes[i].width == xsz && ssizes[i].height == ysz) { + break; /* found it */ + } + } + if(i == ssizes_count) + goto done; + + if(just_checking) { + res = 0; + goto done; + } + + if((st = XRRSetScreenConfig(fgDisplay.Display, xrr_config, fgDisplay.RootWindow, + i, rot, timestamp)) != 0) { + fgWarning("XRRSetScreenConfig failed"); + goto done; + } + res = 0; + +done: + XRRFreeScreenConfigInfo(xrr_config); +#endif + return res; +} + + /* * Remembers the current visual settings, so that * we can change them and restore later... @@ -47,14 +106,37 @@ static void fghRememberState( void ) { #if TARGET_HOST_POSIX_X11 + int event_base, error_base; +# ifdef HAVE_X11_EXTENSIONS_XRANDR_H + if(XRRQueryExtension(fgDisplay.Display, &event_base, &error_base)) { + XRRScreenConfiguration *xrr_config; + XRRScreenSize *ssizes; + Rotation rot; + int ssize_count, curr; + + if((xrr_config = XRRGetScreenInfo(fgDisplay.Display, fgDisplay.RootWindow))) { + ssizes = XRRConfigSizes(xrr_config, &ssize_count); + curr = XRRConfigCurrentConfiguration(xrr_config, &rot); + + fgDisplay.prev_xsz = ssizes[curr].width; + fgDisplay.prev_ysz = ssizes[curr].height; + fgDisplay.prev_size_valid = 1; + XRRFreeScreenConfigInfo(xrr_config); + return; + } + } +# endif + /* * This highly depends on the XFree86 extensions, * not approved as X Consortium standards */ -# ifdef X_XF86VidModeGetModeLine +# ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H + if(!XF86VidModeQueryExtension(fgDisplay.Display, &event_base, &error_base)) { + return; + } - /* * Remember the current ViewPort location of the screen to be able to * restore the ViewPort on LeaveGameMode(): @@ -93,12 +175,6 @@ if( !fgDisplay.DisplayModeValid ) fgWarning( "XF86VidModeGetModeLine failed" ); - -# else - /* - * XXX warning fghRememberState: missing XFree86 video mode extensions, - * XXX game mode will not change screen resolution when activated - */ # endif #elif TARGET_HOST_MS_WINDOWS @@ -127,7 +203,17 @@ { #if TARGET_HOST_POSIX_X11 -# ifdef X_XF86VidModeGetAllModeLines +# ifdef HAVE_X11_EXTENSIONS_XRANDR_H + if(fgDisplay.prev_size_valid) { + if(xrandr_resize(fgDisplay.prev_xsz, fgDisplay.prev_ysz, 0) != -1) { + fgDisplay.prev_size_valid = 0; + return; + } + } +# endif + + +# ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H /* Restore the remembered pointer position: */ XWarpPointer( fgDisplay.Display, None, fgDisplay.RootWindow, 0, 0, 0, 0, @@ -179,7 +265,7 @@ fgDisplay.Screen, fgDisplay.DisplayViewPortX, fgDisplay.DisplayViewPortY ) ) - fgWarning( "XF86VidModeSetViewPort failed" ); + fgWarning( "HAVE_X11_EXTENSIONS_XF86VMODE_H failed" ); /* @@ -195,11 +281,6 @@ XFree( displayModes ); } -# else - /* - * XXX warning fghRestoreState: missing XFree86 video mode extensions, - * XXX game mode will not change screen resolution when activated - */ # endif #elif TARGET_HOST_MS_WINDOWS @@ -211,7 +292,7 @@ } #if TARGET_HOST_POSIX_X11 -#ifdef X_XF86VidModeGetAllModeLines +#ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H /* * Checks a single display mode settings against user's preferences. @@ -268,11 +349,19 @@ GLboolean success = GL_FALSE; #if TARGET_HOST_POSIX_X11 + /* first try to use XRandR, then fallback to XF86VidMode */ +# ifdef HAVE_X11_EXTENSIONS_XRANDR_H + if(xrandr_resize(fgState.GameModeSize.X, fgState.GameModeSize.Y, haveToTest) != -1) { + return GL_TRUE; + } +# endif + + /* * This highly depends on the XFree86 extensions, * not approved as X Consortium standards */ -# ifdef X_XF86VidModeGetAllModeLines +# ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H /* * This is also used by applcations which check modes by calling @@ -510,7 +599,7 @@ fgState.GameModeSize.X/2, fgState.GameModeSize.Y/2 ); -# ifdef X_XF86VidModeSetViewPort +# ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H if( fgDisplay.DisplayModeValid ) { Modified: trunk/freeglut/freeglut/src/freeglut_init.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_init.c 2011-03-14 03:26:15 UTC (rev 896) +++ trunk/freeglut/freeglut/src/freeglut_init.c 2011-03-16 03:22:49 UTC (rev 897) @@ -389,6 +389,7 @@ #endif fgState.Initialised = GL_TRUE; + atexit(fgDeinitialize); /* InputDevice uses GlutTimerFunc(), so fgState.Initialised must be TRUE */ fgInitialiseInputDevices(); @@ -403,8 +404,6 @@ if( !fgState.Initialised ) { - fgWarning( "fgDeinitialize(): " - "no valid initialization has been performed" ); return; } Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2011-03-14 03:26:15 UTC (rev 896) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2011-03-16 03:22:49 UTC (rev 897) @@ -110,9 +110,12 @@ # 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 +# 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 @@ -355,7 +358,12 @@ 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_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 +376,7 @@ 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 */ Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2011-03-14 03:26:15 UTC (rev 896) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2011-03-16 03:22:49 UTC (rev 897) @@ -1316,6 +1316,12 @@ */ void fgCloseWindow( SFG_Window* window ) { + /* if we're in gamemode, call glutLeaveGameMode first to make sure the + * gamemode is properly closed before closing the window + */ + if (fgStructure.GameModeWindow != NULL) + glutLeaveGameMode(); + #if TARGET_HOST_POSIX_X11 if( window->Window.Context ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-03-16 03:24:27
|
Revision: 898 http://freeglut.svn.sourceforge.net/freeglut/?rev=898&view=rev Author: fayjf Date: 2011-03-16 03:24:21 +0000 (Wed, 16 Mar 2011) Log Message: ----------- Implementing John Tsiombikas' missing error demo patch per e-mail dated 3/15/11 8:04 PM Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/progs/demos/Makefile.am Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2011-03-16 03:22:49 UTC (rev 897) +++ trunk/freeglut/freeglut/configure.ac 2011-03-16 03:24:21 UTC (rev 898) @@ -95,5 +95,5 @@ fi # Generate output. -AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Error/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile progs/demos/spaceball/Makefile src/Makefile]) +AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile progs/demos/spaceball/Makefile src/Makefile]) AC_OUTPUT Modified: trunk/freeglut/freeglut/progs/demos/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Makefile.am 2011-03-16 03:22:49 UTC (rev 897) +++ trunk/freeglut/freeglut/progs/demos/Makefile.am 2011-03-16 03:24:21 UTC (rev 898) @@ -1,2 +1,2 @@ EXTRA_DIST = demos.dsw -SUBDIRS = CallbackMaker Error Fractals Fractals_random Lorenz One shapes smooth_opengl3 spaceball +SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes smooth_opengl3 spaceball This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-03-18 02:59:28
|
Revision: 905 http://freeglut.svn.sourceforge.net/freeglut/?rev=905&view=rev Author: fayjf Date: 2011-03-18 02:59:22 +0000 (Fri, 18 Mar 2011) Log Message: ----------- Adding multitouch capability per e-mail from Florian Echtler dated 3/17/11 12:07 PM Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/src/Makefile.am trunk/freeglut/freeglut/src/freeglut_callbacks.c trunk/freeglut/freeglut/src/freeglut_ext.c trunk/freeglut/freeglut/src/freeglut_internal.h trunk/freeglut/freeglut/src/freeglut_main.c trunk/freeglut/freeglut/src/freeglut_window.c Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2011-03-17 04:22:55 UTC (rev 904) +++ trunk/freeglut/freeglut/configure.ac 2011-03-18 02:59:22 UTC (rev 905) @@ -31,6 +31,7 @@ GL_LIBS="-lGL -lXext -lX11" AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode]) AC_CHECK_LIB([Xrandr], [XRRQueryExtension]) + AC_CHECK_LIB([Xi], [XISelectEvents]) LIBXI=-lXi VERSION_INFO="-version-info 12:0:9" EXPORT_FLAGS= @@ -50,6 +51,7 @@ AC_CHECK_HEADERS([X11/extensions/xf86vmode.h], [], [], [#include <X11/Xlib.h>]) AC_CHECK_HEADERS([X11/extensions/Xrandr.h]) AC_CHECK_HEADERS([X11/extensions/XI.h X11/extensions/XInput.h]) +AC_CHECK_HEADERS([X11/extensions/XInput2.h]) CPPFLAGS="$save_CPPFLAGS" # Checks for library functions. Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2011-03-17 04:22:55 UTC (rev 904) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2011-03-18 02:59:22 UTC (rev 905) @@ -173,6 +173,17 @@ FGAPI GLUTproc FGAPIENTRY glutGetProcAddress( const char *procName ); /* + * Multi-touch/multi-pointer extensions + */ + +#define GLUT_HAS_MULTI 1 + +FGAPI void FGAPIENTRY glutMultiEntryFunc( void (* callback)( int, int ) ); +FGAPI void FGAPIENTRY glutMultiButtonFunc( void (* callback)( int, int, int, int, int ) ); +FGAPI void FGAPIENTRY glutMultiMotionFunc( void (* callback)( int, int, int ) ); +FGAPI void FGAPIENTRY glutMultiPassiveFunc( void (* callback)( int, int, int ) ); + +/* * Joystick functions, see freeglut_joystick.c */ /* USE OF THESE FUNCTIONS IS DEPRECATED !!!!! */ Modified: trunk/freeglut/freeglut/src/Makefile.am =================================================================== --- trunk/freeglut/freeglut/src/Makefile.am 2011-03-17 04:22:55 UTC (rev 904) +++ trunk/freeglut/freeglut/src/Makefile.am 2011-03-18 02:59:22 UTC (rev 905) @@ -38,7 +38,8 @@ freeglut_structure.c \ freeglut_teapot.c \ freeglut_videoresize.c \ - freeglut_window.c + freeglut_window.c \ + freeglut_xinput.c # # Additional linker flags Modified: trunk/freeglut/freeglut/src/freeglut_callbacks.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_callbacks.c 2011-03-17 04:22:55 UTC (rev 904) +++ trunk/freeglut/freeglut/src/freeglut_callbacks.c 2011-03-18 02:59:22 UTC (rev 905) @@ -373,4 +373,40 @@ SET_CALLBACK( TabletButton ); } +/* + * Sets the multi-pointer entry callback for the current window + */ +void FGAPIENTRY glutMultiEntryFunc( void (* callback)(int, int ) ) +{ + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMultiEntryFunc" ); + SET_CALLBACK( MultiEntry ); +} + +/* + * Sets the multi-pointer button callback for the current window + */ +void FGAPIENTRY glutMultiButtonFunc( void (* callback)(int, int, int, int, int ) ) +{ + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMultiButtonFunc" ); + SET_CALLBACK( MultiButton ); +} + +/* + * Sets the multi-pointer motion callback for the current window + */ +void FGAPIENTRY glutMultiMotionFunc( void (* callback)(int, int, int ) ) +{ + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMultiMotionFunc" ); + SET_CALLBACK( MultiMotion ); +} + +/* + * Sets the multi-pointer passive motion callback for the current window + */ +void FGAPIENTRY glutMultiPassiveFunc( void (* callback)(int, int, int ) ) +{ + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMultiPassiveFunc" ); + SET_CALLBACK( MultiPassive ); +} + /*** END OF FILE ***/ Modified: trunk/freeglut/freeglut/src/freeglut_ext.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_ext.c 2011-03-17 04:22:55 UTC (rev 904) +++ trunk/freeglut/freeglut/src/freeglut_ext.c 2011-03-18 02:59:22 UTC (rev 905) @@ -85,6 +85,10 @@ CHECK_NAME(glutReshapeFunc); CHECK_NAME(glutKeyboardFunc); CHECK_NAME(glutMouseFunc); + CHECK_NAME(glutMultiEntryFunc); + CHECK_NAME(glutMultiMotionFunc); + CHECK_NAME(glutMultiButtonFunc); + CHECK_NAME(glutMultiPassiveFunc); CHECK_NAME(glutMotionFunc); CHECK_NAME(glutPassiveMotionFunc); CHECK_NAME(glutEntryFunc); Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2011-03-17 04:22:55 UTC (rev 904) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2011-03-18 02:59:22 UTC (rev 905) @@ -238,6 +238,11 @@ 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 ); @@ -587,6 +592,12 @@ CB_Joystick, CB_Destroy, + /* MPX-related */ + CB_MultiEntry, + CB_MultiButton, + CB_MultiMotion, + CB_MultiPassive, + /* Presently ignored */ CB_Select, CB_OverlayDisplay, @@ -970,8 +981,15 @@ */ #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 ); #if TARGET_HOST_MS_WINDOWS Modified: trunk/freeglut/freeglut/src/freeglut_main.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_main.c 2011-03-17 04:22:55 UTC (rev 904) +++ trunk/freeglut/freeglut/src/freeglut_main.c 2011-03-18 02:59:22 UTC (rev 905) @@ -512,7 +512,7 @@ /* * Returns GLUT modifier mask for the state field of an X11 event. */ -static int fghGetXModifiers( int state ) +int fghGetXModifiers( int state ) { int ret = 0; @@ -1445,7 +1445,10 @@ break; default: - fgWarning ("Unknown X event type: %d\n", event.type); + /* enter handling of Extension Events here */ + #ifdef HAVE_X11_EXTENSIONS_XINPUT2_H + fgHandleExtensionEvents( &event ); + #endif break; } } @@ -2444,6 +2447,41 @@ lRet = DefWindowProc( hWnd, uMsg, wParam, lParam ); break; +#ifdef WM_TOUCH + /* handle multi-touch messages */ + case WM_TOUCH: + { + unsigned int numInputs = (unsigned int)wParam; + unsigned int i = 0; + TOUCHINPUT* ti = (TOUCHINPUT*)malloc( sizeof(TOUCHINPUT)*numInputs); + if (GetTouchInputInfo( (HTOUCHINPUT)lParam, numInputs, ti, sizeof(TOUCHINPUT) )) { + /* Handle each contact point */ + for (i = 0; i < numInputs; ++i ) { + + POINT tp; + tp.x = TOUCH_COORD_TO_PIXEL(ti[i].x); + tp.y = TOUCH_COORD_TO_PIXEL(ti[i].y); + ScreenToClient( hWnd, &tp ); + + ti[i].dwID = ti[i].dwID * 2; + + if (ti[i].dwFlags & TOUCHEVENTF_DOWN) { + INVOKE_WCB( *window, MultiEntry, ( ti[i].dwID, GLUT_ENTERED ) ); + INVOKE_WCB( *window, MultiButton, ( ti[i].dwID, tp.x, tp.y, 0, GLUT_DOWN ) ); + } else if (ti[i].dwFlags & TOUCHEVENTF_MOVE) { + INVOKE_WCB( *window, MultiMotion, ( ti[i].dwID, tp.x, tp.y ) ); + } else if (ti[i].dwFlags & TOUCHEVENTF_UP) { + INVOKE_WCB( *window, MultiButton, ( ti[i].dwID, tp.x, tp.y, 0, GLUT_UP ) ); + INVOKE_WCB( *window, MultiEntry, ( ti[i].dwID, GLUT_LEFT ) ); + } + } + } + CloseTouchInputHandle((HTOUCHINPUT)lParam); + free( (void*)ti ); + lRet = 0; /*DefWindowProc( hWnd, uMsg, wParam, lParam );*/ + break; + } +#endif default: /* Handle unhandled messages */ lRet = DefWindowProc( hWnd, uMsg, wParam, lParam ); Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2011-03-17 04:22:55 UTC (rev 904) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2011-03-18 02:59:22 UTC (rev 905) @@ -1120,6 +1120,11 @@ window->Window.Context ); + /* register extension events _before_ window is mapped */ + #ifdef HAVE_X11_EXTENSIONS_XINPUT2_H + fgRegisterDevices( fgDisplay.Display, &(window->Window.Handle) ); + #endif + XMapWindow( fgDisplay.Display, window->Window.Handle ); XFree(visualInfo); @@ -1286,6 +1291,10 @@ /* SetWindowPos(window->Window.Handle, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); */ + /* Enable multitouch: additional flag TWF_FINETOUCH, TWF_WANTPALM */ + #ifdef WM_TOUCH + RegisterTouchWindow( window->Window.Handle, TWF_FINETOUCH | TWF_WANTPALM ); + #endif #if defined(_WIN32_WCE) ShowWindow( window->Window.Handle, SW_SHOW ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-03-18 03:22:03
|
Revision: 906 http://freeglut.svn.sourceforge.net/freeglut/?rev=906&view=rev Author: fayjf Date: 2011-03-18 03:21:56 +0000 (Fri, 18 Mar 2011) Log Message: ----------- Adding the 'subwinfix.patch' patch to set the focus in the Windows code. Includes a demo program. See e-mail from Evan Felix dated 3/17/11 4:22 PM Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/progs/demos/Makefile.am trunk/freeglut/freeglut/src/freeglut_main.c Added Paths: ----------- trunk/freeglut/freeglut/progs/demos/subwin/ trunk/freeglut/freeglut/progs/demos/subwin/Makefile.am trunk/freeglut/freeglut/progs/demos/subwin/subwin.c trunk/freeglut/freeglut/progs/demos/subwin/subwin.dsp Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2011-03-18 02:59:22 UTC (rev 905) +++ trunk/freeglut/freeglut/configure.ac 2011-03-18 03:21:56 UTC (rev 906) @@ -97,5 +97,5 @@ fi # Generate output. -AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile progs/demos/spaceball/Makefile src/Makefile]) +AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Error/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile progs/demos/spaceball/Makefile src/Makefile]) AC_OUTPUT Modified: trunk/freeglut/freeglut/progs/demos/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Makefile.am 2011-03-18 02:59:22 UTC (rev 905) +++ trunk/freeglut/freeglut/progs/demos/Makefile.am 2011-03-18 03:21:56 UTC (rev 906) @@ -1,2 +1,2 @@ EXTRA_DIST = demos.dsw -SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes smooth_opengl3 spaceball +SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes smooth_opengl3 spaceball subwin Added: trunk/freeglut/freeglut/progs/demos/subwin/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/subwin/Makefile.am (rev 0) +++ trunk/freeglut/freeglut/progs/demos/subwin/Makefile.am 2011-03-18 03:21:56 UTC (rev 906) @@ -0,0 +1,5 @@ +EXTRA_DIST = subwin.c subwin.dsp +noinst_PROGRAMS = subwin +subwin_SOURCES = subwin.c +subwin_LDFLAGS = -export-dynamic ../../../src/lib@LIBRARY@.la +subwin_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Added: trunk/freeglut/freeglut/progs/demos/subwin/subwin.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/subwin/subwin.c (rev 0) +++ trunk/freeglut/freeglut/progs/demos/subwin/subwin.c 2011-03-18 03:21:56 UTC (rev 906) @@ -0,0 +1,220 @@ +/*! \file subwin.c + \ingroup demos + + This program is a test harness for the subwindows + in OpenGLUT. Based Originally on shape.c demo. + + \author Written by Evan Felix February 2011 + + \author Portions Copyright (C) 2004, the OpenGLUT project contributors. <br> + OpenGLUT branched from freeglut in February, 2004. + + \image html openglut_subwin.png OpenGLUT Sub Window Demonstration + \include demos/subwin/subwin.c +*/ + +#include <GL/freeglut.h> + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#ifdef _MSC_VER +/* DUMP MEMORY LEAKS */ +#include <crtdbg.h> +#endif + +#define MAXSTR 16 +char **strings; +int mainwin; + + +/*! + Does printf()-like work using freeglut/OpenGLUT + glutBitmapString(). Uses a fixed font. Prints + at the indicated row/column position. + + Limitation: Cannot address pixels. + Limitation: Renders in screen coords, not model coords. +*/ +static void shapesPrintf (int row, int col, const char *fmt, ...) +{ + static char buf[256]; + int viewport[4]; + void *font = GLUT_BITMAP_9_BY_15; + va_list args; + + va_start(args, fmt); +#if defined(WIN32) && !defined(__CYGWIN__) + (void) _vsnprintf (buf, sizeof(buf), fmt, args); +#else + (void) vsnprintf (buf, sizeof(buf), fmt, args); +#endif + va_end(args); + + glGetIntegerv(GL_VIEWPORT,viewport); + + glPushMatrix(); + glLoadIdentity(); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + + glOrtho(0,viewport[2],0,viewport[3],-1,1); + + glRasterPos2i + ( + glutBitmapWidth(font, ' ') * col, + - glutBitmapHeight(font) * (row+2) + viewport[3] + ); + glutBitmapString (font, (unsigned char*)buf); + + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + +/* GLUT callback Handlers */ + +static void +resize(int width, int height) +{ + + glViewport(0, 0, width, height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluOrtho2D(0, width, 0, height); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity() ; +} + +static void display(void) +{ + + int win = glutGetWindow(); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glColor3d(1,0,0); + + glDisable(GL_LIGHTING); + glColor3d(0.1,0.1,0.4); + + if (win == mainwin) { + shapesPrintf (2, 3, "Move The mounse into different windows"); + shapesPrintf (3, 3, "pressing keys will add to the string"); + } + shapesPrintf (5, 3, "Window: %d", win); + shapesPrintf (6, 3, "String: %s", strings[win]); + + glutSwapBuffers(); +} + + +static void +key(unsigned char key, int x, int y) +{ + char *s,str[2]; + int win = glutGetWindow(); + + switch (key) + { + case 27 : + case 'Q': + case 'q': glutLeaveMainLoop () ; break; + + default: + s=strings[win]; + if (strlen(s)+1>MAXSTR) { + s[0]=0; + } + str[0]=key; + str[1]=0; + strcat(s,str); + break; + } + + glutPostRedisplay(); +} + +static void special (int key, int x, int y) +{ + switch (key) + { + default: + break; + } + glutPostRedisplay(); +} + + +static void +entry(int state) +{ + int win = glutGetWindow(); + printf("Win: %d, state: %d\n",win,state); +} + +/* Program entry point */ + +int +main(int argc, char *argv[]) +{ + int winmax,sw1,sw2,i; + + glutInitWindowSize(640,480); + glutInitWindowPosition(40,40); + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); + + glutCreateWindow("OpenGLUT Sub Windows"); + + glutReshapeFunc(resize); + glutDisplayFunc(display); + glutKeyboardFunc(key); + glutSpecialFunc(special); + glutEntryFunc(entry); + + glutSetOption ( GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION ) ; + + glClearColor(1,1,1,1); + + mainwin = glutGetWindow(); + winmax=mainwin; + + sw1=glutCreateSubWindow(mainwin,4,240,314,236); + glutReshapeFunc(resize); + glutDisplayFunc(display); + glutKeyboardFunc(key); + glutSpecialFunc(special); + glutEntryFunc(entry); + glClearColor(0.7,0.7,0.7,1); + winmax = sw1 > winmax ? sw1 : winmax; + + sw2=glutCreateSubWindow(mainwin,328,240,314,236); + glutReshapeFunc(resize); + glutDisplayFunc(display); + glutKeyboardFunc(key); + glutSpecialFunc(special); + glutEntryFunc(entry); + glClearColor(0.7,0.7,0.7,1); + winmax = sw2 > winmax ? sw2 : winmax; + + strings = malloc(sizeof(char *)*(winmax+1)); + for (i=0;i<winmax+1;i++) { + strings[i] = malloc(sizeof(char)*MAXSTR+1); + strings[i][0]=0; + } + + glutMainLoop(); + +#ifdef _MSC_VER + /* DUMP MEMORY LEAK INFORMATION */ + _CrtDumpMemoryLeaks () ; +#endif + + return EXIT_SUCCESS; +} Added: trunk/freeglut/freeglut/progs/demos/subwin/subwin.dsp =================================================================== --- trunk/freeglut/freeglut/progs/demos/subwin/subwin.dsp (rev 0) +++ trunk/freeglut/freeglut/progs/demos/subwin/subwin.dsp 2011-03-18 03:21:56 UTC (rev 906) @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="subwin" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=subwin - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "subwin.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "subwin.mak" CFG="subwin - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "subwin - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "subwin - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "subwin - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../Release" + +!ELSEIF "$(CFG)" == "subwin - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../Debug" + +!ENDIF + +# Begin Target + +# Name "subwin - Win32 Release" +# Name "subwin - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\subwin.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project Modified: trunk/freeglut/freeglut/src/freeglut_main.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_main.c 2011-03-18 02:59:22 UTC (rev 905) +++ trunk/freeglut/freeglut/src/freeglut_main.c 2011-03-18 03:21:56 UTC (rev 906) @@ -1921,6 +1921,7 @@ fgUpdateMenuHighlight( window->ActiveMenu ); break; } + SetFocus(window->Window.Handle); fgState.Modifiers = fghGetWin32Modifiers( ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-03-25 02:51:09
|
Revision: 914 http://freeglut.svn.sourceforge.net/freeglut/?rev=914&view=rev Author: fayjf Date: 2011-03-25 02:50:57 +0000 (Fri, 25 Mar 2011) Log Message: ----------- Fixing the build on *nix per e-mail from John Tsiombikas dated 3/22/11 at 2:26 PM Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/progs/demos/subwin/subwin.c Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2011-03-23 12:40:54 UTC (rev 913) +++ trunk/freeglut/freeglut/configure.ac 2011-03-25 02:50:57 UTC (rev 914) @@ -98,5 +98,22 @@ fi # Generate output. -AC_CONFIG_FILES([Makefile doc/Makefile include/GL/Makefile include/Makefile progs/Makefile progs/demos/CallbackMaker/Makefile progs/demos/Fractals/Makefile progs/demos/Fractals_random/Makefile progs/demos/Lorenz/Makefile progs/demos/Makefile progs/demos/One/Makefile progs/demos/shapes/Makefile progs/demos/smooth_opengl3/Makefile progs/demos/spaceball/Makefile src/Makefile]) +AC_CONFIG_FILES([ + Makefile + doc/Makefile + include/GL/Makefile + include/Makefile + progs/Makefile + progs/demos/CallbackMaker/Makefile + progs/demos/Fractals/Makefile + progs/demos/Fractals_random/Makefile + progs/demos/Lorenz/Makefile + progs/demos/Makefile + progs/demos/One/Makefile + progs/demos/shapes/Makefile + progs/demos/smooth_opengl3/Makefile + progs/demos/spaceball/Makefile + progs/demos/subwin/Makefile + src/Makefile +]) AC_OUTPUT Modified: trunk/freeglut/freeglut/progs/demos/subwin/subwin.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/subwin/subwin.c 2011-03-23 12:40:54 UTC (rev 913) +++ trunk/freeglut/freeglut/progs/demos/subwin/subwin.c 2011-03-25 02:50:57 UTC (rev 914) @@ -85,7 +85,7 @@ glMatrixMode(GL_PROJECTION); glLoadIdentity(); - //gluOrtho2D(0, width, 0, height); + /*gluOrtho2D(0, width, 0, height);*/ glMatrixMode(GL_MODELVIEW); glLoadIdentity() ; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-09-04 19:38:38
|
Revision: 929 http://freeglut.svn.sourceforge.net/freeglut/?rev=929&view=rev Author: fayjf Date: 2011-09-04 19:38:32 +0000 (Sun, 04 Sep 2011) Log Message: ----------- Putting in Diederick Niehorster's fullstreen patch per e-mail from him dated 6/9/2011, updated 9/4/2011 with modified patch. Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/src/freeglut_ext.c trunk/freeglut/freeglut/src/freeglut_internal.h trunk/freeglut/freeglut/src/freeglut_main.c trunk/freeglut/freeglut/src/freeglut_state.c trunk/freeglut/freeglut/src/freeglut_structure.c trunk/freeglut/freeglut/src/freeglut_window.c trunk/freeglut/freeglut/src/freeglutdll.def Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2011-09-04 03:49:11 UTC (rev 928) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2011-09-04 19:38:32 UTC (rev 929) @@ -127,6 +127,7 @@ * Window management functions, see freeglut_window.c */ FGAPI void FGAPIENTRY glutFullScreenToggle( void ); +FGAPI void FGAPIENTRY glutLeaveFullScreen( void ); /* * Window-specific callback functions, see freeglut_callbacks.c Modified: trunk/freeglut/freeglut/src/freeglut_ext.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_ext.c 2011-09-04 03:49:11 UTC (rev 928) +++ trunk/freeglut/freeglut/src/freeglut_ext.c 2011-09-04 19:38:32 UTC (rev 929) @@ -166,6 +166,7 @@ CHECK_NAME(glutWMCloseFunc); CHECK_NAME(glutMenuDestroyFunc); CHECK_NAME(glutFullScreenToggle); + CHECK_NAME(glutLeaveFullScreen); CHECK_NAME(glutSetOption); CHECK_NAME(glutGetModeValues); CHECK_NAME(glutSetWindowData); Modified: trunk/freeglut/freeglut/src/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/freeglut_internal.h 2011-09-04 03:49:11 UTC (rev 928) +++ trunk/freeglut/freeglut/src/freeglut_internal.h 2011-09-04 19:38:32 UTC (rev 929) @@ -449,10 +449,16 @@ typedef struct tagSFG_WindowState SFG_WindowState; struct tagSFG_WindowState { + /* Note that on Windows, sizes always refer to the client area, thus without the window decorations */ int Width; /* Window's width in pixels */ int Height; /* The same about the height */ +#if TARGET_HOST_POSIX_X11 int OldWidth; /* Window width from before a resize */ int OldHeight; /* " height " " " " */ +#elif TARGET_HOST_MS_WINDOWS + RECT OldRect; /* window rect - stored before the window is made fullscreen */ + DWORD OldStyle; /* window style - stored before the window is made fullscreen */ +#endif GLboolean Redisplay; /* Do we have to redisplay? */ GLboolean Visible; /* Is the window visible now */ @@ -926,6 +932,17 @@ void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback, SFG_Enumerator* enumerator ); +/* + * Helper functions for getting client area from the window rect + * and the window rect from the client area given the style of the window + * (or a valid window pointer from which the style can be queried). + */ +void fghComputeWindowRectFromClientArea_UseStyle ( const DWORD windowStyle , RECT *clientRect, BOOL posIsOutside ); +void fghComputeWindowRectFromClientArea_QueryWindow( const SFG_Window *window, RECT *clientRect, BOOL posIsOutside ); +void fghComputeClientAreaFromWindowRect ( const SFG_Window *window, RECT *windowRect, BOOL wantPosOutside ); +RECT fghGetClientArea ( const SFG_Window *window, BOOL wantPosOutside ); +void fghGetBorderWidth(const DWORD windowStyle, int* xBorderWidth, int* yBorderWidth); + /* * fgWindowByHandle returns a (SFG_Window *) value pointing to the * first window in the queue matching the specified window handle. Modified: trunk/freeglut/freeglut/src/freeglut_main.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_main.c 2011-09-04 03:49:11 UTC (rev 928) +++ trunk/freeglut/freeglut/src/freeglut_main.c 2011-09-04 19:38:32 UTC (rev 929) @@ -109,8 +109,7 @@ #elif TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) { - RECT winRect; - int x, y, w, h; + RECT windowRect; /* * For windowed mode, get the current position of the @@ -119,51 +118,43 @@ */ /* "GetWindowRect" returns the pixel coordinates of the outside of the window */ - GetWindowRect( window->Window.Handle, &winRect ); - x = winRect.left; - y = winRect.top; - w = width; - h = height; + GetWindowRect( window->Window.Handle, &windowRect ); - if ( window->Parent == NULL ) - { - if ( ! window->IsMenu && (window != fgStructure.GameModeWindow) && - !( fgState.DisplayMode & GLUT_BORDERLESS )) - { - w += GetSystemMetrics( SM_CXSIZEFRAME ) * 2; - h += GetSystemMetrics( SM_CYSIZEFRAME ) * 2 + - GetSystemMetrics( SM_CYCAPTION ); - } - } + /* Create rect in FreeGLUT format, (X,Y) topleft outside window, WxH of client area */ + windowRect.right = windowRect.left+width; + windowRect.bottom = windowRect.top+height; + + if (window->Parent == NULL) + /* get the window rect from this to feed to SetWindowPos, correct for window decorations */ + fghComputeWindowRectFromClientArea_QueryWindow(window,&windowRect,TRUE); else { + /* correct rect for position client area of parent window + * (SetWindowPos input for child windows is in coordinates + * relative to the parent's client area). + * Child windows don't have decoration, so no need to correct + * for them. + */ RECT parentRect; - GetWindowRect( window->Parent->Window.Handle, &parentRect ); - x -= parentRect.left + GetSystemMetrics( SM_CXSIZEFRAME ) * 2; - y -= parentRect.top + GetSystemMetrics( SM_CYSIZEFRAME ) * 2 + - GetSystemMetrics( SM_CYCAPTION ); + parentRect = fghGetClientArea( window->Parent, FALSE ); + windowRect.left -= parentRect.left; + windowRect.right -= parentRect.left; + windowRect.top -= parentRect.top; + windowRect.bottom -= parentRect.top; } - - /* - * SWP_NOACTIVATE Do not activate the window - * SWP_NOOWNERZORDER Do not change position in z-order - * SWP_NOSENDCHANGING Supress WM_WINDOWPOSCHANGING message - * SWP_NOZORDER Retains the current Z order (ignore 2nd param) - */ - + + /* Do the actual resizing */ SetWindowPos( window->Window.Handle, HWND_TOP, - x, y, w, h, + windowRect.left, windowRect.top, + windowRect.right - windowRect.left, + windowRect.bottom- windowRect.top, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING | SWP_NOZORDER ); } #endif - /* - * XXX Should update {window->State.OldWidth, window->State.OldHeight} - * XXX to keep in lockstep with POSIX_X11 code. - */ if( FETCH_WCB( *window, Reshape ) ) INVOKE_WCB( *window, Reshape, ( width, height ) ); else Modified: trunk/freeglut/freeglut/src/freeglut_state.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_state.c 2011-09-04 03:49:11 UTC (rev 928) +++ trunk/freeglut/freeglut/src/freeglut_state.c 2011-09-04 19:38:32 UTC (rev 929) @@ -64,16 +64,6 @@ } #endif -/* Check if the window is in full screen state. */ -static int fghCheckFullScreen(void) -{ -#if TARGET_HOST_POSIX_X11 - return fgStructure.CurrentWindow->State.IsFullscreen; -#else - return 0; -#endif -} - /* -- INTERFACE FUNCTIONS -------------------------------------------------- */ /* @@ -458,26 +448,12 @@ freeglut_return_val_if_fail( fgStructure.CurrentWindow != NULL, 0 ); - /* - * We need to call GetWindowRect() first... - * (this returns the pixel coordinates of the outside of the window) - */ +#if defined(_WIN32_WCE) GetWindowRect( fgStructure.CurrentWindow->Window.Handle, &winRect ); +#else + winRect = fghGetClientArea(fgStructure.CurrentWindow, FALSE); +#endif /* defined(_WIN32_WCE) */ - /* ...then we've got to correct the results we've just received... */ - -#if !defined(_WIN32_WCE) - if ( ( fgStructure.GameModeWindow != fgStructure.CurrentWindow ) && ( fgStructure.CurrentWindow->Parent == NULL ) && - ( ! fgStructure.CurrentWindow->IsMenu ) && - !( fgState.DisplayMode & GLUT_BORDERLESS )) - { - winRect.left += GetSystemMetrics( SM_CXSIZEFRAME ); - winRect.right -= GetSystemMetrics( SM_CXSIZEFRAME ); - winRect.top += GetSystemMetrics( SM_CYSIZEFRAME ) + GetSystemMetrics( SM_CYCAPTION ); - winRect.bottom -= GetSystemMetrics( SM_CYSIZEFRAME ); - } -#endif /* !defined(_WIN32_WCE) */ - switch( eWhat ) { case GLUT_WINDOW_X: return winRect.left ; @@ -489,21 +465,32 @@ break; case GLUT_WINDOW_BORDER_WIDTH : -#if defined(_WIN32_WCE) - return 0; -#else - if ( fgState.DisplayMode & GLUT_BORDERLESS ) - return 0; - return GetSystemMetrics( SM_CXSIZEFRAME ); -#endif /* !defined(_WIN32_WCE) */ - case GLUT_WINDOW_HEADER_HEIGHT : #if defined(_WIN32_WCE) return 0; #else - if ( fgState.DisplayMode & GLUT_BORDERLESS ) - return 0; - return GetSystemMetrics( SM_CYCAPTION ); + { + DWORD windowStyle; + + if (fgStructure.CurrentWindow && fgStructure.CurrentWindow->Window.Handle) + windowStyle = GetWindowLong(fgStructure.CurrentWindow->Window.Handle, GWL_STYLE); + else + /* If no window, return sizes for a default window with title bar and border */ + windowStyle = WS_OVERLAPPEDWINDOW; + + switch( eWhat ) + { + case GLUT_WINDOW_BORDER_WIDTH: + { + int xBorderWidth, yBorderWidth; + fghGetBorderWidth(windowStyle, &xBorderWidth, &yBorderWidth); + return xBorderWidth; + } + case GLUT_WINDOW_HEADER_HEIGHT: + /* Need to query for WS_MAXIMIZEBOX to see if we have a title bar, the WS_CAPTION query is also true for a WS_DLGFRAME only... */ + return (windowStyle & WS_MAXIMIZEBOX)? GetSystemMetrics( SM_CYCAPTION ) : 0; + } + } #endif /* defined(_WIN32_WCE) */ case GLUT_DISPLAY_MODE_POSSIBLE: @@ -559,7 +546,7 @@ return fgState.DirectContext; case GLUT_FULL_SCREEN: - return fghCheckFullScreen(); + return fgStructure.CurrentWindow->State.IsFullscreen; case GLUT_AUX: return fgState.AuxiliaryBufferNumber; Modified: trunk/freeglut/freeglut/src/freeglut_structure.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_structure.c 2011-09-04 03:49:11 UTC (rev 928) +++ trunk/freeglut/freeglut/src/freeglut_structure.c 2011-09-04 19:38:32 UTC (rev 929) @@ -79,7 +79,9 @@ /* Initialize the object properties */ window->ID = ++fgStructure.WindowID; +#if TARGET_HOST_POSIX_X11 window->State.OldHeight = window->State.OldWidth = -1; +#endif fgListInit( &window->Children ); if( parent ) Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2011-09-04 03:49:11 UTC (rev 928) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2011-09-04 19:38:32 UTC (rev 929) @@ -850,12 +850,167 @@ #if TARGET_HOST_MS_WINDOWS +/* Computes position of corners of window Rect (outer position including + * decorations) based on the provided client rect and based on the style + * of the window in question. + * If posIsOutside is set to true, the input client Rect is taken to follow + * freeGLUT's window specification convention in which the top-left corner + * is at the outside of the window, while the size + * (rect.right-rect.left,rect.bottom-rect.top) is the size of the drawable + * area. + */ +void fghComputeWindowRectFromClientArea_UseStyle( const DWORD windowStyle, RECT *clientRect, BOOL posIsOutside ) +{ + int xBorderWidth = 0, yBorderWidth = 0; + + /* If window has title bar, correct rect for it */ + if (windowStyle & WS_MAXIMIZEBOX) /* Need to query for WS_MAXIMIZEBOX to see if we have a title bar, the WS_CAPTION query is also true for a WS_DLGFRAME only... */ + if (posIsOutside) + clientRect->bottom += GetSystemMetrics( SM_CYCAPTION ); + else + clientRect->top -= GetSystemMetrics( SM_CYCAPTION ); + + /* get width of window's borders (frame), correct rect for it. + * Note, borders can be of zero width if style does not specify borders + */ + fghGetBorderWidth(windowStyle, &xBorderWidth, &yBorderWidth); + if (posIsOutside) + { + clientRect->right += xBorderWidth * 2; + clientRect->bottom += yBorderWidth * 2; + } + else + { + clientRect->left -= xBorderWidth; + clientRect->right += xBorderWidth; + clientRect->top -= yBorderWidth; + clientRect->bottom += yBorderWidth; + } +} + +/* Computes position of corners of window Rect (outer position including + * decorations) based on the provided client rect and based on the style + * of the window in question. If the window pointer or the window handle + * is NULL, a fully decorated window (caption and border) is assumed. + * Furthermore, if posIsOutside is set to true, the input client Rect is + * taken to follow freeGLUT's window specification convention in which the + * top-left corner is at the outside of the window, while the size + * (rect.right-rect.left,rect.bottom-rect.top) is the size of the drawable + * area. +*/ +void fghComputeWindowRectFromClientArea_QueryWindow( const SFG_Window *window, RECT *clientRect, BOOL posIsOutside ) +{ + DWORD windowStyle = 0; + + if (window && window->Window.Handle) + windowStyle = GetWindowLong(window->Window.Handle, GWL_STYLE); + else + windowStyle = WS_OVERLAPPEDWINDOW; + + fghComputeWindowRectFromClientArea_UseStyle(windowStyle, clientRect, posIsOutside); +} + +/* Computes position of corners of client area (drawable area) of a window + * based on the provided window Rect (outer position including decorations) + * and based on the style of the window in question. If the window pointer + * or the window handle is NULL, a fully decorated window (caption and + * border) is assumed. + * Furthermore, if wantPosOutside is set to true, the output client Rect + * will follow freeGLUT's window specification convention in which the + * top-left corner is at the outside of the window, the size + * (rect.right-rect.left,rect.bottom-rect.top) is the size of the drawable + * area. + */ +void fghComputeClientAreaFromWindowRect( const SFG_Window *window, RECT *windowRect, BOOL wantPosOutside ) +{ + DWORD windowStyle = 0; + int xBorderWidth = 0, yBorderWidth = 0; + + if (window && window->Window.Handle) + windowStyle = GetWindowLong(window->Window.Handle, GWL_STYLE); + else + windowStyle = WS_OVERLAPPEDWINDOW; + + /* If window has title bar, correct rect for it */ + if (windowStyle & WS_MAXIMIZEBOX) /* Need to query for WS_MAXIMIZEBOX to see if we have a title bar, the WS_CAPTION query is also true for a WS_DLGFRAME only... */ + if (wantPosOutside) + windowRect->bottom -= GetSystemMetrics( SM_CYCAPTION ); + else + windowRect->top += GetSystemMetrics( SM_CYCAPTION ); + + /* get width of window's borders (frame), correct rect for it. + * Note, borders can be of zero width if style does not specify borders + */ + fghGetBorderWidth(windowStyle, &xBorderWidth, &yBorderWidth); + if (wantPosOutside) + { + windowRect->right -= xBorderWidth * 2; + windowRect->bottom -= yBorderWidth * 2; + } + else + { + windowRect->left += xBorderWidth; + windowRect->right -= xBorderWidth; + windowRect->top += yBorderWidth; + windowRect->bottom -= yBorderWidth; + } +} + +/* Gets the rect describing the client area (drawable area) of the + * specified window. + * Returns an empty rect if window pointer or window handle is NULL. + * If wantPosOutside is set to true, the output client Rect + * will follow freeGLUT's window specification convention in which the + * top-left corner is at the outside of the window, while the size + * (rect.right-rect.left,rect.bottom-rect.top) is the size of the drawable + * area. + */ +RECT fghGetClientArea( const SFG_Window *window, BOOL wantPosOutside ) +{ + RECT windowRect = {0,0,0,0}; + + freeglut_return_val_if_fail((window && window->Window.Handle),windowRect); + + /* + * call GetWindowRect() + * (this returns the pixel coordinates of the outside of the window) + */ + GetWindowRect( window->Window.Handle, &windowRect ); + + /* Then correct the results */ + fghComputeClientAreaFromWindowRect(window, &windowRect, wantPosOutside); + + return windowRect; +} + +/* Returns the width of the window borders based on the window's style. + */ +void fghGetBorderWidth(const DWORD windowStyle, int* xBorderWidth, int* yBorderWidth) +{ + if (windowStyle & WS_THICKFRAME) + { + *xBorderWidth = GetSystemMetrics(SM_CXSIZEFRAME); + *yBorderWidth = GetSystemMetrics(SM_CYSIZEFRAME); + } + else if (windowStyle & WS_DLGFRAME) + { + *xBorderWidth = GetSystemMetrics(SM_CXFIXEDFRAME); + *yBorderWidth = GetSystemMetrics(SM_CYFIXEDFRAME); + } + else + { + *xBorderWidth = 0; + *yBorderWidth = 0; + } +} + #if(WINVER >= 0x500) -typedef struct { +typedef struct +{ int *x; int *y; const char *name; -}m_proc_t ; +} m_proc_t; static BOOL CALLBACK m_proc(HMONITOR mon, HDC hdc, @@ -869,7 +1024,7 @@ res=GetMonitorInfo(mon,(LPMONITORINFO)&info); if( res ) { - if( !strcmp(dp->name,info.szDevice) ) + if( strcmp(dp->name,info.szDevice)==0 ) { *(dp->x)=info.rcMonitor.left; *(dp->y)=info.rcMonitor.top; @@ -880,13 +1035,18 @@ } /* - * this function is only used in fgOpenWindow. Currently it only sets - * its output parameters, if the DisplayName is set in fgDisplay - * (and if it is able to recognize the display) + * this function returns the origin of the screen identified by + * fgDisplay.DisplayName, and 0 otherwise. + * This is used in fgOpenWindow to open the gamemode window on the screen + * identified by the -display command line argument. The function should + * not be called otherwise. */ static void get_display_origin(int *xp,int *yp) { + *xp = 0; + *yp = 0; + if( fgDisplay.DisplayName ) { m_proc_t st; @@ -894,13 +1054,16 @@ st.y=yp; st.name=fgDisplay.DisplayName; EnumDisplayMonitors(0,0,m_proc,(LPARAM)&st); - } + } } #else #pragma message( "-display parameter only works if compiled with WINVER >= 0x0500") static void get_display_origin(int *xp,int *yp) { + *xp = 0; + *yp = 0; + if( fgDisplay.DisplayName ) { fgWarning( "for working -display support FreeGLUT must be compiled with WINVER >= 0x0500"); @@ -1139,16 +1302,16 @@ #elif TARGET_HOST_MS_WINDOWS WNDCLASS wc; - DWORD flags; + DWORD flags = 0; DWORD exFlags = 0; ATOM atom; - int WindowStyle = 0; /* Grab the window class we have registered on glutInit(): */ atom = GetClassInfo( fgDisplay.Instance, _T("FREEGLUT"), &wc ); FREEGLUT_INTERNAL_ERROR_EXIT ( atom, "Window Class Info Not Found", "fgOpenWindow" ); + /* Determine window style flags*/ if( gameMode ) { FREEGLUT_INTERNAL_ERROR_EXIT ( window->Parent == NULL, @@ -1163,64 +1326,100 @@ } else { - int worig = w, horig = h; + flags = WS_CLIPSIBLINGS | WS_CLIPCHILDREN; -#if !defined(_WIN32_WCE) - if ( ( ! isSubWindow ) && ( ! window->IsMenu ) ) - { - /* - * Update the window dimensions, taking account of window - * decorations. "freeglut" is to create the window with the - * outside of its border at (x,y) and with dimensions (w,h). - */ - w += (GetSystemMetrics( SM_CXSIZEFRAME ) )*2; - h += (GetSystemMetrics( SM_CYSIZEFRAME ) )*2 + - GetSystemMetrics( SM_CYCAPTION ); - } -#endif /* defined(_WIN32_WCE) */ - - if( ! positionUse ) - { - x = CW_USEDEFAULT; - y = CW_USEDEFAULT; - } - /* setting State.Width/Height to call resize callback later */ - if( ! sizeUse ) - { - if( ! window->IsMenu ) - { - w = CW_USEDEFAULT; - h = CW_USEDEFAULT; - } - else /* fail safe - Windows can make a window of size (0, 0) */ - w = h = 300; /* default window size */ - window->State.Width = window->State.Height = -1; - } - else - { - window->State.Width = worig; - window->State.Height = horig; - } - /* * There's a small difference between creating the top, child and - * game mode windows + * menu windows */ - flags = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE; - if ( window->IsMenu ) { flags |= WS_POPUP; exFlags |= WS_EX_TOOLWINDOW; } -#if !defined(_WIN32_WCE) +#if defined(_WIN32_WCE) + /* no decorations for windows CE */ +#else + /* if this is not a subwindow (child), set its style based on the requested display mode */ else if( window->Parent == NULL ) - flags |= WS_OVERLAPPEDWINDOW; + if ( fgState.DisplayMode & GLUT_BORDERLESS ) + { + /* no window decorations needed */ + } + else if ( fgState.DisplayMode & GLUT_CAPTIONLESS ) + /* only window decoration is a border, no title bar or buttons */ + flags |= WS_DLGFRAME; + else + /* window decoration are a border, title bar and buttons. + * NB: we later query whether the window has a title bar or + * not by testing for the maximize button, as the test for + * WS_CAPTION can be true without the window having a title + * bar. This style WS_OVERLAPPEDWINDOW gives you a maximize + * button. */ + flags |= WS_OVERLAPPEDWINDOW; #endif else + /* subwindows always have no decoration, but are marked as a child window to the OS */ flags |= WS_CHILD; } + /* determine window size and position */ + if( gameMode ) + { + /* if in gamemode, query the origin of specified by the -display + * parameter command line (if any) and offset the upper-left corner + * of the window so we create the window on that screen. + * The -display argument doesn't do anything if not trying to enter + * gamemode. + */ + int xoff=0, yoff=0; + get_display_origin(&xoff,&yoff); + x += xoff; + y += yoff; + } + if( !positionUse ) + { + x = CW_USEDEFAULT; + y = CW_USEDEFAULT; + } + if( !sizeUse ) + { + if( ! window->IsMenu ) + { + w = CW_USEDEFAULT; + h = CW_USEDEFAULT; + } + else /* fail safe - Windows can make a window of size (0, 0) */ + w = h = 300; /* default window size */ + } + /* store requested client area width and height */ + window->State.Width = w; + window->State.Height = h; + +#if !defined(_WIN32_WCE) /* no decorations for windows CE */ + if( sizeUse ) + { + RECT windowRect; + /* + * Update the window dimensions, taking the window decorations + * into account. FreeGLUT is to create the window with the + * topleft outside corner at (x,y) and with client area + * dimensions (w,h). + * note: don't need to do this when w=h=CW_USEDEFAULT, so in the + * if( sizeUse ) here is convenient. + */ + windowRect.left = x; + windowRect.top = y; + windowRect.right = x+w; + windowRect.bottom = y+h; + + fghComputeWindowRectFromClientArea_UseStyle(flags,&windowRect,TRUE); + + w = windowRect.right - windowRect.left; + h = windowRect.bottom- windowRect.top; + } +#endif /* !defined(_WIN32_WCE) */ + #if defined(_WIN32_WCE) { wchar_t* wstr = fghWstrFromStr(title); @@ -1246,29 +1445,28 @@ UpdateWindow(window->Window.Handle); } #else - { - /* xoff and yoff are used to place window relative to current display */ - /* The operation of gamemode also depends on this */ - int xoff=0,yoff=0; - get_display_origin(&xoff,&yoff); - - window->Window.Handle = CreateWindowEx( - exFlags, - _T("FREEGLUT"), - title, - flags, - x+xoff, y+yoff, w, h, - (HWND) window->Parent == NULL ? NULL : window->Parent->Window.Handle, - (HMENU) NULL, - fgDisplay.Instance, - (LPVOID) window - ); - } + window->Window.Handle = CreateWindowEx( + exFlags, + _T("FREEGLUT"), + title, + flags, + x, y, w, h, + (HWND) window->Parent == NULL ? NULL : window->Parent->Window.Handle, + (HMENU) NULL, + fgDisplay.Instance, + (LPVOID) window + ); #endif /* defined(_WIN32_WCE) */ if( !( window->Window.Handle ) ) fgError( "Failed to create a window (%s)!", title ); +#if !defined(_WIN32_WCE) + /* Need to set requested style again, apparently Windows doesn't listen when requesting windows without title bar or borders */ + SetWindowLong(window->Window.Handle, GWL_STYLE, flags); + SetWindowPos(window->Window.Handle, HWND_TOP, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); +#endif /* defined(_WIN32_WCE) */ + /* Make a menu window always on top - fix Feature Request 947118 */ if( window->IsMenu || gameMode ) SetWindowPos( @@ -1278,23 +1476,6 @@ SWP_NOMOVE | SWP_NOSIZE ); - /* Hack to remove the caption (title bar) and/or border - * and all the system menu controls. - */ - WindowStyle = GetWindowLong(window->Window.Handle, GWL_STYLE); - if ( fgState.DisplayMode & GLUT_CAPTIONLESS ) - { - SetWindowLong ( window->Window.Handle, GWL_STYLE, - WindowStyle & ~(WS_DLGFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)); - } - else if ( fgState.DisplayMode & GLUT_BORDERLESS ) - { - SetWindowLong ( window->Window.Handle, GWL_STYLE, - WindowStyle & ~(WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_DLGFRAME | WS_SIZEBOX)); - } -/* SetWindowPos(window->Window.Handle, NULL, 0, 0, 0, 0, - SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); */ - /* Enable multitouch: additional flag TWF_FINETOUCH, TWF_WANTPALM */ #ifdef WM_TOUCH if (fghRegisterTouchWindow == (pRegisterTouchWindow)0xDEADBEEF) @@ -1680,7 +1861,7 @@ if (glutGet(GLUT_FULL_SCREEN)) { /* Leave full screen state before resizing. */ - glutFullScreenToggle(); + glutLeaveFullScreen(); } fgStructure.CurrentWindow->State.NeedToResize = GL_TRUE; @@ -1699,7 +1880,7 @@ if (glutGet(GLUT_FULL_SCREEN)) { /* Leave full screen state before moving. */ - glutFullScreenToggle(); + glutLeaveFullScreen(); } #if TARGET_HOST_POSIX_X11 @@ -1788,6 +1969,21 @@ win = fgStructure.CurrentWindow; + if (win->Parent) + { + /* Child windows cannot be made fullscreen, consistent with GLUT's behavior + * Also, what would it mean for a child window to be fullscreen, given that it + * is confined to its parent? + */ + fgWarning("glutFullScreen called on a child window, ignoring..."); + return; + } + else if (fgStructure.GameModeWindow != NULL && fgStructure.GameModeWindow->ID==win->ID) + { + /* Ignore fullscreen call on GameMode window, those are always fullscreen already */ + return; + } + #if TARGET_HOST_POSIX_X11 if(!glutGet(GLUT_FULL_SCREEN)) { if(fghToggleFullscreen() != -1) { @@ -1799,34 +1995,50 @@ if (glutGet(GLUT_FULL_SCREEN)) { - /* Leave full screen state before resizing. */ - glutFullScreenToggle(); + /* Leave full screen state before entering fullscreen again (resizing?) */ + glutLeaveFullScreen(); } { + DWORD s; RECT rect; + HMONITOR hMonitor; + MONITORINFO mi; - /* For fullscreen mode, force the top-left corner to 0,0 - * and adjust the window rectangle so that the client area - * covers the whole screen. + /* For fullscreen mode, first remove all window decoration + * and set style to popup so it will overlap the taskbar + * then force to maximize on the screen on which it has the most + * overlap. */ - rect.left = 0; - rect.top = 0; - get_display_origin(&rect.left,&rect.top); - rect.right = fgDisplay.ScreenWidth+rect.left; - rect.bottom = fgDisplay.ScreenHeight+rect.top; + + /* store current window rect */ + GetWindowRect( win->Window.Handle, &win->State.OldRect ); - AdjustWindowRect ( &rect, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | - WS_CLIPCHILDREN, FALSE ); + /* store current window style */ + win->State.OldStyle = s = GetWindowLong(win->Window.Handle, GWL_STYLE); + /* remove decorations from style and add popup style*/ + s &= ~WS_OVERLAPPEDWINDOW; + s |= WS_POPUP; + SetWindowLong(win->Window.Handle, GWL_STYLE, s); + SetWindowPos(win->Window.Handle, HWND_TOP, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); + + /* For fullscreen mode, find the monitor that is covered the most + * by the window and get its rect as the resize target. + */ + hMonitor= MonitorFromRect(&win->State.OldRect, MONITOR_DEFAULTTONEAREST); + mi.cbSize = sizeof(mi); + GetMonitorInfo(hMonitor, &mi); + rect = mi.rcMonitor; + /* + * then resize window * SWP_NOACTIVATE Do not activate the window * SWP_NOOWNERZORDER Do not change position in z-order - * SWP_NOSENDCHANGING Supress WM_WINDOWPOSCHANGING message + * SWP_NOSENDCHANGING Suppress WM_WINDOWPOSCHANGING message * SWP_NOZORDER Retains the current Z order (ignore 2nd param) */ - SetWindowPos( fgStructure.CurrentWindow->Window.Handle, HWND_TOP, rect.left, @@ -1843,6 +2055,51 @@ } /* + * If we are fullscreen, resize the current window back to its original size + */ +void FGAPIENTRY glutLeaveFullScreen( void ) +{ + SFG_Window *win; + + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutFullScreen" ); + FREEGLUT_EXIT_IF_NO_WINDOW ( "glutFullScreen" ); + + win = fgStructure.CurrentWindow; + +#if TARGET_HOST_POSIX_X11 + if(glutGet(GLUT_FULL_SCREEN)) { + if(fghToggleFullscreen() != -1) { + win->State.IsFullscreen = GL_FALSE; + } + } + +#elif TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) /* FIXME: what about WinCE */ + if (!glutGet(GLUT_FULL_SCREEN)) + { + /* nothing to do */ + return; + } + + /* restore style of window before making it fullscreen */ + SetWindowLong(win->Window.Handle, GWL_STYLE, win->State.OldStyle); + SetWindowPos(win->Window.Handle, HWND_TOP, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); + + /* Then resize */ + SetWindowPos(win->Window.Handle, + HWND_TOP, + win->State.OldRect.left, + win->State.OldRect.top, + win->State.OldRect.right - win->State.OldRect.left, + win->State.OldRect.bottom - win->State.OldRect.top, + SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING | + SWP_NOZORDER + ); + + win->State.IsFullscreen = GL_FALSE; +#endif +} + +/* * Toggle the window's full screen state. */ void FGAPIENTRY glutFullScreenToggle( void ) @@ -1859,8 +2116,10 @@ win->State.IsFullscreen = !win->State.IsFullscreen; } #elif TARGET_HOST_MS_WINDOWS - glutFullScreen(); - win->State.IsFullscreen = !win->State.IsFullscreen; + if (!win->State.IsFullscreen) + glutFullScreen(); + else + glutLeaveFullScreen(); #endif } Modified: trunk/freeglut/freeglut/src/freeglutdll.def =================================================================== --- trunk/freeglut/freeglut/src/freeglutdll.def 2011-09-04 03:49:11 UTC (rev 928) +++ trunk/freeglut/freeglut/src/freeglutdll.def 2011-09-04 19:38:32 UTC (rev 929) @@ -139,6 +139,7 @@ glutGetProcAddress glutExit glutFullScreenToggle + glutLeaveFullScreen glutGetModeValues glutInitContextFlags glutInitContextVersion This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-09-04 20:30:55
|
Revision: 931 http://freeglut.svn.sourceforge.net/freeglut/?rev=931&view=rev Author: fayjf Date: 2011-09-04 20:30:48 +0000 (Sun, 04 Sep 2011) Log Message: ----------- Adding the "patch_demo" patch per e-mail from Diederick Niehorster vintage 6/9/11 at 11:57 PM. Please check that I got them right; they are quite confusing. Modified Paths: -------------- trunk/freeglut/freeglut/VisualStudio/2008/freeglut.sln trunk/freeglut/freeglut/VisualStudio/2010/freeglut.sln trunk/freeglut/freeglut/progs/demos/One/one.c trunk/freeglut/freeglut/progs/demos/demos.dsw trunk/freeglut/freeglut/progs/demos/subwin/subwin.c Added Paths: ----------- trunk/freeglut/freeglut/VisualStudio/2008/Resizer/ trunk/freeglut/freeglut/VisualStudio/2008/Resizer/Resizer.vcproj trunk/freeglut/freeglut/VisualStudio/2010/Resizer/ trunk/freeglut/freeglut/VisualStudio/2010/Resizer/Resizer.vcxproj trunk/freeglut/freeglut/VisualStudio/2010/Resizer/Resizer.vcxproj.filters trunk/freeglut/freeglut/progs/demos/Resizer/ trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.cpp trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.dsp Added: trunk/freeglut/freeglut/VisualStudio/2008/Resizer/Resizer.vcproj =================================================================== --- trunk/freeglut/freeglut/VisualStudio/2008/Resizer/Resizer.vcproj (rev 0) +++ trunk/freeglut/freeglut/VisualStudio/2008/Resizer/Resizer.vcproj 2011-09-04 20:30:48 UTC (rev 931) @@ -0,0 +1,354 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="9.00" + Name="Resizer" + ProjectGUID="{8034DA32-26FB-46FC-A47B-2E3EAD39B34E}" + RootNamespace="Resizer" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)build\$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\..\..\include" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="0" + WarningLevel="3" + DebugInformationFormat="4" + CompileAs="1" + DisableSpecificWarnings="4996" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="2" + AdditionalLibraryDirectories="..\..\..\lib\Debug" + GenerateDebugInformation="true" + SubSystem="1" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Debug_Static|Win32" + OutputDirectory="$(SolutionDir)build\$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\..\..\include" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;FREEGLUT_STATIC" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="1" + UsePrecompiledHeader="0" + WarningLevel="3" + DebugInformationFormat="4" + CompileAs="1" + DisableSpecificWarnings="4996" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="2" + AdditionalLibraryDirectories="..\..\..\lib\Debug" + GenerateDebugInformation="true" + SubSystem="1" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)build\$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + EnableIntrinsicFunctions="true" + AdditionalIncludeDirectories="..\..\..\include" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + UsePrecompiledHeader="0" + WarningLevel="3" + DebugInformationFormat="3" + CompileAs="1" + DisableSpecificWarnings="4996" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="1" + AdditionalLibraryDirectories="..\..\..\lib\Release" + GenerateDebugInformation="true" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release_Static|Win32" + OutputDirectory="$(SolutionDir)build\$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + EnableIntrinsicFunctions="true" + AdditionalIncludeDirectories="..\..\..\include" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;FREEGLUT_STATIC" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" + UsePrecompiledHeader="0" + WarningLevel="3" + DebugInformationFormat="3" + CompileAs="1" + DisableSpecificWarnings="4996" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="1" + AdditionalLibraryDirectories="..\..\..\lib\Release" + GenerateDebugInformation="true" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + > + <File + RelativePath="..\..\..\progs\demos\Resizer\Resizer.cpp" + > + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;inc;xsd" + UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" + > + </Filter> + <Filter + Name="Resource Files" + Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" + UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" + > + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> \ No newline at end of file Modified: trunk/freeglut/freeglut/VisualStudio/2008/freeglut.sln =================================================================== --- trunk/freeglut/freeglut/VisualStudio/2008/freeglut.sln 2011-09-04 19:58:20 UTC (rev 930) +++ trunk/freeglut/freeglut/VisualStudio/2008/freeglut.sln 2011-09-04 20:30:48 UTC (rev 931) @@ -43,6 +43,11 @@ {1AE4E979-0D35-4747-BF8E-DD60358F49DB} = {1AE4E979-0D35-4747-BF8E-DD60358F49DB} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Resizer", "Resizer\Resizer.vcproj", "{8034DA32-26FB-46FC-A47B-2E3EAD39B34E}" + ProjectSection(ProjectDependencies) = postProject + {1AE4E979-0D35-4747-BF8E-DD60358F49DB} = {1AE4E979-0D35-4747-BF8E-DD60358F49DB} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug_Static|Win32 = Debug_Static|Win32 @@ -123,6 +128,14 @@ {CD3C35E0-FED3-4425-8CF9-A772667D464B}.Release_Static|Win32.Build.0 = Release_Static|Win32 {CD3C35E0-FED3-4425-8CF9-A772667D464B}.Release|Win32.ActiveCfg = Release|Win32 {CD3C35E0-FED3-4425-8CF9-A772667D464B}.Release|Win32.Build.0 = Release|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Debug_Static|Win32.Build.0 = Debug_Static|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Debug|Win32.ActiveCfg = Debug|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Debug|Win32.Build.0 = Debug|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Release_Static|Win32.ActiveCfg = Release_Static|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Release_Static|Win32.Build.0 = Release_Static|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Release|Win32.ActiveCfg = Release|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Added: trunk/freeglut/freeglut/VisualStudio/2010/Resizer/Resizer.vcxproj =================================================================== --- trunk/freeglut/freeglut/VisualStudio/2010/Resizer/Resizer.vcxproj (rev 0) +++ trunk/freeglut/freeglut/VisualStudio/2010/Resizer/Resizer.vcxproj 2011-09-04 20:30:48 UTC (rev 931) @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug_Static|Win32"> + <Configuration>Debug_Static</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release_Static|Win32"> + <Configuration>Release_Static</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{8034DA32-26FB-46FC-A47B-2E3EAD39B34E}</ProjectGuid> + <RootNamespace>Resizer</RootNamespace> + <Keyword>Win32Proj</Keyword> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + <WholeProgramOptimization>true</WholeProgramOptimization> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + <WholeProgramOptimization>true</WholeProgramOptimization> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)build\$(Configuration)\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">$(SolutionDir)build\$(Configuration)\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">true</LinkIncremental> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)build\$(Configuration)\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)build\$(Configuration)\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(Configuration)\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>true</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <CompileAs>CompileAsC</CompileAs> + <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>..\..\..\lib\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Console</SubSystem> + <TargetMachine>MachineX86</TargetMachine> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;FREEGLUT_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>true</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <CompileAs>CompileAsC</CompileAs> + <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>..\..\..\lib\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Console</SubSystem> + <TargetMachine>MachineX86</TargetMachine> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <Optimization>MaxSpeed</Optimization> + <IntrinsicFunctions>true</IntrinsicFunctions> + <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <CompileAs>CompileAsC</CompileAs> + <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>..\..\..\lib\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Console</SubSystem> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <TargetMachine>MachineX86</TargetMachine> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'"> + <ClCompile> + <Optimization>MaxSpeed</Optimization> + <IntrinsicFunctions>true</IntrinsicFunctions> + <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;FREEGLUT_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <CompileAs>CompileAsC</CompileAs> + <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>..\..\..\lib\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Console</SubSystem> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <TargetMachine>MachineX86</TargetMachine> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\..\..\progs\demos\Resizer\Resizer.cpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file Added: trunk/freeglut/freeglut/VisualStudio/2010/Resizer/Resizer.vcxproj.filters =================================================================== --- trunk/freeglut/freeglut/VisualStudio/2010/Resizer/Resizer.vcxproj.filters (rev 0) +++ trunk/freeglut/freeglut/VisualStudio/2010/Resizer/Resizer.vcxproj.filters 2011-09-04 20:30:48 UTC (rev 931) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\..\progs\demos\Resizer\Resizer.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file Modified: trunk/freeglut/freeglut/VisualStudio/2010/freeglut.sln =================================================================== --- trunk/freeglut/freeglut/VisualStudio/2010/freeglut.sln 2011-09-04 19:58:20 UTC (rev 930) +++ trunk/freeglut/freeglut/VisualStudio/2010/freeglut.sln 2011-09-04 20:30:48 UTC (rev 931) @@ -21,6 +21,8 @@ EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Resizer", "Resizer\Resizer.vcxproj", "{8034DA32-26FB-46FC-A47B-2E3EAD39B34E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug_Static|Win32 = Debug_Static|Win32 @@ -108,6 +110,14 @@ {CD3C35E0-FED3-4425-8CF9-A772667D464B}.Release|Win32.ActiveCfg = Release|Win32 {CD3C35E0-FED3-4425-8CF9-A772667D464B}.Release|Win32.Build.0 = Release|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Debug_Static|Win32.Build.0 = Debug_Static|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Debug|Win32.ActiveCfg = Debug|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Debug|Win32.Build.0 = Debug|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Release_Static|Win32.ActiveCfg = Release_Static|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Release_Static|Win32.Build.0 = Release_Static|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Release|Win32.ActiveCfg = Release|Win32 + {8034DA32-26FB-46FC-A47B-2E3EAD39B34E}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/freeglut/freeglut/progs/demos/One/one.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/One/one.c 2011-09-04 19:58:20 UTC (rev 930) +++ trunk/freeglut/freeglut/progs/demos/One/one.c 2011-09-04 20:30:48 UTC (rev 931) @@ -258,6 +258,8 @@ glutInit( &argc, argv ); + glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS); + subMenuA = glutCreateMenu( SampleMenu ); glutAddMenuEntry( "Sub menu A1 (01)", 1 ); glutAddMenuEntry( "Sub menu A2 (02)", 2 ); @@ -316,7 +318,7 @@ glutIdleFunc( SampleIdle ); glutAttachMenu( GLUT_LEFT_BUTTON ); - printf( "current window is %ix%i at (%i,%i)", + printf( "current window is %ix%i at (%i,%i)\n", glutGet( GLUT_WINDOW_WIDTH ), glutGet( GLUT_WINDOW_HEIGHT ), glutGet( GLUT_WINDOW_X ), glutGet( GLUT_WINDOW_Y ) ); Added: trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.cpp =================================================================== --- trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.cpp (rev 0) +++ trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.cpp 2011-09-04 20:30:48 UTC (rev 931) @@ -0,0 +1,140 @@ +#include <stdio.h> + +#include <GL/freeglut.h> + +int nWindow; +int nLoopMain = 0; + +int nPosX, nPosY; +int nWidth, nHeight; + +void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ); +void Redisplay(); + + + + + +void DrawQuad() +{ + glBegin(GL_QUADS); + glVertex2d(nWidth*.25, nHeight*.75); + glVertex2d(nWidth*.75, nHeight*.75); + glVertex2d(nWidth*.75, nHeight*.25); + glVertex2d(nWidth*.25, nHeight*.25); + glEnd(); +} + +void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ) +{ + if (cChar == 27) + glutLeaveMainLoop(); + + else if (cChar=='f') + { + printf("main window toggle fullscreen\n"); + + glutFullScreenToggle(); + } + else if (cChar=='r') + { + printf("main window resize\n"); + + if (nWidth<400) + glutReshapeWindow(600,300); + else + glutReshapeWindow(300,300); + } + else if (cChar=='m') + { + printf("main window position\n"); + + /* The window position you request is the outer top-left of the window, + * the client area is at a different position if the window has borders + * and/or a title bar. + */ + if (nPosX<400) + glutPositionWindow(600,300); + else + glutPositionWindow(300,300); + } +} + +void Idle(void) +{ + glutPostRedisplay(); +} + +void Reshape(int x, int y) +{ + nWidth = glutGet(GLUT_WINDOW_WIDTH); + nHeight = glutGet(GLUT_WINDOW_HEIGHT); + + glViewport(0,0,nWidth,nHeight); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluOrtho2D(0,nWidth,0,nHeight); +} + +void Redisplay(void) +{ + if (nLoopMain++%6==0) + { + int border, caption; + + nPosX = glutGet(GLUT_WINDOW_X); + nPosY = glutGet(GLUT_WINDOW_Y); + nWidth = glutGet(GLUT_WINDOW_WIDTH); + nHeight = glutGet(GLUT_WINDOW_HEIGHT); + border = glutGet(GLUT_WINDOW_BORDER_WIDTH); + caption = glutGet(GLUT_WINDOW_HEADER_HEIGHT); + /* returned position is top-left of client area, to get top-left of + * of window you'll need to add the size of the border and caption + * of the current window (can be 0). + * Note that the window position is not necessarily positive (e.g. + * when the window is on a monitor to the left of the primary monitor + * or simply when maximized--try pressing the maximize button). + * the returned size is the size of the client area + */ + printf("window now %dx%d, top-left of client at: (%d,%d), of window at: (%d,%d)\n", + nWidth, nHeight, + nPosX ,nPosY, + nPosX-border, + nPosY-border-caption); + } + + glClearColor(.2f,0.f,0.f,0.f); + glClear(GL_COLOR_BUFFER_BIT); + glColor3f(1,1,1); + DrawQuad(); + + glutSwapBuffers(); + glutPostRedisplay(); +} + + +int main(int argc, char* argv[]) +{ + glutInit( &argc, argv ); + glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE /*| GLUT_BORDERLESS*/); // do try as well with GLUT_BORDERLESS and GLUT_CAPTIONLESS + glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS); + + /* The window position you request is the outer top-left of the window, + * the client area is at a different position if the window has borders + * and/or a title bar. + */ + glutInitWindowPosition(150,250); + glutInitWindowSize(200,200); + + nWindow = glutCreateWindow("test"); + printf("main window id: %d\n", nWindow); + + glutKeyboardFunc( SampleKeyboard ); + glutDisplayFunc( Redisplay ); + glutReshapeFunc( Reshape ); + + glutMainLoop(); + printf("glutMainLoop returned\n"); + + return 1; +} \ No newline at end of file Added: trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.dsp =================================================================== --- trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.dsp (rev 0) +++ trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.dsp 2011-09-04 20:30:48 UTC (rev 931) @@ -0,0 +1,102 @@ +# Microsoft Developer Studio Project File - Name="Resizer" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=Resizer - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "Resizer.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "Resizer.mak" CFG="Resizer - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "Resizer - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "Resizer - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "Resizer - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../Release" + +!ELSEIF "$(CFG)" == "Resizer - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../Debug" + +!ENDIF + +# Begin Target + +# Name "Resizer - Win32 Release" +# Name "Resizer - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\Resizer.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project Modified: trunk/freeglut/freeglut/progs/demos/demos.dsw =================================================================== --- trunk/freeglut/freeglut/progs/demos/demos.dsw 2011-09-04 19:58:20 UTC (rev 930) +++ trunk/freeglut/freeglut/progs/demos/demos.dsw 2011-09-04 20:30:48 UTC (rev 931) @@ -75,6 +75,18 @@ ############################################################################### +Project: "Resizer"=.\Resizer\Resizer.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + Project: "lorenz"=.\Lorenz\lorenz.dsp - Package Owner=<4> Package=<5> Modified: trunk/freeglut/freeglut/progs/demos/subwin/subwin.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/subwin/subwin.c 2011-09-04 19:58:20 UTC (rev 930) +++ trunk/freeglut/freeglut/progs/demos/subwin/subwin.c 2011-09-04 20:30:48 UTC (rev 931) @@ -104,8 +104,8 @@ glColor3d(0.1,0.1,0.4); if (win == mainwin) { - shapesPrintf (2, 3, "Move The mounse into different windows"); - shapesPrintf (3, 3, "pressing keys will add to the string"); + shapesPrintf (2, 3, "Move The mouse into different windows"); + shapesPrintf (3, 3, "pressing keys will add to the string"); } shapesPrintf (5, 3, "Window: %d", win); shapesPrintf (6, 3, "String: %s", strings[win]); @@ -170,7 +170,7 @@ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutCreateWindow("OpenGLUT Sub Windows"); + glutCreateWindow("FreeGLUT Sub Windows"); glutReshapeFunc(resize); glutDisplayFunc(display); @@ -194,7 +194,7 @@ glClearColor(0.7f,0.7f,0.7f,1); winmax = sw1 > winmax ? sw1 : winmax; - sw2=glutCreateSubWindow(mainwin,328,240,314,236); + sw2=glutCreateSubWindow(mainwin,322,240,314,236); glutReshapeFunc(resize); glutDisplayFunc(display); glutKeyboardFunc(key); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2012-03-10 02:03:40
|
Revision: 1095 http://freeglut.svn.sourceforge.net/freeglut/?rev=1095&view=rev Author: dcnieho Date: 2012-03-10 02:03:32 +0000 (Sat, 10 Mar 2012) Log Message: ----------- XParseGeometry include now compiles with windows (VS2010, didn't touch cmake) Various typos in comments Some other cleanup and formatting glutInitDisplayString now understands "borderless" Modified Paths: -------------- trunk/freeglut/freeglut/VisualStudio/2010/freeglut.vcxproj trunk/freeglut/freeglut/VisualStudio/2010/freeglut.vcxproj.filters trunk/freeglut/freeglut/src/Common/freeglut_init.c trunk/freeglut/freeglut/src/Common/freeglut_internal.h trunk/freeglut/freeglut/src/Common/freeglut_window.c trunk/freeglut/freeglut/src/Common/xparsegeometry_repl.c trunk/freeglut/freeglut/src/Common/xparsegeometry_repl.h trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_internal_mswin.h trunk/freeglut/freeglut/src/mswin/freeglut_state_mswin.c Modified: trunk/freeglut/freeglut/VisualStudio/2010/freeglut.vcxproj =================================================================== --- trunk/freeglut/freeglut/VisualStudio/2010/freeglut.vcxproj 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/VisualStudio/2010/freeglut.vcxproj 2012-03-10 02:03:32 UTC (rev 1095) @@ -344,6 +344,7 @@ <ClCompile Include="..\..\src\Common\freeglut_teapot.c" /> <ClCompile Include="..\..\src\Common\freeglut_videoresize.c" /> <ClCompile Include="..\..\src\Common\freeglut_window.c" /> + <ClCompile Include="..\..\src\Common\xparsegeometry_repl.c" /> <ClCompile Include="..\..\src\mswin\freeglut_cursor_mswin.c" /> <ClCompile Include="..\..\src\mswin\freeglut_display_mswin.c" /> <ClCompile Include="..\..\src\mswin\freeglut_ext_mswin.c" /> @@ -368,6 +369,7 @@ <ClInclude Include="..\..\include\GL\freeglut_std.h" /> <ClInclude Include="..\..\src\Common\freeglut_teapot_data.h" /> <ClInclude Include="..\..\include\GL\glut.h" /> + <ClInclude Include="..\..\src\Common\xparsegeometry_repl.h" /> <ClInclude Include="..\..\src\mswin\freeglut_internal_mswin.h" /> </ItemGroup> <ItemGroup> Modified: trunk/freeglut/freeglut/VisualStudio/2010/freeglut.vcxproj.filters =================================================================== --- trunk/freeglut/freeglut/VisualStudio/2010/freeglut.vcxproj.filters 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/VisualStudio/2010/freeglut.vcxproj.filters 2012-03-10 02:03:32 UTC (rev 1095) @@ -126,6 +126,9 @@ <ClCompile Include="..\..\src\mswin\freeglut_window_mswin.c"> <Filter>Source Files\mswin</Filter> </ClCompile> + <ClCompile Include="..\..\src\Common\xparsegeometry_repl.c"> + <Filter>Source Files</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <None Include="..\..\src\Common\freeglutdll.def"> @@ -154,6 +157,9 @@ <ClInclude Include="..\..\src\mswin\freeglut_internal_mswin.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="..\..\src\Common\xparsegeometry_repl.h"> + <Filter>Header Files</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <ResourceCompile Include="..\..\freeglut.rc"> Modified: trunk/freeglut/freeglut/src/Common/freeglut_init.c =================================================================== --- trunk/freeglut/freeglut/src/Common/freeglut_init.c 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/src/Common/freeglut_init.c 2012-03-10 02:03:32 UTC (rev 1095) @@ -315,9 +315,8 @@ /* -- INTERFACE FUNCTIONS -------------------------------------------------- */ - #if !TARGET_HOST_POSIX_X11 -#include "Common/xparsegeometry_repl.h" +# include "../Common/xparsegeometry_repl.h" #endif /* @@ -499,7 +498,7 @@ configuration is conformant or not */ break ; - case 6 : /* "depth": Number of bits of precsion in the depth buffer */ + case 6 : /* "depth": Number of bits of precision in the depth buffer */ glut_state_flag |= GLUT_DEPTH ; /* Somebody fix this for me! */ break ; @@ -619,8 +618,7 @@ break ; case 35 : /* "borderless": windows should not have borders */ -#if TARGET_HOST_POSIX_X11 -#endif + glut_state_flag |= GLUT_BORDERLESS; break ; case 36 : /* "aux": some number of aux buffers */ @@ -646,7 +644,7 @@ void FGAPIENTRY glutInitContextVersion( int majorVersion, int minorVersion ) { - /* We will make use of these valuse when creating a new OpenGL context... */ + /* We will make use of these value when creating a new OpenGL context... */ fgState.MajorVersion = majorVersion; fgState.MinorVersion = minorVersion; } @@ -684,4 +682,4 @@ fgState.WarningFunc = vfgWarning; } -/*** END OF FILE ***/ +/*** END OF FILE ***/ \ No newline at end of file Modified: trunk/freeglut/freeglut/src/Common/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/Common/freeglut_internal.h 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/src/Common/freeglut_internal.h 2012-03-10 02:03:32 UTC (rev 1095) @@ -941,11 +941,11 @@ #define ATTRIB(a) attributes[where++]=(a) #define ATTRIB_VAL(a,v) {ATTRIB(a); ATTRIB(v);} -extern int fghIsLegacyContextVersionRequested( void ); -extern int fghMapBit( int mask, int from, int to ); -extern int fghIsLegacyContextRequested( void ); -extern void fghContextCreationError( void ); -extern int fghNumberOfAuxBuffersRequested( void ); +int fghIsLegacyContextVersionRequested( void ); +int fghMapBit( int mask, int from, int to ); +int fghIsLegacyContextRequested( void ); +void fghContextCreationError( void ); +int fghNumberOfAuxBuffersRequested( void ); #endif /* FREEGLUT_INTERNAL_H */ Modified: trunk/freeglut/freeglut/src/Common/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/Common/freeglut_window.c 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/src/Common/freeglut_window.c 2012-03-10 02:03:32 UTC (rev 1095) @@ -47,14 +47,11 @@ * glutCreateSubWindow() -- Check when default position and size is {-1,-1} * glutDestroyWindow() -- check the Win32 version * glutSetWindow() -- check the Win32 version - * glutGetWindow() -- OK * glutSetWindowTitle() -- check the Win32 version * glutSetIconTitle() -- check the Win32 version * glutShowWindow() -- check the Win32 version * glutHideWindow() -- check the Win32 version * glutIconifyWindow() -- check the Win32 version - * glutReshapeWindow() -- check the Win32 version - * glutPositionWindow() -- check the Win32 version * glutPushWindow() -- check the Win32 version * glutPopWindow() -- check the Win32 version */ @@ -261,7 +258,7 @@ } /* - * This function selects the current window + * This function selects the specified window as the current window */ void FGAPIENTRY glutSetWindow( int ID ) { Modified: trunk/freeglut/freeglut/src/Common/xparsegeometry_repl.c =================================================================== --- trunk/freeglut/freeglut/src/Common/xparsegeometry_repl.c 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/src/Common/xparsegeometry_repl.c 2012-03-10 02:03:32 UTC (rev 1095) @@ -32,10 +32,10 @@ */ -#include "Common/xparsegeometry_repl.h" +#include "../Common/xparsegeometry_repl.h" /* - * XParseGeometry parses strings of the form + * XParseGeometry parses strings of the form * "=<width>x<height>{+-}<xoffset>{+-}<yoffset>", where * width, height, xoffset, and yoffset are unsigned integers. * Example: "=80x24+300-49" Modified: trunk/freeglut/freeglut/src/Common/xparsegeometry_repl.h =================================================================== --- trunk/freeglut/freeglut/src/Common/xparsegeometry_repl.h 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/src/Common/xparsegeometry_repl.h 2012-03-10 02:03:32 UTC (rev 1095) @@ -42,11 +42,9 @@ #define XNegative 0x0010 #define YNegative 0x0020 -extern int XParseGeometry ( - const char *string, - int *x, - int *y, - unsigned int *width, /* RETURN */ - unsigned int *height); /* RETURN */ +extern int XParseGeometry (const char *string, /* INPUT */ + int *x, int *y, /* RETURN */ + unsigned int *width, unsigned int *height); /* RETURN */ + #endif Modified: trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c 2012-03-10 02:03:32 UTC (rev 1095) @@ -121,9 +121,10 @@ fgState.Initialised = GL_TRUE; - /* Avoid registering atexit callback on Win32 as it results in an access - * violation due to calling into a module which has been unloaded. - * Any cleanup isn't needed on Windows anyway, the OS takes care of it.c + /* Avoid registering atexit callback on Win32 as it can result in an + * access violation due to calling into a module which has been + * unloaded. + * Any cleanup isn't needed on Windows anyway, the OS takes care of it. * see: http://blogs.msdn.com/b/oldnewthing/archive/2012/01/05/10253268.aspx */ /* atexit(fgDeinitialize); */ Modified: trunk/freeglut/freeglut/src/mswin/freeglut_internal_mswin.h =================================================================== --- trunk/freeglut/freeglut/src/mswin/freeglut_internal_mswin.h 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/src/mswin/freeglut_internal_mswin.h 2012-03-10 02:03:32 UTC (rev 1095) @@ -69,8 +69,8 @@ typedef struct tagSFG_PlatformDisplay SFG_PlatformDisplay; struct tagSFG_PlatformDisplay { - HINSTANCE Instance; /* The application's instance */ - DEVMODE DisplayMode; /* Desktop's display settings */ + HINSTANCE Instance; /* The application's instance */ + DEVMODE DisplayMode; /* Desktop's display settings */ char *DisplayName; /* Display name for multi display support*/ }; @@ -83,7 +83,7 @@ typedef struct tagSFG_PlatformContext SFG_PlatformContext; struct tagSFG_PlatformContext { - HDC Device; /* The window's device context */ + HDC Device; /* The window's device context */ }; @@ -91,31 +91,12 @@ typedef struct tagSFG_PlatformWindowState SFG_PlatformWindowState; struct tagSFG_PlatformWindowState { - RECT OldRect; /* window rect - stored before the window is made fullscreen */ + RECT OldRect; /* window rect - stored before the window is made fullscreen */ DWORD OldStyle; /* window style - stored before the window is made fullscreen */ }; -/* For "freeglut_init.c", some definitions of symbols and a prototype to emulate the X11 functionality */ -#define NoValue 0x0000 -#define XValue 0x0001 -#define YValue 0x0002 -#define WidthValue 0x0004 -#define HeightValue 0x0008 -#define AllValues 0x000F -#define XNegative 0x0010 -#define YNegative 0x0020 - -extern int XParseGeometry ( - const char *string, - int *x, - int *y, - unsigned int *width, /* RETURN */ - unsigned int *height); /* RETURN */ - - - /* Joystick-Specific Definitions */ #if !defined(_WIN32_WCE) # define _JS_MAX_AXES 8 Modified: trunk/freeglut/freeglut/src/mswin/freeglut_state_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/freeglut_state_mswin.c 2012-03-09 21:02:20 UTC (rev 1094) +++ trunk/freeglut/freeglut/src/mswin/freeglut_state_mswin.c 2012-03-10 02:03:32 UTC (rev 1095) @@ -250,10 +250,6 @@ /* * Win32 is assumed a keyboard, and this cannot be queried, * except for WindowsCE. - * - * X11 has a core keyboard by definition, although it can - * be present as a virtual/dummy keyboard. For now, there - * is no reliable way to tell if a real keyboard is present. */ #if defined(_WIN32_CE) return ( GetKeyboardStatus() & KBDI_KEYBOARD_PRESENT ) ? 1 : 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jt...@us...> - 2012-03-10 14:55:58
|
Revision: 1100 http://freeglut.svn.sourceforge.net/freeglut/?rev=1100&view=rev Author: jtsiomb Date: 2012-03-10 14:55:50 +0000 (Sat, 10 Mar 2012) Log Message: ----------- added the timer demo Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt Added Paths: ----------- trunk/freeglut/freeglut/progs/demos/timer/ trunk/freeglut/freeglut/progs/demos/timer/timer.c Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-03-10 12:53:50 UTC (rev 1099) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-03-10 14:55:50 UTC (rev 1100) @@ -219,5 +219,4 @@ progs/demos/spaceball/vmath.c progs/demos/spaceball/vmath.h) ADD_DEMO(subwin progs/demos/subwin/subwin.c) - - +ADD_DEMO(timer progs/demos/timer/timer.c) Added: trunk/freeglut/freeglut/progs/demos/timer/timer.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/timer/timer.c (rev 0) +++ trunk/freeglut/freeglut/progs/demos/timer/timer.c 2012-03-10 14:55:50 UTC (rev 1100) @@ -0,0 +1,53 @@ +/* Timer demo + * + * Written by John Tsiombikas <nu...@me...> + * + * Demonstrate the use of glutTimerFunc, by changing the color of the + * framebuffer every (approximately) 1 sec. + */ +#include <stdio.h> +#include <GL/glut.h> + +void disp(void); +void timer_func(int unused); + +/* color index will be advanced every time the timer expires */ +int cidx; +float color[][3] = { + {1, 0, 0}, + {0, 1, 0}, + {0, 0, 1}, + {1, 1, 0}, + {0, 1, 1}, + {1, 0, 1} +}; + +int main(int argc, char **argv) +{ + glutInit(&argc, argv); + glutInitWindowSize(128, 128); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); + glutCreateWindow("timer test"); + + glutDisplayFunc(disp); + + glutMainLoop(); + return 0; +} + +void disp(void) +{ + glClearColor(color[cidx][0], color[cidx][1], color[cidx][2], 1); + glClear(GL_COLOR_BUFFER_BIT); + + /* set the timer callback and ask glut to call it in 1 second */ + glutTimerFunc(1000, timer_func, 0); + glutSwapBuffers(); +} + +void timer_func(int unused) +{ + /* advance the color index and trigger a redisplay */ + cidx = (cidx + 1) % (sizeof color / sizeof *color); + glutPostRedisplay(); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jt...@us...> - 2012-03-13 19:24:13
|
Revision: 1127 http://freeglut.svn.sourceforge.net/freeglut/?rev=1127&view=rev Author: jtsiomb Date: 2012-03-13 19:24:01 +0000 (Tue, 13 Mar 2012) Log Message: ----------- Removed autotools build files (I think I got all of them, did I?) Removed Paths: ------------- trunk/freeglut/freeglut/Makefile.am trunk/freeglut/freeglut/Makefile.wat trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/doc/Makefile.am trunk/freeglut/freeglut/include/GL/Makefile.am trunk/freeglut/freeglut/include/Makefile.am trunk/freeglut/freeglut/progs/Makefile.am trunk/freeglut/freeglut/progs/demos/CallbackMaker/Makefile.am trunk/freeglut/freeglut/progs/demos/Fractals/Makefile.am trunk/freeglut/freeglut/progs/demos/Fractals_random/Makefile.am trunk/freeglut/freeglut/progs/demos/Lorenz/Makefile.am trunk/freeglut/freeglut/progs/demos/Makefile.am trunk/freeglut/freeglut/progs/demos/One/Makefile.am trunk/freeglut/freeglut/progs/demos/shapes/Makefile.am trunk/freeglut/freeglut/progs/demos/smooth_opengl3/Makefile.am trunk/freeglut/freeglut/progs/demos/spaceball/Makefile.am trunk/freeglut/freeglut/progs/demos/subwin/Makefile.am trunk/freeglut/freeglut/src/Makefile.am Deleted: trunk/freeglut/freeglut/Makefile.am =================================================================== --- trunk/freeglut/freeglut/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,81 +0,0 @@ -## Process this file with automake to produce Makefile.in - -SUBDIRS = src include progs doc -AUTOMAKE_OPTIONS = gnu - -EXTRA_DIST = \ - FrequentlyAskedQuestions \ - LISEZ_MOI \ - README.win32 \ - autogen.sh \ - freeglut.dep \ - freeglut.dsp \ - freeglut.dsw \ - freeglut.kdevelop \ - freeglut.kdevprj \ - freeglut.lsm \ - freeglut.mak \ - freeglut.rc \ - freeglut.spec \ - freeglut_evc4.vcp \ - freeglut_evc4.vcw \ - freeglut_static.dep \ - freeglut_static.dsp \ - freeglut_static.mak \ - VisualStudio/2010/freeglut.vcxproj.filters \ - VisualStudio/2010/smooth_opengl3/smooth_opengl3.vcxproj.filters \ - VisualStudio/2010/smooth_opengl3/smooth_opengl3.vcxproj \ - VisualStudio/2010/One/One.vcxproj \ - VisualStudio/2010/One/One.vcxproj.filters \ - VisualStudio/2010/Fractals_random/Fractals_random.vcxproj \ - VisualStudio/2010/Fractals_random/Fractals_random.vcxproj.filters \ - VisualStudio/2010/Resizer/Resizer.vcxproj \ - VisualStudio/2010/Resizer/Resizer.vcxproj.filters \ - VisualStudio/2010/freeglut.sln \ - VisualStudio/2010/Lorenz/Lorenz.vcxproj.filters \ - VisualStudio/2010/Lorenz/Lorenz.vcxproj \ - VisualStudio/2010/shapes/shapes.vcxproj.filters \ - VisualStudio/2010/shapes/shapes.vcxproj \ - VisualStudio/2010/Fractals/Fractals.vcxproj.filters \ - VisualStudio/2010/Fractals/Fractals.vcxproj \ - VisualStudio/2010/freeglut.vcxproj \ - VisualStudio/2010/subwin/subwin.vcxproj.filters \ - VisualStudio/2010/subwin/subwin.vcxproj \ - VisualStudio/2010/CallbackMaker/CallbackMaker.vcxproj \ - VisualStudio/2010/CallbackMaker/CallbackMaker.vcxproj.filters \ - VisualStudio/2008/smooth_opengl3/smooth_opengl3.vcproj \ - VisualStudio/2008/One/One.vcproj \ - VisualStudio/2008/Fractals_random/Fractals_random.vcproj \ - VisualStudio/2008/Resizer/Resizer.vcproj \ - VisualStudio/2008/freeglut.sln \ - VisualStudio/2008/Lorenz/Lorenz.vcproj \ - VisualStudio/2008/shapes/shapes.vcproj \ - VisualStudio/2008/Fractals/Fractals.vcproj \ - VisualStudio/2008/subwin/subwin.vcproj \ - VisualStudio/2008/CallbackMaker/CallbackMaker.vcproj \ - VisualStudio/2008/freeglut.vcproj \ - progs/demos/CallbackMaker/CallbackMakerStatic.dsp \ - progs/demos/Fractals/FractalsStatic.dsp \ - progs/demos/Fractals_random/Fractals_randomStatic.dsp \ - progs/demos/Lorenz/lorenzStatic.dsp \ - progs/demos/One/oneStatic.dsp \ - progs/demos/shapes/shapesStatic.dsp \ - progs/demos/smooth_opengl3/smooth_opengl3Static.dsp - -# Thanks to WinDoze, some files in CVS have the "execute" bit set when they -# shouldn't. We could fix this if we had direct access to the CVS repository, -# but we are not that lucky. Instead we fix this at distribution creation time. -dist-hook: - find $(distdir) -type f \( \ - -name "*.c" -o \ - -name "*.dsp" -o \ - -name "*.dsw" -o \ - -name "*.h" -o \ - -name "*.html" -o \ - -name "*.png" -o \ - -name "LISEZ_MOI" -o \ - -name "README*" \ - \) -exec chmod -x {} \; - -libtool: $(LIBTOOL_DEPS) - $(SHELL) ./config.status --recheck Deleted: trunk/freeglut/freeglut/Makefile.wat =================================================================== --- trunk/freeglut/freeglut/Makefile.wat 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/Makefile.wat 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,210 +0,0 @@ -# -# Makefile.wat -# Open Watcom makefile for Freeglut -# Usage: -# wmake -f Makefile.wat {target} -# Where target is one of: -# debug-static -# debug-dynamic -# release-static -# release-dynamic -# debug -# release -# all -# clean -# Assumes: -# WATCOM enviroment variable points to your Watcom installation directory -# %WATCOM%\BINNT and %WATCOM%\BINW are in your path -# -RELEASE_STATIC_DIR = release-static -RELEASE_DYNAMIC_DIR = release-dynamic -DEBUG_STATIC_DIR = debug-static -DEBUG_DYNAMIC_DIR = debug-dynamic - -INCLUDE_DIR = ..\include -SRC_DIR = ..\src\Common -COMPILER = wcc386 -COMPILE_COMMON_OPTIONS = -i$(INCLUDE_DIR);$(%WATCOM)\h;$(%WATCOM)\h\nt -fp6 -w4 -e25 -wcd202 -bt=nt -mf -zq -COMPILE_DEBUG_OPTIONS = -d3 -od -DDEBUG -D_DEBUG -COMPILE_RELEASE_OPTIONS = -d0 -otexanh -COMPILE_STATIC_OPTIONS = -DFREEGLUT_STATIC -6r -COMPILE_DYNAMIC_OPTIONS = -DFREEGLUT_EXPORTS -6s -bd -bm -COMPILE_OPTIONS = $(COMPILE_COMMON_OPTIONS) $(COMPILE_$(MODE)_OPTIONS) $(COMPILE_$(TYPE)_OPTIONS) - -LINKER = wlink -LINK_OPTIONS = SYS nt_dll op m op maxe=25 op q op symf FIL - -LIB_TOOL = wlib -LIB_COMMON_OPTIONS = -q -n -b -LIB_DYNAMIC_OPTIONS = -LIB_STATIC_OPTIONS = -c -p=512 -LIB_OPTIONS = $(LIB_COMMON_OPTIONS) $(LIB_$(TYPE)_OPTIONS) - -MAKE = wmake -h -f ..\Makefile.wat - -OBJ_FILES = & - freeglut_callbacks.obj & - freeglut_cursor.obj & - freeglut_display.obj & - freeglut_ext.obj & - freeglut_font.obj & - freeglut_font_data.obj & - freeglut_gamemode.obj & - freeglut_geometry.obj & - freeglut_glutfont_definitions.obj & - freeglut_init.obj & - freeglut_input_devices.obj & - freeglut_joystick.obj & - freeglut_main.obj & - freeglut_menu.obj & - freeglut_misc.obj & - freeglut_overlay.obj & - freeglut_spaceball.obj & - freeglut_state.obj & - freeglut_stroke_mono_roman.obj & - freeglut_stroke_roman.obj & - freeglut_structure.obj & - freeglut_teapot.obj & - freeglut_videoresize.obj & - freeglut_window.obj - -default : .SYMBOLIC - @echo Usage: - @echo wmake -f Makefile.wat {target} - @echo Where target is one of: - @echo debug-static - @echo debug-dynamic - @echo release-static - @echo release-dynamic - @echo debug - @echo release - @echo all - @echo clean - -# static library -freeglut_static.lib : $(OBJ_FILES) - $(LIB_TOOL) $(LIB_OPTIONS) $^* $(OBJ_FILES) - -# dynamic link library -freeglut.dll : $(OBJ_FILES) - $(LINKER) name $^* $(LINK_OPTIONS) $(OBJ_FILES: =,) - -freeglut.lib : freeglut.dll - $(LIB_TOOL) $(LIB_OPTIONS) $^. +$[. - - -freeglut_callbacks.obj : $(SRC_DIR)\freeglut_callbacks.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_cursor.obj : $(SRC_DIR)\freeglut_cursor.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_display.obj : $(SRC_DIR)\freeglut_display.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_ext.obj : $(SRC_DIR)\freeglut_ext.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_font.obj : $(SRC_DIR)\freeglut_font.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_font_data.obj : $(SRC_DIR)\freeglut_font_data.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_gamemode.obj : $(SRC_DIR)\freeglut_gamemode.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_geometry.obj : $(SRC_DIR)\freeglut_geometry.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_glutfont_definitions.obj : $(SRC_DIR)\freeglut_glutfont_definitions.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_init.obj : $(SRC_DIR)\freeglut_init.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_input_devices.obj : $(SRC_DIR)\freeglut_input_devices.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_joystick.obj : $(SRC_DIR)\freeglut_joystick.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_main.obj : $(SRC_DIR)\freeglut_main.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_menu.obj : $(SRC_DIR)\freeglut_menu.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_misc.obj : $(SRC_DIR)\freeglut_misc.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_overlay.obj : $(SRC_DIR)\freeglut_overlay.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_spaceball.obj : $(SRC_DIR)\freeglut_spaceball.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_state.obj : $(SRC_DIR)\freeglut_state.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_stroke_mono_roman.obj : $(SRC_DIR)\freeglut_stroke_mono_roman.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_stroke_roman.obj : $(SRC_DIR)\freeglut_stroke_roman.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_structure.obj : $(SRC_DIR)\freeglut_structure.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_teapot.obj : $(SRC_DIR)\freeglut_teapot.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_videoresize.obj : $(SRC_DIR)\freeglut_videoresize.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -freeglut_window.obj : $(SRC_DIR)\freeglut_window.c - $(COMPILER) $(SRC_DIR)\$[. $(COMPILE_OPTIONS) - -clean : .SYMBOLIC - @-del $(DEBUG_STATIC_DIR)\*.obj - @-del $(DEBUG_DYNAMIC_DIR)\*.obj - @-del $(RELEASE_STATIC_DIR)\*.obj - @-del $(RELEASE_DYNAMIC_DIR)\*.obj - @echo All object files removed - -debug-static : .SYMBOLIC - @-if not exist $(DEBUG_STATIC_DIR)\. mkdir $(DEBUG_STATIC_DIR) - @-cd $(DEBUG_STATIC_DIR) - @$(MAKE) MODE=DEBUG TYPE=STATIC freeglut_static.lib - @-cd .. - @echo Debug static library up to date - -debug-dynamic : .SYMBOLIC - @-if not exist $(DEBUG_DYNAMIC_DIR)\. mkdir $(DEBUG_DYNAMIC_DIR) - @-cd $(DEBUG_DYNAMIC_DIR) - @$(MAKE) MODE=DEBUG TYPE=DYNAMIC freeglut.lib - @-cd .. - @echo Debug dynamic link library up to date - -release-static : .SYMBOLIC - @-if not exist $(RELEASE_STATIC_DIR)\. mkdir $(RELEASE_STATIC_DIR) - @-cd $(RELEASE_STATIC_DIR) - @$(MAKE) MODE=RELEASE TYPE=STATIC freeglut_static.lib - @-cd .. - @echo Release static library up to date - -release-dynamic : .SYMBOLIC - @-if not exist $(RELEASE_DYNAMIC_DIR)\. mkdir $(RELEASE_DYNAMIC_DIR) - @-cd $(RELEASE_DYNAMIC_DIR) - @$(MAKE) MODE=RELEASE TYPE=DYNAMIC freeglut.lib - @-cd .. - @echo Release dynamic link library up to date - -debug : debug-static debug-dynamic .SYMBOLIC - @echo Debug targets up to date - -release : release-static release-dynamic .SYMBOLIC - @echo Release targets up to date - -all : debug release .SYMBOLIC - @echo All targets up to date Deleted: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/configure.ac 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,162 +0,0 @@ -# Process this file with autoconf to produce a configure script. - -AC_INIT([freeglut library], [3.0.0], [fre...@li...], [freeglut]) -AM_INIT_AUTOMAKE -AC_PREREQ([2.56]) -AC_CONFIG_SRCDIR([AUTHORS]) -AC_CONFIG_HEADERS([config.h]) - -# Compatibility hack for older autoconf versions -m4_ifdef([AS_HELP_STRING], [], [AC_DEFUN([AS_HELP_STRING], [AC_HELP_STRING($][@)])]) - -# Checks for programs. -AC_PROG_CC -AM_PROG_CC_C_O -AC_C_CONST -AC_EXEEXT -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL -AC_SUBST([LIBTOOL_DEPS]) - -# Checks for libraries. -AC_PATH_XTRA - -#if test "x$no_x" = xyes; then -# GL_LIBS="-lopengl32 -lgdi32 -lwinmm" -# LIBXXF86VM= -# LIBXI= -# VERSION_INFO= -# EXPORT_FLAGS="-DFREEGLUT_EXPORTS" -#else -# GL_LIBS="-lGL -lXext -lX11" -# AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode]) -# AC_CHECK_LIB([Xrandr], [XRRQueryExtension]) -# AC_CHECK_LIB([Xi], [XISelectEvents]) -# LIBXI=-lXi -# VERSION_INFO="-version-info 12:0:9" -# EXPORT_FLAGS= -#fi -VERSION_INFO="-version-info 12:0:9" -AM_CONDITIONAL(TARGET_HOST_MS_WINDOWS, false) -AM_CONDITIONAL(TARGET_HOST_POSIX_X11, false) -AM_CONDITIONAL(TARGET_HOST_ANDROID, false) -case "${host}" in - *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*) - # Windows+Cygwin/MSYS, MinGW cross-compilation - GL_LIBS="-lopengl32 -lgdi32 -lwinmm" - LIBXXF86VM= - LIBXI= - CPPFLAGS="$CPPFLAGS -DFREEGLUT_EXPORTS" - AM_CONDITIONAL(TARGET_HOST_MS_WINDOWS, true) - ;; - *-*-linux-androideabi) - # Android - # e.g. arm-unknown-linux-androideabi - GL_LIBS="-lEGL -lGLESv2" - LIBXXF86VM= - LIBXI= - #CFLAGS="$CFLAGS" - # '-mandroid' is not mandatory but doesn't hurt - # '-O0 -gstabs+' helps the currently buggy GDB port, better - # remove it for releases - # '-DANDROID' is the Android build system convention - CFLAGS="-mandroid -O0 -gstabs+" - CPPFLAGS="$CPPFLAGS -DANDROID" - AM_CONDITIONAL(TARGET_HOST_ANDROID, true) - ;; - *) - # Unix/X11 - GL_LIBS="-lGL -lXext -lX11" - AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode]) - AC_CHECK_LIB([Xrandr], [XRRQueryExtension]) - AC_CHECK_LIB([Xi], [XISelectEvents]) - LIBXI=-lXi - AM_CONDITIONAL(TARGET_HOST_POSIX_X11, true) - ;; -esac - -AC_SUBST([GL_LIBS]) -AC_SUBST([LIBXXF86VM]) -AC_SUBST([LIBXI]) -AC_SUBST([VERSION_INFO]) -AC_SUBST([EXPORT_FLAGS]) - -AC_CHECK_LIB([usbhid], [hid_init], - [LIBUSBHID=-lusbhid], [LIBUSBHID=]) -AC_SUBST(LIBUSBHID) - -# Checks for header files. -AC_HEADER_STDC -save_CPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" -AC_CHECK_HEADERS([usbhid.h libusbhid.h errno.h GL/gl.h GL/glu.h GL/glx.h GLES/gl.h GLES2/gl2.h fcntl.h limits.h sys/ioctl.h sys/param.h sys/time.h]) -AC_HEADER_TIME -AC_CHECK_HEADERS([X11/extensions/xf86vmode.h], [], [], [#include <X11/Xlib.h>]) -AC_CHECK_HEADERS([X11/extensions/Xrandr.h]) -AC_CHECK_HEADERS([X11/extensions/XI.h X11/extensions/XInput.h]) -AC_CHECK_HEADERS([X11/extensions/XInput2.h]) -CPPFLAGS="$save_CPPFLAGS" - -# Checks for library functions. -AC_PROG_GCC_TRADITIONAL -AC_FUNC_VPRINTF -AC_CHECK_LIBM -AC_SUBST([LIBM]) -AC_CHECK_FUNCS([gettimeofday]) -AC_CHECK_FUNCS([vfprintf]) - -# Build time configuration. -AC_ARG_ENABLE([replace-glut], -[AS_HELP_STRING([--enable-replace-glut], - [be a replacement for GLUT @<:@default=yes@:>@])]) -if test "x$enable_replace_glut" != xno; then - LIBRARY=glut - HEADER=glut.h -else - LIBRARY=freeglut - HEADER= -fi -AC_SUBST([LIBRARY]) -AC_SUBST([HEADER]) - -AC_ARG_ENABLE([warnings], -[AS_HELP_STRING([--enable-warnings], - [use all gcc compiler warnings @<:@default=yes@:>@])]) -if test "x$enable_warnings" != xno -a "x$GCC" = xyes; then - CFLAGS="$CFLAGS -Wall -pedantic" -fi - -AC_ARG_ENABLE([warnings-as-errors], -[AS_HELP_STRING([--enable-warnings-as-errors], - [make all warnings into errors @<:@default=no@:>@])]) -if test "x$enable_warnings_as_errors" = xyes -a "x$GCC" = xyes; then - CFLAGS="$CFLAGS -Werror" -fi - -AC_ARG_ENABLE([debug], -[AS_HELP_STRING([--enable-debug], - [enable debugging code (for developers) @<:@default=no@:>@])]) -if test "x$enable_debug" = xyes; then - AC_DEFINE([_DEBUG], [1], [Define to 1 if you want to include debugging code.]) -fi - -# Generate output. -AC_CONFIG_FILES([ - Makefile - doc/Makefile - include/GL/Makefile - include/Makefile - progs/Makefile - progs/demos/CallbackMaker/Makefile - progs/demos/Fractals/Makefile - progs/demos/Fractals_random/Makefile - progs/demos/Lorenz/Makefile - progs/demos/Makefile - progs/demos/One/Makefile - progs/demos/shapes/Makefile - progs/demos/smooth_opengl3/Makefile - progs/demos/spaceball/Makefile - progs/demos/subwin/Makefile - src/Makefile -]) -AC_OUTPUT Deleted: trunk/freeglut/freeglut/doc/Makefile.am =================================================================== --- trunk/freeglut/freeglut/doc/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/doc/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,5 +0,0 @@ -EXTRA_DIST = \ - download.html freeglut.html freeglut_logo.png \ - freeglut_user_interface.html index.html \ - ogl_sm.png progress.html structure.html - Deleted: trunk/freeglut/freeglut/include/GL/Makefile.am =================================================================== --- trunk/freeglut/freeglut/include/GL/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/include/GL/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,5 +0,0 @@ -## Process this file with automake to produce Makefile.in - -libfreeglutincludedir = $(includedir)/GL -libfreeglutinclude_HEADERS = freeglut.h freeglut_std.h freeglut_ext.h @HEADER@ -EXTRA_HEADERS = glut.h Deleted: trunk/freeglut/freeglut/include/Makefile.am =================================================================== --- trunk/freeglut/freeglut/include/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/include/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,3 +0,0 @@ -## Process this file with automake to produce Makefile.in - -SUBDIRS = GL Deleted: trunk/freeglut/freeglut/progs/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1 +0,0 @@ -SUBDIRS = demos Deleted: trunk/freeglut/freeglut/progs/demos/CallbackMaker/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/CallbackMaker/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/CallbackMaker/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = CallbackMaker.c CallbackMaker.dsp -noinst_PROGRAMS = CallbackMaker -CallbackMaker_SOURCES = CallbackMaker.c -CallbackMaker_LDFLAGS = -export-dynamic -CallbackMaker_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -CallbackMaker_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/progs/demos/Fractals/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Fractals/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/Fractals/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = Fractals.dsp fractals.c fractals.dat -noinst_PROGRAMS = fractals -fractals_SOURCES = fractals.c -fractals_LDFLAGS = -export-dynamic -fractals_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -fractals_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/progs/demos/Fractals_random/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Fractals_random/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/Fractals_random/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = Fractals_random.dsp fractals.dat fractals_random.c -noinst_PROGRAMS = fractals_random -fractals_random_SOURCES = fractals_random.c -fractals_random_LDFLAGS = -export-dynamic -fractals_random_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -fractals_random_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/progs/demos/Lorenz/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Lorenz/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/Lorenz/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = lorenz.c lorenz.dsp -noinst_PROGRAMS = lorenz -lorenz_SOURCES = lorenz.c -lorenz_LDFLAGS = -export-dynamic -lorenz_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -lm -lorenz_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/progs/demos/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,2 +0,0 @@ -EXTRA_DIST = demos.dsw -SUBDIRS = CallbackMaker Fractals Fractals_random Lorenz One shapes smooth_opengl3 spaceball subwin Deleted: trunk/freeglut/freeglut/progs/demos/One/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/One/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/One/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = one.c one.dsp -noinst_PROGRAMS = one -one_SOURCES = one.c -one_LDFLAGS = -export-dynamic -one_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -one_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/progs/demos/shapes/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/shapes/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/shapes/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = shapes.c shapes.dsp -noinst_PROGRAMS = shapes -shapes_SOURCES = shapes.c -shapes_LDFLAGS = -export-dynamic -shapes_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -shapes_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/progs/demos/smooth_opengl3/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/smooth_opengl3/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/smooth_opengl3/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = smooth_opengl3.c smooth_opengl3.dsp -noinst_PROGRAMS = smooth_opengl3 -smooth_opengl3_SOURCES = smooth_opengl3.c -smooth_opengl3_LDFLAGS = -export-dynamic -smooth_opengl3_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -smooth_opengl3_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/progs/demos/spaceball/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/spaceball/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/spaceball/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = spaceball.c vmath.c vmath.h vmath.inl -noinst_PROGRAMS = spaceball -spaceball_SOURCES = spaceball.c vmath.c -spaceball_LDFLAGS = -export-dynamic -spaceball_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -lm -spaceball_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/progs/demos/subwin/Makefile.am =================================================================== --- trunk/freeglut/freeglut/progs/demos/subwin/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/progs/demos/subwin/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,6 +0,0 @@ -EXTRA_DIST = subwin.c subwin.dsp -noinst_PROGRAMS = subwin -subwin_SOURCES = subwin.c -subwin_LDFLAGS = -export-dynamic -subwin_LDADD = ../../../src/lib@LIBRARY@.la $(GL_LIBS) -subwin_CFLAGS = -I$(top_srcdir)/include $(X_CFLAGS) Deleted: trunk/freeglut/freeglut/src/Makefile.am =================================================================== --- trunk/freeglut/freeglut/src/Makefile.am 2012-03-13 19:05:32 UTC (rev 1126) +++ trunk/freeglut/freeglut/src/Makefile.am 2012-03-13 19:24:01 UTC (rev 1127) @@ -1,122 +0,0 @@ -## Process this file with automake to produce Makefile.im - -# -# The library we want to build -# -lib_LTLIBRARIES = lib@LIBRARY@.la - -# -# Headers and extra stuff we want to distribute -# -noinst_HEADERS = Common/freeglut_internal.h Common/freeglut_teapot_data.h - -EXTRA_DIST = Common/freeglutdll.def - -# -# Those source files build the freeglut library -# -lib@LIBRARY@_la_SOURCES = \ - Common/freeglut_callbacks.c \ - Common/freeglut_cursor.c \ - Common/freeglut_display.c \ - Common/freeglut_ext.c \ - Common/freeglut_font_data.c \ - Common/freeglut_gamemode.c \ - Common/freeglut_input_devices.c \ - Common/freeglut_stroke_roman.c \ - Common/freeglut_stroke_mono_roman.c \ - Common/freeglut_init.c \ - Common/freeglut_spaceball.c \ - Common/freeglut_joystick.c \ - Common/freeglut_main.c \ - Common/freeglut_misc.c \ - Common/freeglut_overlay.c \ - Common/freeglut_state.c \ - Common/freeglut_structure.c \ - Common/freeglut_videoresize.c \ - Common/freeglut_window.c - -# TODO: uses OpenGL non-ES functions: -if !TARGET_HOST_ANDROID -lib@LIBRARY@_la_SOURCES += \ - Common/freeglut_font.c \ - Common/freeglut_geometry.c \ - Common/freeglut_menu.c \ - Common/freeglut_teapot.c -endif - -if TARGET_HOST_MS_WINDOWS -lib@LIBRARY@_la_SOURCES += \ - Common/xparsegeometry_repl.c \ - Common/xparsegeometry_repl.h \ - mswin/freeglut_cursor_mswin.c \ - mswin/freeglut_display_mswin.c \ - mswin/freeglut_ext_mswin.c \ - mswin/freeglut_gamemode_mswin.c \ - mswin/freeglut_init_mswin.c \ - mswin/freeglut_input_devices_mswin.c \ - mswin/freeglut_internal_mswin.h \ - mswin/freeglut_joystick_mswin.c \ - mswin/freeglut_main_mswin.c \ - mswin/freeglut_menu_mswin.c \ - mswin/freeglut_spaceball_mswin.c \ - mswin/freeglut_state_mswin.c \ - mswin/freeglut_structure_mswin.c \ - mswin/freeglut_window_mswin.c -endif - -if TARGET_HOST_POSIX_X11 -lib@LIBRARY@_la_SOURCES += \ - x11/freeglut_cursor_x11.c \ - x11/freeglut_display_x11.c \ - x11/freeglut_ext_x11.c \ - x11/freeglut_gamemode_x11.c \ - x11/freeglut_glutfont_definitions_x11.c \ - x11/freeglut_init_x11.c \ - x11/freeglut_input_devices_x11.c \ - x11/freeglut_internal_x11.h \ - x11/freeglut_joystick_x11.c \ - x11/freeglut_main_x11.c \ - x11/freeglut_menu_x11.c \ - x11/freeglut_spaceball_x11.c \ - x11/freeglut_state_x11.c \ - x11/freeglut_structure_x11.c \ - x11/freeglut_window_x11.c \ - x11/freeglut_xinput_x11.c -endif - -if TARGET_HOST_ANDROID -lib@LIBRARY@_la_SOURCES += \ - Common/xparsegeometry_repl.c \ - Common/xparsegeometry_repl.h \ - egl/freeglut_internal_egl.h \ - egl/freeglut_display_egl.c \ - egl/freeglut_init_egl.c \ - egl/freeglut_structure_egl.c \ - egl/freeglut_window_egl.c \ - android/native_app_glue/android_native_app_glue.c \ - android/native_app_glue/android_native_app_glue.h \ - android/freeglut_runtime_android.c \ - android/freeglut_gamemode_android.c \ - android/freeglut_input_devices_android.c \ - android/freeglut_joystick_android.c \ - android/freeglut_main_android.c \ - android/freeglut_spaceball_android.c \ - android/freeglut_state_android.c \ - android/freeglut_window_android.c \ - android/opengles_stubs.c \ - android/freeglut_internal_android.h -endif - - -# -# Additional linker flags -# -lib@LIBRARY@_la_LIBADD = $(GL_LIBS) $(X_LIBS) $(LIBM) $(LIBUSBHID) -lib@LIBRARY@_la_LDFLAGS = $(VERSION_INFO) -no-undefined -lib@LIBRARY@_la_CFLAGS = $(GL_FLAGS) $(X_CFLAGS) $(EXPORT_FLAGS) -lib@LIBRARY@_la_CPPFLAGS= -I$(top_srcdir)/include -I$(top_srcdir)/src/Common - -# -# End of file -# This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-17 10:30:37
|
Revision: 1174 http://freeglut.svn.sourceforge.net/freeglut/?rev=1174&view=rev Author: beuc Date: 2012-03-17 10:30:31 +0000 (Sat, 17 Mar 2012) Log Message: ----------- EGL: make more code reusable - less Android-specific Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/egl/fg_init_egl.c trunk/freeglut/freeglut/src/egl/fg_structure_egl.c trunk/freeglut/freeglut/src/egl/fg_window_egl.h Added Paths: ----------- trunk/freeglut/freeglut/src/android/fg_init_android.c Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-03-17 10:09:19 UTC (rev 1173) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-03-17 10:30:31 UTC (rev 1174) @@ -105,6 +105,7 @@ src/android/native_app_glue/android_native_app_glue.h src/android/fg_runtime_android.c src/android/fg_gamemode_android.c + src/android/fg_init_android.c src/android/fg_input_devices_android.c src/android/fg_joystick_android.c src/android/fg_main_android.c Added: trunk/freeglut/freeglut/src/android/fg_init_android.c =================================================================== --- trunk/freeglut/freeglut/src/android/fg_init_android.c (rev 0) +++ trunk/freeglut/freeglut/src/android/fg_init_android.c 2012-03-17 10:30:31 UTC (rev 1174) @@ -0,0 +1,38 @@ +/* + * freeglut_init_android.c + * + * Various freeglut initialization functions. + * + * Copyright (C) 2012 Sylvain Beucler + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include <GL/freeglut.h> +#include "fg_internal.h" + +void fgPlatformInitialize() +{ + fghPlatformInitializeEGL(); + fgState.Initialised = GL_TRUE; +} + +void fgPlatformCloseDisplay() +{ + fghPlatformCloseDisplayEGL(); +} Modified: trunk/freeglut/freeglut/src/egl/fg_init_egl.c =================================================================== --- trunk/freeglut/freeglut/src/egl/fg_init_egl.c 2012-03-17 10:09:19 UTC (rev 1173) +++ trunk/freeglut/freeglut/src/egl/fg_init_egl.c 2012-03-17 10:30:31 UTC (rev 1174) @@ -1,5 +1,5 @@ /* - * freeglut_init_android.c + * freeglut_init_egl.c * * Various freeglut initialization functions. * @@ -27,16 +27,11 @@ #include <GL/freeglut.h> #include "fg_internal.h" -#include <android/native_app_glue/android_native_app_glue.h> - /* * A call to this function should initialize all the display stuff... */ -void fgPlatformInitialize( const char* displayName ) +void fghPlatformInitializeEGL() { - fprintf(stderr, "fgPlatformInitialize\n"); - fgState.Initialised = GL_TRUE; - /* CreateDisplay */ /* Using EGL_DEFAULT_DISPLAY, or a specific native display */ EGLNativeDisplayType nativeDisplay = EGL_DEFAULT_DISPLAY; @@ -59,7 +54,7 @@ // fgDisplay.ScreenHeightMM = ...; } -void fgPlatformCloseDisplay ( void ) +void fghPlatformCloseDisplayEGL() { if (fgDisplay.pDisplay.egl.Display != EGL_NO_DISPLAY) { eglTerminate(fgDisplay.pDisplay.egl.Display); Modified: trunk/freeglut/freeglut/src/egl/fg_structure_egl.c =================================================================== --- trunk/freeglut/freeglut/src/egl/fg_structure_egl.c 2012-03-17 10:09:19 UTC (rev 1173) +++ trunk/freeglut/freeglut/src/egl/fg_structure_egl.c 2012-03-17 10:30:31 UTC (rev 1174) @@ -28,6 +28,9 @@ extern SFG_Structure fgStructure; +/** + * Initialize default platform-specific fields in SFG_Window + */ void fgPlatformCreateWindow ( SFG_Window *window ) { window->Window.pContext.egl.Surface = EGL_NO_SURFACE; Modified: trunk/freeglut/freeglut/src/egl/fg_window_egl.h =================================================================== --- trunk/freeglut/freeglut/src/egl/fg_window_egl.h 2012-03-17 10:09:19 UTC (rev 1173) +++ trunk/freeglut/freeglut/src/egl/fg_window_egl.h 2012-03-17 10:30:31 UTC (rev 1174) @@ -26,6 +26,7 @@ #ifndef __FG_WINDOW_EGL_H__ #define __FG_WINDOW_EGL_H__ +extern void fghChooseConfigEGL(EGLConfig* config); extern void fghPlatformOpenWindowEGL( SFG_Window* window ); extern void fghCreateNewContextEGL( SFG_Window* window ); extern void fghPlatformCloseWindowEGL( SFG_Window* window ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-17 12:34:28
|
Revision: 1178 http://freeglut.svn.sourceforge.net/freeglut/?rev=1178&view=rev Author: beuc Date: 2012-03-17 12:34:22 +0000 (Sat, 17 Mar 2012) Log Message: ----------- EGL: more code reusability Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/egl/fg_structure_egl.c Added Paths: ----------- trunk/freeglut/freeglut/src/android/fg_structure_android.c trunk/freeglut/freeglut/src/egl/fg_structure_egl.h Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-03-17 11:39:45 UTC (rev 1177) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-03-17 12:34:22 UTC (rev 1178) @@ -103,12 +103,14 @@ src/egl/fg_display_egl.c src/egl/fg_init_egl.c src/egl/fg_structure_egl.c + src/egl/fg_structure_egl.h src/egl/fg_window_egl.c src/egl/fg_window_egl.h src/android/native_app_glue/android_native_app_glue.c src/android/native_app_glue/android_native_app_glue.h src/android/fg_runtime_android.c src/android/fg_gamemode_android.c + src/android/fg_structure_android.c src/android/fg_init_android.c src/android/fg_input_devices_android.c src/android/fg_joystick_android.c Added: trunk/freeglut/freeglut/src/android/fg_structure_android.c =================================================================== --- trunk/freeglut/freeglut/src/android/fg_structure_android.c (rev 0) +++ trunk/freeglut/freeglut/src/android/fg_structure_android.c 2012-03-17 12:34:22 UTC (rev 1178) @@ -0,0 +1,36 @@ +/* + * fg_structure_android.c + * + * Windows and menus need tree structure + * + * Copyright (C) 2012 Sylvain Beucler + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include <GL/freeglut.h> +#include "fg_internal.h" +#include "egl/fg_structure_egl.h" + +/** + * Initialize default platform-specific fields in SFG_Window + */ +void fgPlatformCreateWindow ( SFG_Window *window ) +{ + fghPlatformCreateWindowEGL(window); +} Modified: trunk/freeglut/freeglut/src/egl/fg_structure_egl.c =================================================================== --- trunk/freeglut/freeglut/src/egl/fg_structure_egl.c 2012-03-17 11:39:45 UTC (rev 1177) +++ trunk/freeglut/freeglut/src/egl/fg_structure_egl.c 2012-03-17 12:34:22 UTC (rev 1178) @@ -1,5 +1,5 @@ /* - * freeglut_structure_egl.c + * fg_structure_egl.c * * Windows and menus need tree structure * @@ -26,12 +26,10 @@ #include <GL/freeglut.h> #include "fg_internal.h" -extern SFG_Structure fgStructure; - /** * Initialize default platform-specific fields in SFG_Window */ -void fgPlatformCreateWindow ( SFG_Window *window ) +void fghPlatformCreateWindowEGL ( SFG_Window *window ) { window->Window.pContext.egl.Surface = EGL_NO_SURFACE; window->Window.pContext.egl.Config = NULL; Added: trunk/freeglut/freeglut/src/egl/fg_structure_egl.h =================================================================== --- trunk/freeglut/freeglut/src/egl/fg_structure_egl.h (rev 0) +++ trunk/freeglut/freeglut/src/egl/fg_structure_egl.h 2012-03-17 12:34:22 UTC (rev 1178) @@ -0,0 +1,31 @@ +/* + * fg_structure_egl.h + * + * Windows and menus need tree structure + * + * Copyright (C) 2012 Sylvain Beucler + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __FG_STRUCTURE_EGL_H__ +#define __FG_STRUCTURE_EGL_H__ + +extern void fghPlatformCreateWindowEGL ( SFG_Window *window ); + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-31 20:03:07
|
Revision: 1219 http://freeglut.svn.sourceforge.net/freeglut/?rev=1219&view=rev Author: beuc Date: 2012-03-31 20:03:01 +0000 (Sat, 31 Mar 2012) Log Message: ----------- fg_geometry: sphere: GL_UNSIGNED_INT->GL_UNSIGNED_SHORT for OpenGL ES 1.0 support Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_std.h trunk/freeglut/freeglut/src/fg_geometry.c Modified: trunk/freeglut/freeglut/include/GL/freeglut_std.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_std.h 2012-03-31 13:34:32 UTC (rev 1218) +++ trunk/freeglut/freeglut/include/GL/freeglut_std.h 2012-03-31 20:03:01 UTC (rev 1219) @@ -528,10 +528,10 @@ #ifndef GL_ES_VERSION_2_0 FGAPI void FGAPIENTRY glutWireCube( double size ); FGAPI void FGAPIENTRY glutSolidCube( double size ); +FGAPI void FGAPIENTRY glutWireSphere( double radius, GLint slices, GLint stacks ); +FGAPI void FGAPIENTRY glutSolidSphere( double radius, GLint slices, GLint stacks ); #endif #ifndef EGL_VERSION_1_0 -FGAPI void FGAPIENTRY glutWireSphere( double radius, GLint slices, GLint stacks ); -FGAPI void FGAPIENTRY glutSolidSphere( double radius, GLint slices, GLint stacks ); FGAPI void FGAPIENTRY glutWireCone( double base, double height, GLint slices, GLint stacks ); FGAPI void FGAPIENTRY glutSolidCone( double base, double height, GLint slices, GLint stacks ); #endif Modified: trunk/freeglut/freeglut/src/fg_geometry.c =================================================================== --- trunk/freeglut/freeglut/src/fg_geometry.c 2012-03-31 13:34:32 UTC (rev 1218) +++ trunk/freeglut/freeglut/src/fg_geometry.c 2012-03-31 20:03:01 UTC (rev 1219) @@ -823,6 +823,9 @@ int i,j,idx, nVert; GLfloat *vertices, *normals; + if (slices * stacks > 65535) + fgWarning("fghSphere: too many slices or stacks requested, indices will wrap"); + /* Generate vertices and normals */ fghGenerateSphere((GLfloat)radius,slices,stacks,&vertices,&normals,&nVert); @@ -832,19 +835,19 @@ if (useWireMode) { - GLuint *sliceIdx, *stackIdx; + GLushort *sliceIdx, *stackIdx; /* First, generate vertex index arrays for drawing with glDrawElements * We have a bunch of line_loops to draw for each stack, and a * bunch for each slice. */ - sliceIdx = malloc(slices*(stacks+1)*sizeof(GLuint)); - stackIdx = malloc(slices*(stacks-1)*sizeof(GLuint)); + sliceIdx = malloc(slices*(stacks+1)*sizeof(GLushort)); + stackIdx = malloc(slices*(stacks-1)*sizeof(GLushort)); /* generate for each stack */ for (i=0,idx=0; i<slices; i++) { - GLuint offset = 1+i; /* start at 1 (0 is top vertex), and we advance one slice as we go along */ + GLushort offset = 1+i; /* start at 1 (0 is top vertex), and we advance one slice as we go along */ sliceIdx[idx++] = 0; /* vertex on top */ for (j=0; j<stacks-1; j++, idx++) { @@ -856,7 +859,7 @@ /* generate for each stack */ for (i=0,idx=0; i<stacks-1; i++) { - GLuint offset = 1+i*slices; /* start at 1 (0 is top vertex), and we advance one stack down as we go along */ + GLushort offset = 1+i*slices; /* start at 1 (0 is top vertex), and we advance one stack down as we go along */ for (j=0; j<slices; j++, idx++) { stackIdx[idx] = offset+j; @@ -871,10 +874,10 @@ glNormalPointer(GL_FLOAT, 0, normals); /*draw slices*/ for (i=0; i<slices; i++) - glDrawElements(GL_LINE_STRIP,stacks+1,GL_UNSIGNED_INT,sliceIdx+i*(stacks+1)); + glDrawElements(GL_LINE_STRIP,stacks+1,GL_UNSIGNED_SHORT,sliceIdx+i*(stacks+1)); /*draw stacks*/ for (i=0; i<stacks-1; i++) - glDrawElements(GL_LINE_LOOP, slices,GL_UNSIGNED_INT,stackIdx+i*slices); + glDrawElements(GL_LINE_LOOP, slices,GL_UNSIGNED_SHORT,stackIdx+i*slices); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); @@ -885,7 +888,7 @@ } else { - GLuint *topIdx, *bottomIdx, *stripIdx; + GLushort *topIdx, *bottomIdx, *stripIdx; /* First, generate vertex index arrays for drawing with glDrawElements * Top and bottom are covered with a triangle fan * Each other stack with triangle strip. Only need to generate on @@ -894,9 +897,9 @@ */ /* Allocate buffers for indices, bail out if memory allocation fails */ - topIdx = malloc((slices+2)*sizeof(GLuint)); - bottomIdx = malloc((slices+2)*sizeof(GLuint)); - stripIdx = malloc((slices+1)*2*(stacks-2)*sizeof(GLuint)); + topIdx = malloc((slices+2)*sizeof(GLushort)); + bottomIdx = malloc((slices+2)*sizeof(GLushort)); + stripIdx = malloc((slices+1)*2*(stacks-2)*sizeof(GLushort)); if (!(topIdx) || !(bottomIdx) || !(stripIdx)) { free(topIdx); @@ -924,7 +927,7 @@ /* Strip indices are relative to first index belonging to strip, NOT relative to first vertex/normal pair in array */ for (i=0,idx=0; i<stacks-2; i++, idx+=2) { - GLuint offset = 1+i*slices; /* triangle_strip indices start at 1 (0 is top vertex), and we advance one stack down as we go along */ + GLushort offset = 1+i*slices; /* triangle_strip indices start at 1 (0 is top vertex), and we advance one stack down as we go along */ for (j=0; j<slices; j++, idx+=2) { stripIdx[idx ] = offset+j+slices; @@ -942,12 +945,12 @@ glVertexPointer(3, GL_FLOAT, 0, vertices); glNormalPointer(GL_FLOAT, 0, normals); /*draw top*/ - glDrawElements(GL_TRIANGLE_FAN,slices+2,GL_UNSIGNED_INT,topIdx); + glDrawElements(GL_TRIANGLE_FAN,slices+2,GL_UNSIGNED_SHORT,topIdx); /*draw stacks*/ for (i=0; i<stacks-2; i++) - glDrawElements(GL_TRIANGLE_STRIP,(slices+1)*2,GL_UNSIGNED_INT,stripIdx+i*(slices+1)*2); + glDrawElements(GL_TRIANGLE_STRIP,(slices+1)*2,GL_UNSIGNED_SHORT,stripIdx+i*(slices+1)*2); /*draw bottom*/ - glDrawElements(GL_TRIANGLE_FAN,slices+2,GL_UNSIGNED_INT,bottomIdx); + glDrawElements(GL_TRIANGLE_FAN,slices+2,GL_UNSIGNED_SHORT,bottomIdx); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); @@ -969,7 +972,6 @@ /* -- INTERFACE FUNCTIONS ---------------------------------------------- */ -#ifndef EGL_VERSION_1_0 /* * Draws a solid sphere */ @@ -991,6 +993,7 @@ } +#ifndef EGL_VERSION_1_0 /* * Draws a solid cone */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-31 20:21:22
|
Revision: 1220 http://freeglut.svn.sourceforge.net/freeglut/?rev=1220&view=rev Author: beuc Date: 2012-03-31 20:21:16 +0000 (Sat, 31 Mar 2012) Log Message: ----------- Declare OpenGL 2.0 dynamically-loaded functions for internal use Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/fg_init.c trunk/freeglut/freeglut/src/fg_internal.h Added Paths: ----------- trunk/freeglut/freeglut/src/fg_gl2.c trunk/freeglut/freeglut/src/fg_gl2.h Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-03-31 20:03:01 UTC (rev 1219) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-03-31 20:21:16 UTC (rev 1220) @@ -43,6 +43,8 @@ src/fg_ext.c src/fg_font_data.c src/fg_gamemode.c + src/fg_gl2.c + src/fg_gl2.h src/fg_init.c src/fg_internal.h src/fg_input_devices.c Added: trunk/freeglut/freeglut/src/fg_gl2.c =================================================================== --- trunk/freeglut/freeglut/src/fg_gl2.c (rev 0) +++ trunk/freeglut/freeglut/src/fg_gl2.c 2012-03-31 20:21:16 UTC (rev 1220) @@ -0,0 +1,58 @@ +/* + * fg_gl2.c + * + * Load OpenGL (ES) 2.0 functions used by fg_geometry + * + * Copyright (C) 2012 Sylvain Beucler + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include <GL/freeglut.h> +#include "fg_internal.h" +#include "fg_gl2.h" + +typedef void (APIENTRY *PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (APIENTRY *PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRY *PFNGLBUFFERDATAPROC) (GLenum target, fghGLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRY *PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); +typedef void (APIENTRY *PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRY *PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); +typedef void (APIENTRY *PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + +PFNGLGENBUFFERSPROC fghGenBuffers = NULL; +PFNGLDELETEBUFFERSPROC fghDeleteBuffers = NULL; +PFNGLBINDBUFFERPROC fghBindBuffer = NULL; +PFNGLBUFFERDATAPROC fghBufferData = NULL; +PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray = NULL; +PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer = NULL; + +void fgInitGL2() { + fgState.HasOpenGL20 = 0; +#define CHECK(func, a) if ((a) == NULL) { fgWarning("fgInitGL2: " func " is NULL"); return; } + CHECK("fghGenBuffers", fghGenBuffers = (PFNGLGENBUFFERSPROC) glutGetProcAddress ("glGenBuffers")); + CHECK("fghDeleteBuffers", fghDeleteBuffers = (PFNGLDELETEBUFFERSPROC) glutGetProcAddress ("glDeleteBuffers")); + CHECK("fghBindBuffer", fghBindBuffer = (PFNGLBINDBUFFERPROC) glutGetProcAddress ("glBindBuffer")); + CHECK("fghBufferData", fghBufferData = (PFNGLBUFFERDATAPROC) glutGetProcAddress ("glBufferData")); + CHECK("fghVertexAttribPointer", fghVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) glutGetProcAddress ("glVertexAttribPointer")); + CHECK("fghEnableVertexAttribArray", fghEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) glutGetProcAddress ("glEnableVertexAttribArray")); + CHECK("fghDisableVertexAttribArray", fghDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) glutGetProcAddress ("glDisnableVertexAttribArray")); +#undef CHECK + fgState.HasOpenGL20 = 1; +} Added: trunk/freeglut/freeglut/src/fg_gl2.h =================================================================== --- trunk/freeglut/freeglut/src/fg_gl2.h (rev 0) +++ trunk/freeglut/freeglut/src/fg_gl2.h 2012-03-31 20:21:16 UTC (rev 1220) @@ -0,0 +1,49 @@ +/* + * fg_gl2.c + * + * Load OpenGL (ES) 2.0 functions used by fg_geometry + * + * Copyright (C) 2012 Sylvain Beucler + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef FG_GL2_H +#define FG_GL2_H + +#ifndef APIENTRY +# define APIENTRY +#endif +typedef ptrdiff_t fghGLsizeiptr; +typedef void (APIENTRY *PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (APIENTRY *PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRY *PFNGLBUFFERDATAPROC) (GLenum target, fghGLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRY *PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); +typedef void (APIENTRY *PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRY *PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); +typedef void (APIENTRY *PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + +PFNGLGENBUFFERSPROC fghGenBuffers; +PFNGLDELETEBUFFERSPROC fghDeleteBuffers; +PFNGLBINDBUFFERPROC fghBindBuffer; +PFNGLBUFFERDATAPROC fghBufferData; +PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray; +PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray; +PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer; + +#endif Modified: trunk/freeglut/freeglut/src/fg_init.c =================================================================== --- trunk/freeglut/freeglut/src/fg_init.c 2012-03-31 20:03:01 UTC (rev 1219) +++ trunk/freeglut/freeglut/src/fg_init.c 2012-03-31 20:21:16 UTC (rev 1220) @@ -90,6 +90,7 @@ 0, /* OpenGL context MinorVersion */ 0, /* OpenGL ContextFlags */ 0, /* OpenGL ContextProfile */ + 0, /* HasOpenGL20 */ NULL, /* ErrorFunc */ NULL /* WarningFunc */ }; @@ -380,6 +381,8 @@ if( (mask & (XValue|YValue)) == (XValue|YValue) ) fgState.Position.Use = GL_TRUE; } + + fgInitGL2(); } /* Modified: trunk/freeglut/freeglut/src/fg_internal.h =================================================================== --- trunk/freeglut/freeglut/src/fg_internal.h 2012-03-31 20:03:01 UTC (rev 1219) +++ trunk/freeglut/freeglut/src/fg_internal.h 2012-03-31 20:21:16 UTC (rev 1220) @@ -319,6 +319,7 @@ int MajorVersion; /* Major OpenGL context version */ int MinorVersion; /* Minor OpenGL context version */ int ContextFlags; /* OpenGL context flags */ + int HasOpenGL20; /* fgInitGL2 could find all OpenGL 2.0 functions */ int ContextProfile; /* OpenGL context profile */ FGError ErrorFunc; /* User defined error handler */ FGWarning WarningFunc; /* User defined warning handler */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-04-21 20:25:10
|
Revision: 1259 http://freeglut.svn.sourceforge.net/freeglut/?rev=1259&view=rev Author: beuc Date: 2012-04-21 19:04:02 +0000 (Sat, 21 Apr 2012) Log Message: ----------- Fix a few more compiler warnings Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/egl/fg_state_egl.c trunk/freeglut/freeglut/src/x11/fg_state_x11.c trunk/freeglut/freeglut/src/x11/fg_state_x11_glx.c trunk/freeglut/freeglut/src/x11/fg_window_x11_glx.c Added Paths: ----------- trunk/freeglut/freeglut/src/fg_init.h trunk/freeglut/freeglut/src/x11/fg_state_x11_glx.h Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-04-21 18:22:24 UTC (rev 1258) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-04-21 19:04:02 UTC (rev 1259) @@ -145,6 +145,7 @@ src/x11/fg_internal_x11_glx.h src/x11/fg_display_x11_glx.c src/x11/fg_state_x11_glx.c + src/x11/fg_state_x11_glx.h src/x11/fg_window_x11_glx.c src/x11/fg_window_x11_glx.h ) Modified: trunk/freeglut/freeglut/src/egl/fg_state_egl.c =================================================================== --- trunk/freeglut/freeglut/src/egl/fg_state_egl.c 2012-04-21 18:22:24 UTC (rev 1258) +++ trunk/freeglut/freeglut/src/egl/fg_state_egl.c 2012-04-21 19:04:02 UTC (rev 1259) @@ -33,7 +33,7 @@ static int fgPlatformGetConfig( int attribute ) { int returnValue = 0; - int result; /* Not checked */ + int result __fg_unused; /* Not checked */ if( fgStructure.CurrentWindow ) result = eglGetConfigAttrib( fgDisplay.pDisplay.egl.Display, Added: trunk/freeglut/freeglut/src/fg_init.h =================================================================== --- trunk/freeglut/freeglut/src/fg_init.h (rev 0) +++ trunk/freeglut/freeglut/src/fg_init.h 2012-04-21 19:04:02 UTC (rev 1259) @@ -0,0 +1,34 @@ +/* + * fg_init.h + * + * Various freeglut initialization functions. + * + * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. + * Written by Pawel W. Olszta, <ol...@so...> + * Creation date: Thu Dec 2 1999 + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __FG_INIT_H__ +#define __FG_INIT_H__ + +extern void fghCloseInputDevices(void); +extern void fgDeinitialize(void); + +#endif Modified: trunk/freeglut/freeglut/src/x11/fg_state_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_state_x11.c 2012-04-21 18:22:24 UTC (rev 1258) +++ trunk/freeglut/freeglut/src/x11/fg_state_x11.c 2012-04-21 19:04:02 UTC (rev 1259) @@ -29,6 +29,8 @@ #include "fg_internal.h" #ifdef EGL_VERSION_1_0 #include "egl/fg_state_egl.h" +#else +#include "x11/fg_state_x11_glx.h" #endif int fgPlatformGlutDeviceGet ( GLenum eWhat ) Modified: trunk/freeglut/freeglut/src/x11/fg_state_x11_glx.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_state_x11_glx.c 2012-04-21 18:22:24 UTC (rev 1258) +++ trunk/freeglut/freeglut/src/x11/fg_state_x11_glx.c 2012-04-21 19:04:02 UTC (rev 1259) @@ -27,6 +27,7 @@ #include <GL/freeglut.h> #include "fg_internal.h" +#include "x11/fg_window_x11_glx.h" /* * Queries the GL context about some attributes @@ -34,7 +35,7 @@ int fgPlatformGetConfig( int attribute ) { int returnValue = 0; - int result; /* Not checked */ + int result __fg_unused; /* Not checked */ if( fgStructure.CurrentWindow ) result = glXGetFBConfigAttrib( fgDisplay.pDisplay.Display, @@ -170,7 +171,7 @@ if (fbconfigArray != NULL) { int * temp_array; - int result; /* Returned by glXGetFBConfigAttrib. Not checked. */ + int result __fg_unused; /* Returned by glXGetFBConfigAttrib. Not checked. */ int previous_value; int i; Added: trunk/freeglut/freeglut/src/x11/fg_state_x11_glx.h =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_state_x11_glx.h (rev 0) +++ trunk/freeglut/freeglut/src/x11/fg_state_x11_glx.h 2012-04-21 19:04:02 UTC (rev 1259) @@ -0,0 +1,35 @@ +/* + * fg_state_x11_glx.c + * + * X11-specific freeglut state query methods. + * + * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. + * Written by Pawel W. Olszta, <ol...@so...> + * Copied for Platform code by Evan Felix <karcaw at gmail.com> + * Creation date: Thur Feb 2 2012 + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __FG_STATE_X11_GLX_H__ +#define __FG_STATE_X11_GLX_H__ + +int fgPlatformGetConfig(int attribute); +int fghPlatformGlutGetGLX(GLenum eWhat); + +#endif Modified: trunk/freeglut/freeglut/src/x11/fg_window_x11_glx.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_window_x11_glx.c 2012-04-21 18:22:24 UTC (rev 1258) +++ trunk/freeglut/freeglut/src/x11/fg_window_x11_glx.c 2012-04-21 19:04:02 UTC (rev 1259) @@ -115,7 +115,7 @@ if (fbconfigArray != NULL) { - int result; /* Returned by glXGetFBConfigAttrib, not checked. */ + int result __fg_unused; /* Returned by glXGetFBConfigAttrib, not checked. */ if( wantIndexedMode ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-04-21 20:26:57
|
Revision: 1258 http://freeglut.svn.sourceforge.net/freeglut/?rev=1258&view=rev Author: beuc Date: 2012-04-21 18:22:24 +0000 (Sat, 21 Apr 2012) Log Message: ----------- Fix more compiler warnings Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/fg_gl2.h trunk/freeglut/freeglut/src/fg_init.c trunk/freeglut/freeglut/src/fg_input_devices.c trunk/freeglut/freeglut/src/fg_internal.h trunk/freeglut/freeglut/src/mswin/fg_gamemode_mswin.c trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c trunk/freeglut/freeglut/src/x11/fg_init_x11.c trunk/freeglut/freeglut/src/x11/fg_input_devices_x11.c trunk/freeglut/freeglut/src/x11/fg_joystick_x11.c trunk/freeglut/freeglut/src/x11/fg_main_x11.c trunk/freeglut/freeglut/src/x11/fg_state_x11.c trunk/freeglut/freeglut/src/x11/fg_structure_x11.c trunk/freeglut/freeglut/src/x11/fg_window_x11.c Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-04-21 18:22:24 UTC (rev 1258) @@ -46,6 +46,7 @@ src/fg_gl2.c src/fg_gl2.h src/fg_init.c + src/fg_init.h src/fg_internal.h src/fg_input_devices.c src/fg_joystick.c @@ -139,7 +140,7 @@ src/x11/fg_window_x11.c src/x11/fg_xinput_x11.c ) - IF(!(FREEGLUT_GLES2 OR FREEGLUT_GLES1)) + IF(NOT(FREEGLUT_GLES2 OR FREEGLUT_GLES1)) LIST(APPEND FREEGLUT_SRCS src/x11/fg_internal_x11_glx.h src/x11/fg_display_x11_glx.c @@ -194,7 +195,7 @@ ENDIF() IF(CMAKE_COMPILER_IS_GNUCC) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") IF(!ANDROID) # not setting -ansi as EGL/KHR headers doesn't support it SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ansi") Modified: trunk/freeglut/freeglut/src/fg_gl2.h =================================================================== --- trunk/freeglut/freeglut/src/fg_gl2.h 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/fg_gl2.h 2012-04-21 18:22:24 UTC (rev 1258) @@ -77,4 +77,6 @@ # endif +extern void fgInitGL2(); + #endif Modified: trunk/freeglut/freeglut/src/fg_init.c =================================================================== --- trunk/freeglut/freeglut/src/fg_init.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/fg_init.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -28,6 +28,7 @@ #define FREEGLUT_BUILDING_LIB #include <GL/freeglut.h> #include "fg_internal.h" +#include "fg_gl2.h" /* * TODO BEFORE THE STABLE RELEASE: @@ -102,9 +103,7 @@ extern void fgPlatformDeinitialiseInputDevices ( void ); extern void fgPlatformCloseDisplay ( void ); extern void fgPlatformDestroyContext ( SFG_PlatformDisplay pDisplay, SFG_WindowContextType MContext ); -extern void fgInitGL2(); - void fghParseCommandLineArguments ( int* pargc, char** argv, char **pDisplayName, char **pGeometry ) { #ifndef _WIN32_WCE Modified: trunk/freeglut/freeglut/src/fg_input_devices.c =================================================================== --- trunk/freeglut/freeglut/src/fg_input_devices.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/fg_input_devices.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -166,7 +166,6 @@ static int dial_state = DIAL_NEW; static int dial_which; static int dial_value; - static int dials[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; if ( !dialbox_port ) return; @@ -187,7 +186,6 @@ case DIAL_VALUE_LOW: dial_value |= data; if ( dial_value & 0x8000 ) dial_value -= 0x10000; - dials[dial_which] = dial_value; send_dial_event ( dial_which + 1, dial_value * 360 / 256 ); dial_state = DIAL_WHICH_DEVICE; break; Modified: trunk/freeglut/freeglut/src/fg_internal.h =================================================================== --- trunk/freeglut/freeglut/src/fg_internal.h 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/fg_internal.h 2012-04-21 18:22:24 UTC (rev 1258) @@ -166,8 +166,14 @@ typedef unsigned long fg_time_t; #endif +#ifndef __fg_unused +# ifdef __GNUC__ +# define __fg_unused __attribute__((unused)) +# else +# define __fg_unused +# endif +#endif - /* Platform-specific includes */ #if TARGET_HOST_POSIX_X11 #include "x11/fg_internal_x11.h" Modified: trunk/freeglut/freeglut/src/mswin/fg_gamemode_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_gamemode_mswin.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/mswin/fg_gamemode_mswin.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -137,7 +137,7 @@ /* magic happenings behind my back, its lib for devels at last ;) */ /* append display mode to error to make things more informative */ - sprintf(displayMode,"%s Problem with requested mode: %ix%i:%i@%i", fggmstr, devMode.dmPelsWidth, devMode.dmPelsHeight, devMode.dmBitsPerPel, devMode.dmDisplayFrequency); + sprintf(displayMode,"%s Problem with requested mode: %lux%lu:%lu@%lu", fggmstr, devMode.dmPelsWidth, devMode.dmPelsHeight, devMode.dmBitsPerPel, devMode.dmDisplayFrequency); fgWarning(displayMode); } Modified: trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -394,10 +394,12 @@ /* If window has title bar, correct rect for it */ if (windowStyle & WS_MAXIMIZEBOX) /* Need to query for WS_MAXIMIZEBOX to see if we have a title bar, the WS_CAPTION query is also true for a WS_DLGFRAME only... */ + { if (posIsOutside) clientRect->bottom += GetSystemMetrics( SM_CYCAPTION ); else clientRect->top -= GetSystemMetrics( SM_CYCAPTION ); + } /* get width of window's borders (frame), correct rect for it. * Note, borders can be of zero width if style does not specify borders @@ -462,10 +464,12 @@ /* If window has title bar, correct rect for it */ if (windowStyle & WS_MAXIMIZEBOX) /* Need to query for WS_MAXIMIZEBOX to see if we have a title bar, the WS_CAPTION query is also true for a WS_DLGFRAME only... */ + { if (wantPosOutside) windowRect->bottom -= GetSystemMetrics( SM_CYCAPTION ); else windowRect->top += GetSystemMetrics( SM_CYCAPTION ); + } /* get width of window's borders (frame), correct rect for it. * Note, borders can be of zero width if style does not specify borders Modified: trunk/freeglut/freeglut/src/x11/fg_init_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_init_x11.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/x11/fg_init_x11.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -29,7 +29,9 @@ #define FREEGLUT_BUILDING_LIB #include <limits.h> /* LONG_MAX */ #include <GL/freeglut.h> -#include "../fg_internal.h" +#include "fg_internal.h" +#include "fg_init.h" +#include "egl/fg_init_egl.h" /* Return the atom associated with "name". */ static Atom fghGetAtom(const char * name) Modified: trunk/freeglut/freeglut/src/x11/fg_input_devices_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_input_devices_x11.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/x11/fg_input_devices_x11.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -56,9 +56,6 @@ void serial_flush ( SERIALPORT *port ); -/* local variables */ -static SERIALPORT *dialbox_port=NULL; - /*****************************************************************/ /* Modified: trunk/freeglut/freeglut/src/x11/fg_joystick_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_joystick_x11.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/x11/fg_joystick_x11.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -48,8 +48,6 @@ { int status; - int i; - #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) int len; Modified: trunk/freeglut/freeglut/src/x11/fg_main_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_main_x11.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/x11/fg_main_x11.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -40,6 +40,8 @@ # define VFPRINTF(s,f,a) #endif +#include "fg_main.h" + /* * Try to get the maximum value allowed for ints, falling back to the minimum * guaranteed by ISO C99 if there is no suitable header. @@ -298,7 +300,7 @@ } } -static void fghPrintEvent( XEvent *event ) +__fg_unused static void fghPrintEvent( XEvent *event ) { switch( event->type ) { Modified: trunk/freeglut/freeglut/src/x11/fg_state_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_state_x11.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/x11/fg_state_x11.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -26,7 +26,10 @@ */ #include <GL/freeglut.h> -#include "../fg_internal.h" +#include "fg_internal.h" +#ifdef EGL_VERSION_1_0 +#include "egl/fg_state_egl.h" +#endif int fgPlatformGlutDeviceGet ( GLenum eWhat ) { Modified: trunk/freeglut/freeglut/src/x11/fg_structure_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_structure_x11.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/x11/fg_structure_x11.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -27,7 +27,10 @@ */ #include <GL/freeglut.h> -#include "../fg_internal.h" +#include "fg_internal.h" +#ifdef EGL_VERSION_1_0 +#include "egl/fg_structure_egl.h" +#endif extern SFG_Structure fgStructure; Modified: trunk/freeglut/freeglut/src/x11/fg_window_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_window_x11.c 2012-04-21 18:05:56 UTC (rev 1257) +++ trunk/freeglut/freeglut/src/x11/fg_window_x11.c 2012-04-21 18:22:24 UTC (rev 1258) @@ -132,7 +132,6 @@ XWMHints wmHints; XEvent eventReturnBuffer; /* return buffer required for a call */ unsigned long mask; - int num_FBConfigs, i; unsigned int current_DisplayMode = fgState.DisplayMode ; /* Save the display mode if we are creating a menu window */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2012-07-23 08:53:04
|
Revision: 1363 http://freeglut.svn.sourceforge.net/freeglut/?rev=1363&view=rev Author: dcnieho Date: 2012-07-23 08:52:50 +0000 (Mon, 23 Jul 2012) Log Message: ----------- child window now only used for keyboard callbacks and setting focus in windowproc, was a bit overeager before Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/One/one.c trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c Modified: trunk/freeglut/freeglut/progs/demos/One/one.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/One/one.c 2012-07-23 07:04:06 UTC (rev 1362) +++ trunk/freeglut/freeglut/progs/demos/One/one.c 2012-07-23 08:52:50 UTC (rev 1363) @@ -187,7 +187,6 @@ { int window = glutGetWindow () ; printf ( "Window %d Entry Callback: %d\n", window, state ) ; - glutPostRedisplay () ; } /* Modified: trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2012-07-23 07:04:06 UTC (rev 1362) +++ trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2012-07-23 08:52:50 UTC (rev 1363) @@ -225,10 +225,9 @@ static unsigned char lControl = 0, rControl = 0, lShift = 0, rShift = 0, lAlt = 0, rAlt = 0; - SFG_Window* window; + SFG_Window *window, *child_window = NULL; PAINTSTRUCT ps; LRESULT lRet = 1; - GLboolean gotChild = GL_FALSE; FREEGLUT_INTERNAL_ERROR_EXIT_IF_NOT_INITIALISED ( "Event Handler" ) ; @@ -240,35 +239,39 @@ /* printf ( "Window %3d message <%04x> %12d %12d\n", window?window->ID:0, uMsg, wParam, lParam ); */ - /* events only sent to main window. Check if the current window that the mouse - is over is a child window and if so, make sure we call the callback on that - child instead. - */ + /* Some events only sent to main window. Check if the current window that + * the mouse is over is a child window. Below whn handling some messages, + * we make sure that we process callbacks on the child window instead. + * This mirrors how GLUT does things. + */ if (window && window->Children.First) { POINT mouse_pos; SFG_WindowHandleType hwnd; + SFG_Window* temp_window; GetCursorPos( &mouse_pos ); ScreenToClient( window->Window.Handle, &mouse_pos ); hwnd = ChildWindowFromPoint(window->Window.Handle, mouse_pos); if (hwnd) /* can be NULL if mouse outside parent by the time we get here */ { - window = fgWindowByHandle(hwnd); - if (window->Parent) - gotChild = GL_TRUE; + temp_window = fgWindowByHandle(hwnd); + if (temp_window->Parent) /* Verify we got a child window */ + child_window = temp_window; } } if ( window ) { + SFG_Window* temp_window = child_window?child_window:window; + fgState.Modifiers = fgPlatformGetModifiers( ); /* Checking for CTRL, ALT, and SHIFT key positions: Key Down! */ if ( !lControl && GetAsyncKeyState ( VK_LCONTROL ) ) { - INVOKE_WCB ( *window, Special, - ( GLUT_KEY_CTRL_L, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, Special, + ( GLUT_KEY_CTRL_L, temp_window->State.MouseX, temp_window->State.MouseY ) ); lControl = 1; @@ -276,8 +279,8 @@ if ( !rControl && GetAsyncKeyState ( VK_RCONTROL ) ) { - INVOKE_WCB ( *window, Special, - ( GLUT_KEY_CTRL_R, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, Special, + ( GLUT_KEY_CTRL_R, temp_window->State.MouseX, temp_window->State.MouseY ) ); rControl = 1; @@ -285,8 +288,8 @@ if ( !lShift && GetAsyncKeyState ( VK_LSHIFT ) ) { - INVOKE_WCB ( *window, Special, - ( GLUT_KEY_SHIFT_L, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, Special, + ( GLUT_KEY_SHIFT_L, temp_window->State.MouseX, temp_window->State.MouseY ) ); lShift = 1; @@ -294,8 +297,8 @@ if ( !rShift && GetAsyncKeyState ( VK_RSHIFT ) ) { - INVOKE_WCB ( *window, Special, - ( GLUT_KEY_SHIFT_R, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, Special, + ( GLUT_KEY_SHIFT_R, temp_window->State.MouseX, temp_window->State.MouseY ) ); rShift = 1; @@ -303,8 +306,8 @@ if ( !lAlt && GetAsyncKeyState ( VK_LMENU ) ) { - INVOKE_WCB ( *window, Special, - ( GLUT_KEY_ALT_L, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, Special, + ( GLUT_KEY_ALT_L, temp_window->State.MouseX, temp_window->State.MouseY ) ); lAlt = 1; @@ -312,8 +315,8 @@ if ( !rAlt && GetAsyncKeyState ( VK_RMENU ) ) { - INVOKE_WCB ( *window, Special, - ( GLUT_KEY_ALT_R, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, Special, + ( GLUT_KEY_ALT_R, temp_window->State.MouseX, temp_window->State.MouseY ) ); rAlt = 1; @@ -322,8 +325,8 @@ /* Checking for CTRL, ALT, and SHIFT key positions: Key Up! */ if ( lControl && !GetAsyncKeyState ( VK_LCONTROL ) ) { - INVOKE_WCB ( *window, SpecialUp, - ( GLUT_KEY_CTRL_L, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, SpecialUp, + ( GLUT_KEY_CTRL_L, temp_window->State.MouseX, temp_window->State.MouseY ) ); lControl = 0; @@ -331,8 +334,8 @@ if ( rControl && !GetAsyncKeyState ( VK_RCONTROL ) ) { - INVOKE_WCB ( *window, SpecialUp, - ( GLUT_KEY_CTRL_R, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, SpecialUp, + ( GLUT_KEY_CTRL_R, temp_window->State.MouseX, temp_window->State.MouseY ) ); rControl = 0; @@ -340,8 +343,8 @@ if ( lShift && !GetAsyncKeyState ( VK_LSHIFT ) ) { - INVOKE_WCB ( *window, SpecialUp, - ( GLUT_KEY_SHIFT_L, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, SpecialUp, + ( GLUT_KEY_SHIFT_L, temp_window->State.MouseX, temp_window->State.MouseY ) ); lShift = 0; @@ -349,8 +352,8 @@ if ( rShift && !GetAsyncKeyState ( VK_RSHIFT ) ) { - INVOKE_WCB ( *window, SpecialUp, - ( GLUT_KEY_SHIFT_R, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, SpecialUp, + ( GLUT_KEY_SHIFT_R, temp_window->State.MouseX, temp_window->State.MouseY ) ); rShift = 0; @@ -358,8 +361,8 @@ if ( lAlt && !GetAsyncKeyState ( VK_LMENU ) ) { - INVOKE_WCB ( *window, SpecialUp, - ( GLUT_KEY_ALT_L, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, SpecialUp, + ( GLUT_KEY_ALT_L, temp_window->State.MouseX, temp_window->State.MouseY ) ); lAlt = 0; @@ -367,8 +370,8 @@ if ( rAlt && !GetAsyncKeyState ( VK_RMENU ) ) { - INVOKE_WCB ( *window, SpecialUp, - ( GLUT_KEY_ALT_R, window->State.MouseX, window->State.MouseY ) + INVOKE_WCB ( *temp_window, SpecialUp, + ( GLUT_KEY_ALT_R, temp_window->State.MouseX, temp_window->State.MouseY ) ); rAlt = 0; @@ -491,16 +494,25 @@ case WM_SETFOCUS: /* printf("WM_SETFOCUS: %p\n", window ); */ - if (gotChild) - /* If child should have focus instead, set it here. */ - SetFocus(window->Window.Handle); lRet = DefWindowProc( hWnd, uMsg, wParam, lParam ); - INVOKE_WCB( *window, Entry, ( GLUT_ENTERED ) ); + if (child_window) + { + /* If child should have focus instead, set it here. */ + SetFocus(child_window->Window.Handle); + SetActiveWindow( child_window->Window.Handle ); + INVOKE_WCB( *child_window, Entry, ( GLUT_ENTERED ) ); + UpdateWindow ( child_window->Window.Handle ); + } + else + { + SetActiveWindow( window->Window.Handle ); + INVOKE_WCB( *window, Entry, ( GLUT_ENTERED ) ); + } + /* Always request update on main window to be safe */ UpdateWindow ( hWnd ); - if (gotChild) - UpdateWindow ( window->Window.Handle ); + break; case WM_KILLFOCUS: @@ -811,6 +823,8 @@ int keypress = -1; POINT mouse_pos ; + if (child_window) + window = child_window; if( ( fgState.KeyRepeat==GLUT_KEY_REPEAT_OFF || window->State.IgnoreKeyRepeat==GL_TRUE ) && (HIWORD(lParam) & KF_REPEAT) ) break; @@ -905,6 +919,9 @@ int keypress = -1; POINT mouse_pos; + if (child_window) + window = child_window; + /* * Remember the current modifiers state. This is done here in order * to make sure the VK_DELETE keyboard callback is executed properly. @@ -991,6 +1008,9 @@ case WM_SYSCHAR: case WM_CHAR: { + if (child_window) + window = child_window; + if( (fgState.KeyRepeat==GLUT_KEY_REPEAT_OFF || window->State.IgnoreKeyRepeat==GL_TRUE) && (HIWORD(lParam) & KF_REPEAT) ) break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2012-07-23 13:53:06
|
Revision: 1367 http://freeglut.svn.sourceforge.net/freeglut/?rev=1367&view=rev Author: dcnieho Date: 2012-07-23 13:52:55 +0000 (Mon, 23 Jul 2012) Log Message: ----------- glutGet(GLUT_WINDOW_X) and glutGet(GLUT_WINDOW_Y) on a child window now return top-left of child w.r.t. parent's client area resizer demo now also has child window button 'c'. doesn't work with fullscreen for some reason.... Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.cpp trunk/freeglut/freeglut/src/mswin/fg_state_mswin.c Modified: trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.cpp =================================================================== --- trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.cpp 2012-07-23 10:37:40 UTC (rev 1366) +++ trunk/freeglut/freeglut/progs/demos/Resizer/Resizer.cpp 2012-07-23 13:52:55 UTC (rev 1367) @@ -2,21 +2,26 @@ #include <GL/freeglut.h> -int nWindow; +int nWindow, nChildWindow = -1; int nLoopMain = 0; int nPosX, nPosY; int nWidth, nHeight; +GLboolean bChildPosDone = GL_FALSE, bChildSizeDone = GL_FALSE; + void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ); void Redisplay(); +void Reshape(int x, int y); - void DrawQuad() { + nWidth = glutGet(GLUT_WINDOW_WIDTH); + nHeight = glutGet(GLUT_WINDOW_HEIGHT); + glBegin(GL_QUADS); glVertex2d(nWidth*.25, nHeight*.75); glVertex2d(nWidth*.75, nHeight*.75); @@ -27,36 +32,107 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ) { - if (cChar == 27) + switch (cChar) + { + case 27: glutLeaveMainLoop(); - else if (cChar=='f') - { + break; + + + case 'f': + case 'F': printf("main window toggle fullscreen\n"); - glutFullScreenToggle(); - } - else if (cChar=='r') - { - printf("main window resize\n"); - if (nWidth<400) - glutReshapeWindow(600,300); + break; + + + case 'r': + case 'R': + if (nChildWindow!=-1) + { + glutSetWindow(nChildWindow); + printf("child window resize\n"); + if (!bChildSizeDone) + glutReshapeWindow(glutGet(GLUT_WINDOW_WIDTH)+50,glutGet(GLUT_WINDOW_HEIGHT)+50); + else + glutReshapeWindow(glutGet(GLUT_WINDOW_WIDTH)-50,glutGet(GLUT_WINDOW_HEIGHT)-50); + bChildSizeDone = !bChildSizeDone; + } else - glutReshapeWindow(300,300); - } - else if (cChar=='m') - { - printf("main window position\n"); + { + printf("main window resize\n"); + if (nWidth<400) + glutReshapeWindow(600,300); + else + glutReshapeWindow(300,300); + } - /* The window position you request is the outer top-left of the window, - * the client area is at a different position if the window has borders - * and/or a title bar. - */ - if (nPosX<400) - glutPositionWindow(600,300); + break; + + + case 'm': + case 'M': + if (nChildWindow!=-1) + { + glutSetWindow(nChildWindow); + + /* The window position you request is relative to the top-left + * corner of the client area of the parent window. + */ + if (!bChildPosDone) + glutPositionWindow(glutGet(GLUT_WINDOW_X)+50,glutGet(GLUT_WINDOW_Y)+50); + else + glutPositionWindow(glutGet(GLUT_WINDOW_X)-50,glutGet(GLUT_WINDOW_Y)-50); + bChildPosDone = !bChildPosDone; + } else - glutPositionWindow(300,300); + { + printf("main window position\n"); + + /* The window position you request is the outer top-left of the window, + * the client area is at a different position if the window has borders + * and/or a title bar. + */ + if (nPosX<400) + glutPositionWindow(600,300); + else + glutPositionWindow(300,300); + } + + break; + + + case 'c': + case 'C': + if (nChildWindow==-1) + { + /* open child window */ + printf("open child window\n"); + nWidth = glutGet(GLUT_WINDOW_WIDTH); + nHeight = glutGet(GLUT_WINDOW_HEIGHT); + + nChildWindow = glutCreateSubWindow(nWindow,(int)(nWidth*.35),(int)(nHeight*.35),(int)(nWidth*.3),(int)(nHeight*.3)); + glutKeyboardFunc( SampleKeyboard ); + glutDisplayFunc( Redisplay ); + glutReshapeFunc( Reshape ); + } + else + { + /* close child window */ + printf("close child window\n"); + glutSetWindow(nWindow); + glutDestroyWindow(nChildWindow); + nChildWindow = -1; + bChildSizeDone = GL_FALSE; + bChildPosDone = GL_FALSE; + } + break; + + + default: + break; } } @@ -67,18 +143,32 @@ void Reshape(int x, int y) { + int win = glutGetWindow(); + nWidth = glutGet(GLUT_WINDOW_WIDTH); nHeight = glutGet(GLUT_WINDOW_HEIGHT); + printf("reshape %s, %dx%d\n",win==nWindow?"main":"child", + nWidth, nHeight); glViewport(0,0,nWidth,nHeight); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0,nWidth,0,nHeight); + + if (win==nWindow && nChildWindow!=-1) + { + glutSetWindow(nChildWindow); + glutPositionWindow((int)(nWidth*.35),(int)(nHeight*.35)); + glutReshapeWindow((int)(nWidth*.3),(int)(nHeight*.3)); + glutSetWindow(nWindow); + } } void Redisplay(void) { - if (nLoopMain++%6==0) + int win = glutGetWindow(); + + if (nLoopMain++%20==0) { int border, caption; @@ -96,20 +186,35 @@ * or simply when maximized--try pressing the maximize button). * the returned size is the size of the client area */ - printf("window now %dx%d, top-left of client at: (%d,%d), of window at: (%d,%d)\n", + if (win==nWindow) + printf("main window %dx%d, top-left of client at: (%d,%d), of window at: (%d,%d)\n", + nWidth, nHeight, + nPosX ,nPosY, + nPosX-border, + nPosY-border-caption); + else + printf("child window %dx%d, top-left of client at: (%d,%d), relative to parent\n", nWidth, nHeight, - nPosX ,nPosY, - nPosX-border, - nPosY-border-caption); + nPosX ,nPosY); } - glClearColor(.2f,0.f,0.f,0.f); + if (win==nWindow) + { + glClearColor(.2f,0.f,0.f,0.f); + glColor3f(1,1,1); + } + else + { + /* child window */ + glClearColor(.0f,.2f,0.f,0.f); + glColor3f(.5,.5,.5); + glutPostWindowRedisplay(nWindow); + } glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1,1,1); DrawQuad(); glutSwapBuffers(); - glutPostRedisplay(); + glutPostWindowRedisplay(win); } @@ -136,5 +241,5 @@ glutMainLoop(); printf("glutMainLoop returned\n"); - return 1; + return EXIT_SUCCESS; } \ No newline at end of file Modified: trunk/freeglut/freeglut/src/mswin/fg_state_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_state_mswin.c 2012-07-23 10:37:40 UTC (rev 1366) +++ trunk/freeglut/freeglut/src/mswin/fg_state_mswin.c 2012-07-23 13:52:55 UTC (rev 1367) @@ -183,6 +183,19 @@ GetWindowRect( fgStructure.CurrentWindow->Window.Handle, &winRect ); #else winRect = fghGetClientArea(fgStructure.CurrentWindow, FALSE); + if (fgStructure.CurrentWindow->Parent && (eWhat==GLUT_WINDOW_X || eWhat==GLUT_WINDOW_Y)) + { + /* For child window, we should return relative to upper-left + * of parent's client area. + */ + POINT topleft; + topleft.x = winRect.left; + topleft.y = winRect.top; + + ScreenToClient(fgStructure.CurrentWindow->Parent->Window.Handle,&topleft); + winRect.left = topleft.x; + winRect.top = topleft.y; + } #endif /* defined(_WIN32_WCE) */ switch( eWhat ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2012-11-17 01:02:37
|
Revision: 1398 http://freeglut.svn.sourceforge.net/freeglut/?rev=1398&view=rev Author: dcnieho Date: 2012-11-17 01:02:30 +0000 (Sat, 17 Nov 2012) Log Message: ----------- menus attached to child windows did not appear in the right place. Fixed in fghActivateMenu, whose logic is now simpler and commented as well Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/One/one.c trunk/freeglut/freeglut/src/fg_menu.c Modified: trunk/freeglut/freeglut/progs/demos/One/one.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/One/one.c 2012-11-17 00:07:30 UTC (rev 1397) +++ trunk/freeglut/freeglut/progs/demos/One/one.c 2012-11-17 01:02:30 UTC (rev 1398) @@ -277,13 +277,18 @@ */ void SampleMenu( int menuID ) { - /* - * Just print something funny - */ printf( "SampleMenu() callback executed, menuID is %i\n", menuID ); } /* + * A sample menu status callback + */ +void SampleMenuStatus( int status, int x, int y ) +{ + printf ( "SampleMenu() callback executed, MenuStatus is %i at (%i,%i)\n", status, x, y ); +} + +/* * The sample's entry point */ int main( int argc, char** argv ) @@ -325,6 +330,7 @@ glutSpecialFunc( SampleSpecial ); glutIdleFunc( SampleIdle ); glutEntryFunc( SampleEntry ); + glutMenuStatusFunc( SampleMenuStatus ); glutAttachMenu( GLUT_LEFT_BUTTON ); glutInitWindowPosition( 200, 200 ); @@ -334,6 +340,8 @@ glutKeyboardFunc( SampleKeyboard ); glutSpecialFunc( SampleSpecial ); glutIdleFunc( SampleIdle ); + glutEntryFunc( SampleEntry ); + glutMenuStatusFunc( SampleMenuStatus ); glutAttachMenu( GLUT_LEFT_BUTTON ); glutSetMenu(subMenuA); glutAttachMenu( GLUT_RIGHT_BUTTON ); @@ -367,6 +375,8 @@ glutReshapeFunc( SampleReshape ); glutKeyboardFunc( SampleGameModeKeyboard ); glutIdleFunc( SampleIdle ); + glutEntryFunc( SampleEntry ); + glutMenuStatusFunc( SampleMenuStatus ); glutSetMenu(menuID); glutAttachMenu( GLUT_LEFT_BUTTON ); Modified: trunk/freeglut/freeglut/src/fg_menu.c =================================================================== --- trunk/freeglut/freeglut/src/fg_menu.c 2012-11-17 00:07:30 UTC (rev 1397) +++ trunk/freeglut/freeglut/src/fg_menu.c 2012-11-17 01:02:30 UTC (rev 1398) @@ -509,6 +509,7 @@ static void fghActivateMenu( SFG_Window* window, int button ) { int max_x, max_y; + SFG_XYUse mouse_pos; /* We'll be referencing this menu a lot, so remember its address: */ SFG_Menu* menu = window->Menu[ button ]; @@ -527,9 +528,17 @@ /* Set up the initial menu position now: */ fghGetVMaxExtent(menu->ParentWindow, &max_x, &max_y); fgSetWindow( window ); - menu->X = window->State.MouseX + glutGet( GLUT_WINDOW_X ); - menu->Y = window->State.MouseY + glutGet( GLUT_WINDOW_Y ); + /* get mouse position on screen (window->State.MouseX and window->State.MouseY + * are relative to client area origin), and not easy to correct given that + * glutGet( GLUT_WINDOW_X ) and glutGet( GLUT_WINDOW_Y ) return relative to parent + * origin when looking at a child window + * for parent windows: window->State.MouseX + glutGet( GLUT_WINDOW_X ) == mouse_pos.X + */ + fghPlatformGetCursorPos(&mouse_pos); + menu->X = mouse_pos.X; + menu->Y = mouse_pos.Y; + /* Make sure the whole menu is on the screen */ if( menu->X + menu->Width > max_x ) menu->X -=menu->Width; @@ -540,10 +549,9 @@ menu->Y = 0; } - menu->Window->State.MouseX = - window->State.MouseX + glutGet( GLUT_WINDOW_X ) - menu->X; - menu->Window->State.MouseY = - window->State.MouseY + glutGet( GLUT_WINDOW_Y ) - menu->Y; + /* Set position of mouse relative to top-left menu in menu's window state (could as well set 0 at creation time...) */ + menu->Window->State.MouseX = mouse_pos.X - menu->X; + menu->Window->State.MouseY = mouse_pos.Y - menu->Y; /* Menu status callback */ if (fgState.MenuStateCallback || fgState.MenuStatusCallback) @@ -553,6 +561,7 @@ if (fgState.MenuStateCallback) fgState.MenuStateCallback(GLUT_MENU_IN_USE); if (fgState.MenuStatusCallback) + /* window->State.MouseX and window->State.MouseY are relative to client area origin, as needed */ fgState.MenuStatusCallback(GLUT_MENU_IN_USE, window->State.MouseX, window->State.MouseY); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2013-02-27 04:36:55
|
Revision: 1512 http://freeglut.svn.sourceforge.net/freeglut/?rev=1512&view=rev Author: dcnieho Date: 2013-02-27 04:36:48 +0000 (Wed, 27 Feb 2013) Log Message: ----------- Added subwindows to CallbackMaker demo, for testing and demonstration. Also figured out how key repeat's global and per-window flags are supposed to interact, documented and demonstrated it. Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c Modified: trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c 2013-02-27 03:58:05 UTC (rev 1511) +++ trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c 2013-02-27 04:36:48 UTC (rev 1512) @@ -11,16 +11,17 @@ static int sequence_number = 0 ; -int windows[2] = {0}; +#define CALLBACKMAKER_N_WINDOWS 4 +int windows[CALLBACKMAKER_N_WINDOWS] = {0}; /* define status vars showing whether given callback has been called for given window */ -#define CALLBACK_CALLED_VAR(name) int name##_called[2] = {0}; -#define CALLBACK_0V(name) int name##_seq[2] = {-1}; CALLBACK_CALLED_VAR(name); -#define CALLBACK_1V(name,field) int name##_##field[2] = {-1}; CALLBACK_0V(name); -#define CALLBACK_2V(name,field1,field2) int name##_##field2[2] = {-1}; CALLBACK_1V(name,field1); -#define CALLBACK_3V(name,field1,field2,field3) int name##_##field3[2] = {-1}; CALLBACK_2V(name,field1,field2); -#define CALLBACK_4V(name,field1,field2,field3,field4) int name##_##field4[2] = {-1}; CALLBACK_3V(name,field1,field2,field3); -#define CALLBACK_5V(name,field1,field2,field3,field4,field5) int name##_##field5[2] = {-1}; CALLBACK_4V(name,field1,field2,field3,field4); +#define CALLBACK_CALLED_VAR(name) int name##_called[CALLBACKMAKER_N_WINDOWS] = {0}; +#define CALLBACK_0V(name) int name##_seq[CALLBACKMAKER_N_WINDOWS] = {-1}; CALLBACK_CALLED_VAR(name); +#define CALLBACK_1V(name,field) int name##_##field[CALLBACKMAKER_N_WINDOWS] = {-1}; CALLBACK_0V(name); +#define CALLBACK_2V(name,field1,field2) int name##_##field2[CALLBACKMAKER_N_WINDOWS] = {-1}; CALLBACK_1V(name,field1); +#define CALLBACK_3V(name,field1,field2,field3) int name##_##field3[CALLBACKMAKER_N_WINDOWS] = {-1}; CALLBACK_2V(name,field1,field2); +#define CALLBACK_4V(name,field1,field2,field3,field4) int name##_##field4[CALLBACKMAKER_N_WINDOWS] = {-1}; CALLBACK_3V(name,field1,field2,field3); +#define CALLBACK_5V(name,field1,field2,field3,field4,field5) int name##_##field5[CALLBACKMAKER_N_WINDOWS] = {-1}; CALLBACK_4V(name,field1,field2,field3,field4); CALLBACK_2V(reshape,width,height); CALLBACK_2V(position,top,left); CALLBACK_1V(visibility,vis); @@ -65,7 +66,9 @@ int window = glutGetWindow(); if (winIdx) - (*winIdx) = window==windows[0]?0:1; + (*winIdx) = window==windows[0] ? 0 : + window==windows[1] ? 1 : + window==windows[2] ? 2 : 3; return window; } @@ -565,6 +568,36 @@ ++sequence_number ; } +static void SetWindowCallbacks( int first ) +{ + /* All these callbacks are set for only the current window */ + glutDisplayFunc( Display ); + glutReshapeFunc( Reshape ); + glutPositionFunc( Position ); + glutKeyboardFunc( Key ); + glutSpecialFunc( Special ); + glutVisibilityFunc( Visibility ); + glutKeyboardUpFunc( KeyUp ); + glutSpecialUpFunc( SpecialUp ); + if (first) + glutJoystickFunc( Joystick, 100 ); + glutMouseFunc ( Mouse ) ; + glutMouseWheelFunc ( MouseWheel ) ; + glutMotionFunc ( Motion ) ; + glutPassiveMotionFunc ( PassiveMotion ) ; + glutEntryFunc ( Entry ) ; + glutCloseFunc ( Close ) ; + glutOverlayDisplayFunc ( OverlayDisplay ) ; + glutWindowStatusFunc ( WindowStatus ) ; + glutSpaceballMotionFunc ( SpaceMotion ) ; + glutSpaceballRotateFunc ( SpaceRotation ) ; + glutSpaceballButtonFunc ( SpaceButton ) ; + glutButtonBoxFunc ( ButtonBox ) ; + glutDialsFunc ( Dials ) ; + glutTabletMotionFunc ( TabletMotion ) ; + glutTabletButtonFunc ( TabletButton ) ; +} + int main(int argc, char *argv[]) { @@ -578,44 +611,32 @@ glutInitWindowPosition ( 140, 140 ); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE ); glutInit(&argc, argv); + /* global setting: mainloop does not return when a window is closed, only returns when all windows are closed */ glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_CONTINUE_EXECUTION); + /* global setting: repeated keys generating by keeping the key pressed down are passed on to the keyboard callback */ + /* There are two functions to control this behavior, glutSetKeyRepeat to set it globally, and glutIgnoreKeyRepeat to set it per window. + * These two interact however. If key repeat is globally switched off (glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF)), it cannot be overridden + * (switched back on) for a specific window with glutIgnoreKeyRepeat. However, if key repeat is globally switched on + * (glutSetKeyRepeat(GLUT_KEY_REPEAT_ON)), it can be overridden (switched off) with glutIgnoreKeyRepeat on a per-window basis. That is + * what we demonstrate here. + */ + glutSetKeyRepeat(GLUT_KEY_REPEAT_ON); /* Set other global callback (global as in not associated with any specific menu or window) */ glutIdleFunc ( Idle ); glutMenuStatusFunc ( MenuStatus ); glutMenuStateFunc ( MenuState ); /* Note that glutMenuStatusFunc is an enhanced version of the deprecated glutMenuStateFunc. */ + + /* Open first window */ windows[0] = glutCreateWindow( "Callback Demo" ); printf ( "Creating window %d as 'Callback Demo'\n", windows[0] ) ; glClearColor(1.0, 1.0, 1.0, 1.0); - /* callbacks and settings specific to this window */ - glutDisplayFunc( Display ); - glutReshapeFunc( Reshape ); - glutPositionFunc( Position ); - glutKeyboardFunc( Key ); - glutSpecialFunc( Special ); - glutVisibilityFunc( Visibility ); - glutKeyboardUpFunc( KeyUp ); - glutSpecialUpFunc( SpecialUp ); - glutJoystickFunc( Joystick, 100 ); - glutMouseFunc ( Mouse ) ; - glutMouseWheelFunc ( MouseWheel ) ; - glutMotionFunc ( Motion ) ; - glutPassiveMotionFunc ( PassiveMotion ) ; - glutEntryFunc ( Entry ) ; - glutCloseFunc ( Close ) ; - glutOverlayDisplayFunc ( OverlayDisplay ) ; - glutWindowStatusFunc ( WindowStatus ) ; - glutSpaceballMotionFunc ( SpaceMotion ) ; - glutSpaceballRotateFunc ( SpaceRotation ) ; - glutSpaceballButtonFunc ( SpaceButton ) ; - glutButtonBoxFunc ( ButtonBox ) ; - glutDialsFunc ( Dials ) ; - glutTabletMotionFunc ( TabletMotion ) ; - glutTabletButtonFunc ( TabletButton ) ; - glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF) ; + /* callbacks, settings and menus for this window */ + SetWindowCallbacks( 1 ); + glutIgnoreKeyRepeat(GL_TRUE); subMenuA = glutCreateMenu( MenuCallback ); glutAddMenuEntry( "Sub menu A1 (01)", 11 ); @@ -642,44 +663,46 @@ glutAttachMenu( GLUT_LEFT_BUTTON ); + + /* Position second window right next to the first */ glutInitWindowPosition ( 140+500+2*glutGet(GLUT_WINDOW_BORDER_WIDTH), 140 ); - /* Position second window right next to the first */ + glutInitWindowSize(600, 600); windows[1] = glutCreateWindow( "Second Window" ); printf ( "Creating window %d as 'Second Window'\n", windows[1] ) ; glClearColor(1.0, 1.0, 1.0, 1.0); - /* callbacks and settings specific to this window */ - glutDisplayFunc( Display ); - glutReshapeFunc( Reshape ); - glutPositionFunc( Position ); - glutKeyboardFunc( Key ); - glutSpecialFunc( Special ); - glutVisibilityFunc( Visibility ); - glutKeyboardUpFunc( KeyUp ); - glutSpecialUpFunc( SpecialUp ); - /* glutJoystickFunc( Joystick, 100 ); */ - glutMouseFunc ( Mouse ) ; - glutMouseWheelFunc ( MouseWheel ) ; - glutMotionFunc ( Motion ) ; - glutPassiveMotionFunc ( PassiveMotion ) ; - glutEntryFunc ( Entry ) ; - glutCloseFunc ( Close ) ; - glutOverlayDisplayFunc ( OverlayDisplay ) ; - glutWindowStatusFunc ( WindowStatus ) ; - glutSpaceballMotionFunc ( SpaceMotion ) ; - glutSpaceballRotateFunc ( SpaceRotation ) ; - glutSpaceballButtonFunc ( SpaceButton ) ; - glutButtonBoxFunc ( ButtonBox ) ; - glutDialsFunc ( Dials ) ; - glutTabletMotionFunc ( TabletMotion ) ; - glutTabletButtonFunc ( TabletButton ) ; - glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF) ; + /* callbacks, settings and menus for this window */ + SetWindowCallbacks( 0 ); + glutIgnoreKeyRepeat(GL_TRUE); glutSetMenu(subMenuB); glutAttachMenu( GLUT_RIGHT_BUTTON ); + /* position a third window as a subwindow of the second */ + windows[2] = glutCreateSubWindow(windows[1],0,300,600,300); + printf ( "Creating window %d as subwindow to 'Second Window'\n", windows[2] ) ; + + glClearColor(0.7f, 0.7f, 0.7f, 1.0); + + /* callbacks and menus for this window */ + SetWindowCallbacks( 0 ); + + glutSetMenu(subMenuA); + glutAttachMenu( GLUT_RIGHT_BUTTON ); + + + /* position a fourth window as a subsubwindow (grandchild) of the second */ + windows[3] = glutCreateSubWindow(windows[2],300,0,300,300); + printf ( "Creating window %d as subsubwindow to 'Second Window'\n", windows[3] ) ; + + glClearColor(0.4f, 0.4f, 0.4f, 1.0); + + /* callbacks and menus for this window */ + SetWindowCallbacks( 0 ); + + printf ( "Please enter something to continue: " ); fgets ( dummy_string, STRING_LENGTH, stdin ); Modified: trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2013-02-27 03:58:05 UTC (rev 1511) +++ trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2013-02-27 04:36:48 UTC (rev 1512) @@ -179,6 +179,11 @@ POINT mouse_pos ; /* if keydown, check for repeat */ + /* If repeat is globally switched off, it cannot be switched back on per window. + * But if it is globally switched on, it can be switched off per window. This matches + * GLUT's behavior on X11, but not Nate Robbins' win32 GLUT, as he didn't implement the + * global state switch. + */ if( keydown && ( fgState.KeyRepeat==GLUT_KEY_REPEAT_OFF || window->State.IgnoreKeyRepeat==GL_TRUE ) && (HIWORD(lParam) & KF_REPEAT) ) return 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |