From: <dc...@us...> - 2013-02-28 08:53:38
|
Revision: 1529 http://freeglut.svn.sourceforge.net/freeglut/?rev=1529&view=rev Author: dcnieho Date: 2013-02-28 08:53:31 +0000 (Thu, 28 Feb 2013) Log Message: ----------- implemented GLUT_WINDOW_STENCIL_SIZE and GLUT_WINDOW_BUFFER_SIZE for glutGet Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/One/one.c trunk/freeglut/freeglut/src/mswin/fg_state_mswin.c Modified: trunk/freeglut/freeglut/progs/demos/One/one.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/One/one.c 2013-02-27 12:11:33 UTC (rev 1528) +++ trunk/freeglut/freeglut/progs/demos/One/one.c 2013-02-28 08:53:31 UTC (rev 1529) @@ -387,6 +387,12 @@ ); /* + * Describe pixel format + */ + printf("The current window has %i red bits, %i green bits, %i blue bits and %i alpha bits for a total buffer size of %i bits\n",glutGet(GLUT_WINDOW_RED_SIZE),glutGet(GLUT_WINDOW_GREEN_SIZE),glutGet(GLUT_WINDOW_BLUE_SIZE),glutGet(GLUT_WINDOW_ALPHA_SIZE),glutGet(GLUT_WINDOW_BUFFER_SIZE)); + printf("It furthermore has %i depth bits and %i stencil bits\n",glutGet(GLUT_WINDOW_DEPTH_SIZE),glutGet(GLUT_WINDOW_STENCIL_SIZE)); + + /* * Enter the main FreeGLUT processing loop */ glutMainLoop(); Modified: trunk/freeglut/freeglut/src/mswin/fg_state_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_state_mswin.c 2013-02-27 12:11:33 UTC (rev 1528) +++ trunk/freeglut/freeglut/src/mswin/fg_state_mswin.c 2013-02-28 08:53:31 UTC (rev 1529) @@ -141,10 +141,20 @@ return returnValue; case GLUT_WINDOW_BUFFER_SIZE: - returnValue = 1 ; /* TODO????? */ - return returnValue; + { + PIXELFORMATDESCRIPTOR pfd; + HDC hdc = fgStructure.CurrentWindow->Window.pContext.Device; + int iPixelFormat = GetPixelFormat( hdc ); + DescribePixelFormat(hdc, iPixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd); + + returnValue = pfd.cColorBits; + if (pfd.iPixelType==PFD_TYPE_RGBA) + returnValue += pfd.cAlphaBits; + + return returnValue; + } case GLUT_WINDOW_STENCIL_SIZE: - returnValue = 0 ; /* TODO????? */ + glGetIntegerv ( GL_STENCIL_BITS, &returnValue ); return returnValue; case GLUT_WINDOW_X: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2013-03-01 03:08:12
|
Revision: 1535 http://freeglut.svn.sourceforge.net/freeglut/?rev=1535&view=rev Author: dcnieho Date: 2013-03-01 03:08:05 +0000 (Fri, 01 Mar 2013) Log Message: ----------- library should call window status func at all times, translation to visibility callback happens if needed. Documented this, and added notes on visibility/windowstatus func in callbackmaker demo Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c trunk/freeglut/freeglut/src/fg_callbacks.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-03-01 02:42:14 UTC (rev 1534) +++ trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c 2013-03-01 03:08:05 UTC (rev 1535) @@ -576,7 +576,6 @@ glutPositionFunc( Position ); glutKeyboardFunc( Key ); glutSpecialFunc( Special ); - glutVisibilityFunc( Visibility ); glutKeyboardUpFunc( KeyUp ); glutSpecialUpFunc( SpecialUp ); if (first) @@ -588,7 +587,6 @@ glutEntryFunc ( Entry ) ; glutCloseFunc ( Close ) ; glutOverlayDisplayFunc ( OverlayDisplay ) ; - glutWindowStatusFunc ( WindowStatus ) ; glutSpaceballMotionFunc ( SpaceMotion ) ; glutSpaceballRotateFunc ( SpaceRotation ) ; glutSpaceballButtonFunc ( SpaceButton ) ; @@ -596,6 +594,11 @@ glutDialsFunc ( Dials ) ; glutTabletMotionFunc ( TabletMotion ) ; glutTabletButtonFunc ( TabletButton ) ; + /* glutVisibilityFunc is deprecated in favor of glutWindowStatusFunc, which provides more detail. + * Setting one of these overwrites the other (see docs). + */ + glutVisibilityFunc ( Visibility ); /* This will thus never be called, as glutWindowStatusFunc is set afterwards */ + glutWindowStatusFunc ( WindowStatus ) ; } int Modified: trunk/freeglut/freeglut/src/fg_callbacks.c =================================================================== --- trunk/freeglut/freeglut/src/fg_callbacks.c 2013-03-01 02:42:14 UTC (rev 1534) +++ trunk/freeglut/freeglut/src/fg_callbacks.c 2013-03-01 03:08:05 UTC (rev 1535) @@ -165,6 +165,13 @@ /* * Sets the Visibility callback for the current window. + * NB: the Visibility func is deprecated in favor of the WindowStatus func, + * which provides more detail. The visibility func callback is implemented + * as a translation step from the windowStatus func. When the user sets the + * windowStatus func, any visibility func is overwritten. + * DEVELOPER NOTE: in the library, only invoke the window status func, this + * gets automatically translated to the visibility func if thats what the + * user has set. */ static void fghVisibility( int status ) { Modified: trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2013-03-01 02:42:14 UTC (rev 1534) +++ trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2013-03-01 03:08:05 UTC (rev 1535) @@ -143,11 +143,11 @@ */ while( window ) { - if ( FETCH_WCB( *window, Visibility ) ) + if ( FETCH_WCB( *window, WindowStatus ) ) { SFG_Window *current_window = fgStructure.CurrentWindow ; - INVOKE_WCB( *window, Visibility, ( window->State.Visible ) ); + INVOKE_WCB( *window, WindowStatus, ( window->State.Visible?GLUT_FULLY_RETAINED:GLUT_HIDDEN ) ); fgSetWindow( current_window ); } @@ -872,8 +872,9 @@ if (!lParam || !fgWindowByHandle((HWND)lParam)) /* Capture released or capture taken by non-FreeGLUT window */ setCaptureActive = 0; - /* User has finished resizing the window, force a redraw */ - INVOKE_WCB( *window, Display, ( ) ); + /* Docs advise a redraw */ + InvalidateRect( hWnd, NULL, GL_FALSE ); + UpdateWindow(hWnd); lRet = 0; /* Per docs, should return zero */ break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2013-03-01 05:53:59
|
Revision: 1536 http://freeglut.svn.sourceforge.net/freeglut/?rev=1536&view=rev Author: dcnieho Date: 2013-03-01 05:53:51 +0000 (Fri, 01 Mar 2013) Log Message: ----------- implemented somewhat better visibility/windowstatus support, some small cleanup Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c Modified: trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c 2013-03-01 03:08:05 UTC (rev 1535) +++ trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c 2013-03-01 05:53:51 UTC (rev 1536) @@ -25,6 +25,7 @@ CALLBACK_2V(reshape,width,height); CALLBACK_2V(position,top,left); CALLBACK_1V(visibility,vis); +CALLBACK_1V(windowStatus,state); CALLBACK_4V(key,key,x,y,mod); CALLBACK_4V(keyup,key,x,y,mod); CALLBACK_4V(special,key,x,y,mod); @@ -122,6 +123,11 @@ bitmapPrintf ( "Visibility %d: %d\n", visibility_seq[winIdx], visibility_vis[winIdx] ); } + if ( windowStatus_called[winIdx] ) + { + bitmapPrintf ( "WindowStatus %d: %d\n", windowStatus_seq[winIdx], windowStatus_state[winIdx] ); + } + if ( reshape_called[winIdx] ) { bitmapPrintf ( "Reshape %d: %d %d\n", reshape_seq[winIdx], reshape_width[winIdx], reshape_height[winIdx] ); @@ -233,19 +239,6 @@ } static void -Visibility(int vis) -{ - int winIdx; - int window = getWindowAndIdx(&winIdx); - printf ( "%6d Window %d Visibility Callback: %d\n", - ++sequence_number, window, vis ) ; - visibility_called[winIdx] = 1 ; - visibility_vis[winIdx] = vis ; - visibility_seq[winIdx] = sequence_number ; - glutPostRedisplay () ; -} - -static void Reshape(int width, int height) { int winIdx; @@ -449,11 +442,28 @@ } static void +Visibility(int vis) +{ + int winIdx; + int window = getWindowAndIdx(&winIdx); + printf ( "%6d Window %d Visibility Callback: %d\n", + ++sequence_number, window, vis ) ; + visibility_called[winIdx] = 1 ; + visibility_vis[winIdx] = vis ; + visibility_seq[winIdx] = sequence_number ; + glutPostRedisplay () ; +} + +static void WindowStatus(int state) { - int window = getWindowAndIdx(NULL); + int winIdx; + int window = getWindowAndIdx(&winIdx); printf ( "%6d Window %d WindowStatus Callback: %d\n", ++sequence_number, window, state ) ; + windowStatus_called[winIdx] = 1 ; + windowStatus_state[winIdx] = state ; + windowStatus_seq[winIdx] = sequence_number ; glutPostRedisplay () ; } Modified: trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2013-03-01 03:08:05 UTC (rev 1535) +++ trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2013-03-01 05:53:51 UTC (rev 1536) @@ -128,6 +128,40 @@ +static void fghUpdateWindowStatus(SFG_Window *window, GLboolean visState) +{ + SFG_Window* child; + + if (window->State.Visible != visState) + { + window->State.Visible = visState; + INVOKE_WCB( *window, WindowStatus, ( visState ? GLUT_FULLY_RETAINED:GLUT_HIDDEN ) ); + } + + /* Also notify children */ + for( child = ( SFG_Window * )window->Children.First; + child; + child = ( SFG_Window * )child->Node.Next ) + { + fghUpdateWindowStatus(child, visState); + } +} + +static void fghNotifyWindowStatus(SFG_Window *window) +{ + SFG_Window* child; + + INVOKE_WCB( *window, WindowStatus, ( window->State.Visible?GLUT_FULLY_RETAINED:GLUT_HIDDEN ) ); + + /* Also notify children */ + for( child = ( SFG_Window * )window->Children.First; + child; + child = ( SFG_Window * )child->Node.Next ) + { + fghNotifyWindowStatus(child); + } +} + void fgPlatformMainLoopPreliminaryWork ( void ) { SFG_Window *window = (SFG_Window *)fgStructure.Windows.First ; @@ -147,7 +181,7 @@ { SFG_Window *current_window = fgStructure.CurrentWindow ; - INVOKE_WCB( *window, WindowStatus, ( window->State.Visible?GLUT_FULLY_RETAINED:GLUT_HIDDEN ) ); + fghNotifyWindowStatus(window); fgSetWindow( current_window ); } @@ -466,6 +500,7 @@ break; case WM_SIZE: + //printf("WM_SIZE (ID: %i): wParam: %i, new size: %ix%i \n",window->ID,wParam,LOWORD(lParam),HIWORD(lParam)); /* * If the window is visible, then it is the user manually resizing it. * If it is not, then it is the system sending us a dummy resize with @@ -488,28 +523,35 @@ window->State.NeedToResize = GL_TRUE; } + /* according to docs, should return 0 */ + lRet = 0; break; case WM_MOVE: { SFG_Window* saved_window = fgStructure.CurrentWindow; RECT windowRect; - GetWindowRect( window->Window.Handle, &windowRect ); + + /* Check window visible, we don't want to call the position callback when the user minimized the window */ + if (window->State.Visible) + { + GetWindowRect( window->Window.Handle, &windowRect ); - if (window->Parent) - { - /* For child window, we should return relative to upper-left - * of parent's client area. - */ - POINT topleft = {windowRect.left,windowRect.top}; + if (window->Parent) + { + /* For child window, we should return relative to upper-left + * of parent's client area. + */ + POINT topleft = {windowRect.left,windowRect.top}; - ScreenToClient(window->Parent->Window.Handle,&topleft); - windowRect.left = topleft.x; - windowRect.top = topleft.y; + ScreenToClient(window->Parent->Window.Handle,&topleft); + windowRect.left = topleft.x; + windowRect.top = topleft.y; + } + + INVOKE_WCB( *window, Position, ( windowRect.left, windowRect.top ) ); + fgSetWindow(saved_window); } - - INVOKE_WCB( *window, Position, ( windowRect.left, windowRect.top ) ); - fgSetWindow(saved_window); } break; @@ -535,7 +577,7 @@ #if 0 case WM_ACTIVATE: - //printf("WM_ACTIVATE: %x %d %d\n",lParam, HIWORD(wParam), LOWORD(wParam)); + //printf("WM_ACTIVATE: %x (ID: %i) %d %d\n",lParam, window->ID, HIWORD(wParam), LOWORD(wParam)); if (LOWORD(wParam) != WA_INACTIVE) { /* printf("WM_ACTIVATE: fgSetCursor( %p, %d)\n", window, @@ -596,7 +638,8 @@ break; case WM_SHOWWINDOW: - window->State.Visible = GL_TRUE; + //printf("WM_SHOWWINDOW\n"); + fghUpdateWindowStatus(window, GL_TRUE); window->State.Redisplay = GL_TRUE; break; @@ -605,6 +648,7 @@ PAINTSTRUCT ps; /* Turn on the visibility in case it was turned off somehow */ window->State.Visible = GL_TRUE; + InvalidateRect( hWnd, NULL, GL_FALSE ); /* Make sure whole window is repainted. Bit of a hack, but a safe one from what google turns up... */ BeginPaint( hWnd, &ps ); fghRedrawWindow( window ); @@ -939,7 +983,7 @@ case SC_MINIMIZE : /* User has clicked on the "-" to minimize the window */ /* Turn off the visibility */ - window->State.Visible = GL_FALSE ; + fghUpdateWindowStatus(window, GL_FALSE); break ; @@ -972,6 +1016,7 @@ break ; case SC_RESTORE : + fghUpdateWindowStatus(window, GL_TRUE); break ; case SC_TASKLIST : Modified: trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c 2013-03-01 03:08:05 UTC (rev 1535) +++ trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c 2013-03-01 05:53:51 UTC (rev 1536) @@ -751,7 +751,7 @@ ShowWindow( window->Window.Handle, SW_SHOW ); #else ShowWindow( window->Window.Handle, - fgState.ForceIconic ? SW_SHOWMINIMIZED : SW_SHOW ); + fgState.ForceIconic ? SW_SHOWMINIMIZED : SW_SHOWNORMAL ); #endif /* defined(_WIN32_WCE) */ UpdateWindow( window->Window.Handle ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2013-03-04 16:27:07
|
Revision: 1552 http://freeglut.svn.sourceforge.net/freeglut/?rev=1552&view=rev Author: dcnieho Date: 2013-03-04 16:27:00 +0000 (Mon, 04 Mar 2013) Log Message: ----------- error when entering main loop with no windows defined, as GLUT does Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c trunk/freeglut/freeglut/src/fg_main.c Modified: trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c 2013-03-04 10:18:35 UTC (rev 1551) +++ trunk/freeglut/freeglut/progs/demos/CallbackMaker/CallbackMaker.c 2013-03-04 16:27:00 UTC (rev 1552) @@ -227,6 +227,7 @@ /* print warning message */ vprintf(fmt, ap); + printf("\n"); /* terminate program, after pause for input so user can see */ printf ( "Please enter something to exit: " ); Modified: trunk/freeglut/freeglut/src/fg_main.c =================================================================== --- trunk/freeglut/freeglut/src/fg_main.c 2013-03-04 10:18:35 UTC (rev 1551) +++ trunk/freeglut/freeglut/src/fg_main.c 2013-03-04 16:27:00 UTC (rev 1552) @@ -414,6 +414,9 @@ FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMainLoop" ); + if (!fgStructure.Windows.First) + fgError(" ERROR: glutMainLoop called with no windows created."); + fgPlatformMainLoopPreliminaryWork (); fgState.ExecState = GLUT_EXEC_STATE_RUNNING ; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:26:55
|
Revision: 1652 http://sourceforge.net/p/freeglut/code/1652 Author: dcnieho Date: 2014-01-24 10:26:52 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Removed fg_main_blackberry.h. It wasn't needed Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c Removed Paths: ------------- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.h Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2014-01-24 10:26:37 UTC (rev 1651) +++ trunk/freeglut/freeglut/CMakeLists.txt 2014-01-24 10:26:52 UTC (rev 1652) @@ -146,7 +146,6 @@ src/blackberry/fg_internal_blackberry.h src/x11/fg_input_devices_x11.c src/blackberry/fg_main_blackberry.c - src/blackberry/fg_main_blackberry.h src/blackberry/fg_state_blackberry.c src/blackberry/fg_window_blackberry.c ) Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:26:37 UTC (rev 1651) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:26:52 UTC (rev 1652) @@ -157,7 +157,7 @@ * Does the magic required to relinquish the CPU until something interesting * happens. */ -void fgPlatformSleepForEvents( uint64_t msec ) +void fgPlatformSleepForEvents( fg_time_t msec ) { //XXX: Is this right? Is there a more direct way to access the context? if(bps_get_event(&fgStructure.CurrentWindow->Window.pContext.event, (int)msec) != BPS_SUCCESS) { Deleted: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.h =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.h 2014-01-24 10:26:37 UTC (rev 1651) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.h 2014-01-24 10:26:52 UTC (rev 1652) @@ -1,36 +0,0 @@ -/* - * fg_main_blackberry.h - * - * The BlackBerry-specific windows message processing methods. - * - * Copyright (C) 2013 Vincent Simonetti - * - * 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_MAIN_BLACKBERRY_H__ -#define __FG_MAIN_BLACKBERRY_H__ - -#include <GL/freeglut.h> -#include "fg_internal.h" - -extern void fgPlatformProcessSingleEvent(void); -extern void fgPlatformSleepForEvents(uint64_t msec); -extern void fgPlatformMainLoopPreliminaryWork(void); - -#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2014-01-24 10:35:24
|
Revision: 1675 http://sourceforge.net/p/freeglut/code/1675 Author: dcnieho Date: 2014-01-24 10:35:22 +0000 (Fri, 24 Jan 2014) Log Message: ----------- Updated toolchain so that it does a more exact check if this is for PlayBook or BlackBerry 10 Fixed bug with keyboard on PlayBook where keyboard heights only occurred on rotation, and resize would occur twice because of it and resize wouldn't happen for keyboard Modified Paths: -------------- trunk/freeglut/freeglut/blackberry.toolchain.cmake trunk/freeglut/freeglut/src/blackberry/fg_internal_blackberry.h trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c trunk/freeglut/freeglut/src/blackberry/fg_structure_blackberry.c Modified: trunk/freeglut/freeglut/blackberry.toolchain.cmake =================================================================== --- trunk/freeglut/freeglut/blackberry.toolchain.cmake 2014-01-24 10:35:05 UTC (rev 1674) +++ trunk/freeglut/freeglut/blackberry.toolchain.cmake 2014-01-24 10:35:22 UTC (rev 1675) @@ -33,7 +33,7 @@ set( CMAKE_SYSTEM_VERSION 1 ) # Check for PlayBook -if( EXISTS "${BLACKBERRY_TARGET_ROOT}/usr/include" ) +if( EXISTS "${BLACKBERRY_TARGET_ROOT}/x86/lib/gcc/4.4.2" ) set( PLAYBOOK True ) endif() Modified: trunk/freeglut/freeglut/src/blackberry/fg_internal_blackberry.h =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_internal_blackberry.h 2014-01-24 10:35:05 UTC (rev 1674) +++ trunk/freeglut/freeglut/src/blackberry/fg_internal_blackberry.h 2014-01-24 10:35:22 UTC (rev 1675) @@ -43,7 +43,7 @@ { struct tagSFG_PlatformDisplayEGL egl; screen_context_t screenContext; - bps_event_t* event; + bps_event_t* event; EGLNativeWindowType single_native_window; }; @@ -114,11 +114,15 @@ typedef struct tagSFG_PlatformWindowState SFG_PlatformWindowState; struct tagSFG_PlatformWindowState { - int newWidth; - int newHeight; - int originalRotation; - navigator_window_state_t windowState; - GLboolean windowCovered; + int newWidth; + int newHeight; + int originalRotation; + navigator_window_state_t windowState; + GLboolean windowCovered; +#ifdef __PLAYBOOK__ + int keyboardHeight; + GLboolean keyboardOpen; +#endif }; /* Menu font and color definitions */ Modified: trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:35:05 UTC (rev 1674) +++ trunk/freeglut/freeglut/src/blackberry/fg_main_blackberry.c 2014-01-24 10:35:22 UTC (rev 1675) @@ -31,11 +31,13 @@ #include "fg_internal.h" #include "egl/fg_window_egl.h" +#ifdef NDEBUG +#define LOGI(...) +#endif + #ifdef __PLAYBOOK__ #include <sys/slog.h> -#ifdef NDEBUG -#define LOGI(...) -#else +#ifndef LOGI #define LOGI(...) ((void)slogf(1337, _SLOG_INFO, __VA_ARGS__)) #endif #define LOGW(...) ((void)slogf(1337, _SLOG_WARNING, __VA_ARGS__)) @@ -44,9 +46,7 @@ #endif #else #include <slog2.h> -#ifdef NDEBUG -#define LOGI(...) -#else +#ifndef LOGI #define LOGI(...) ((void)slog2fa(NULL, 1337, SLOG2_INFO, __VA_ARGS__, SLOG2_FA_END)) #endif #define LOGW(...) ((void)slog2fa(NULL, 1337, SLOG2_WARNING, __VA_ARGS__, SLOG2_FA_END)) @@ -353,6 +353,12 @@ do { SFG_Window* window = fgStructure.CurrentWindow; +#ifdef __PLAYBOOK__ + /* Get the keyboard height before doing anything since we otherwise don't get it until it changes */ + if(window->State.pWState.keyboardHeight == 0) { + virtualkeyboard_get_height(&window->State.pWState.keyboardHeight); + } +#endif domain = bps_event_get_domain(fgDisplay.pDisplay.event); if (domain == screen_get_domain()) { int eventType; @@ -626,6 +632,8 @@ } else { LOGW("NAVIGATOR_EXIT: No current window"); } + + //XXX Should this be a bit more "forceful" so that it doesn't continue to loop through events? break; } @@ -645,6 +653,11 @@ window->State.pWState.newWidth = 0; window->State.pWState.newHeight = 0; +#ifdef __PLAYBOOK__ + /* On rotation, the keyboard is closed. This prevents two resize calls */ + window->State.pWState.keyboardOpen = GL_FALSE; +#endif + /* Notify that we want to rotate */ navigator_orientation_check_response(fgDisplay.pDisplay.event, true); break; @@ -770,20 +783,32 @@ } } #ifdef __PLAYBOOK__ + /* While this could be used for non-PlayBook, BlackBerry 10 will still get navigator events, so use those. They are a bit more exact. */ else if(domain == virtualkeyboard_get_domain()) { unsigned int eventType = bps_event_get_code(fgDisplay.pDisplay.event); switch (eventType) { case VIRTUALKEYBOARD_EVENT_VISIBLE: + LOGI("fgPlatformProcessSingleEvent: VIRTUALKEYBOARD_EVENT_VISIBLE"); + if(window->State.pWState.keyboardOpen != GL_TRUE) { + window->State.pWState.keyboardOpen = GL_TRUE; + fgPlatformHandleKeyboardHeight(window, window->State.pWState.keyboardHeight); + } break; case VIRTUALKEYBOARD_EVENT_HIDDEN: LOGI("fgPlatformProcessSingleEvent: VIRTUALKEYBOARD_EVENT_HIDDEN"); - fgPlatformHandleKeyboardHeight(window, 0); + if(window->State.pWState.keyboardOpen != GL_FALSE) { + window->State.pWState.keyboardOpen = GL_FALSE; + fgPlatformHandleKeyboardHeight(window, 0); + } break; case VIRTUALKEYBOARD_EVENT_INFO: LOGI("fgPlatformProcessSingleEvent: VIRTUALKEYBOARD_EVENT_INFO"); - fgPlatformHandleKeyboardHeight(window, virtualkeyboard_event_get_height(fgDisplay.pDisplay.event)); + window->State.pWState.keyboardHeight = virtualkeyboard_event_get_height(fgDisplay.pDisplay.event); + if(window->State.pWState.keyboardOpen == GL_TRUE) { + fgPlatformHandleKeyboardHeight(window, window->State.pWState.keyboardHeight); + } break; default: Modified: trunk/freeglut/freeglut/src/blackberry/fg_structure_blackberry.c =================================================================== --- trunk/freeglut/freeglut/src/blackberry/fg_structure_blackberry.c 2014-01-24 10:35:05 UTC (rev 1674) +++ trunk/freeglut/freeglut/src/blackberry/fg_structure_blackberry.c 2014-01-24 10:35:22 UTC (rev 1675) @@ -37,4 +37,7 @@ memset(&(window->State.pWState), 0, sizeof(SFG_PlatformWindowState)); window->State.pWState.windowCovered = GL_FALSE; +#ifdef __PLAYBOOK__ + window->State.pWState.keyboardOpen = GL_FALSE; +#endif } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2015-06-29 10:09:44
|
Revision: 1766 http://sourceforge.net/p/freeglut/code/1766 Author: dcnieho Date: 2015-06-29 10:09:42 +0000 (Mon, 29 Jun 2015) Log Message: ----------- update CMake file so that it will generate proper _WIN32_WINNT and WINVER definitions in visual studio project setting. (cherry picked from commit 96e89316b6de6502522f1527b0e132e731af175a) (cherry picked from commit 96e89316b6de6502522f1527b0e132e731af175a) Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/fg_spaceball.c trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c trunk/freeglut/freeglut/src/mswin/fg_spaceball_mswin.c Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2015-06-29 10:09:33 UTC (rev 1765) +++ trunk/freeglut/freeglut/CMakeLists.txt 2015-06-29 10:09:42 UTC (rev 1766) @@ -273,9 +273,21 @@ SET( CMAKE_DEBUG_POSTFIX "d" ) ENDIF(MSVC) + IF(NOT(MSVC_VERSION LESS "1300")) + # minimum requirement for spaceball device + ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501) + ADD_DEFINITIONS(-DWINVER=0x0501) + ELSE() # enable the use of Win2000 APIs (needed for really old compilers like MSVC6) - ADD_DEFINITIONS(-D_WIN32_WINNT=0x0500) - ADD_DEFINITIONS(-DWINVER=0x0500) + ADD_DEFINITIONS(-D_WIN32_WINNT=0x0500) + ADD_DEFINITIONS(-DWINVER=0x0500) + ENDIF() + + IF(NOT(MSVC_VERSION LESS "1600")) + # minimum requirement for WM_TOUCH device + ADD_DEFINITIONS(-D_WIN32_WINNT=0x0601) + ADD_DEFINITIONS(-DWINVER=0x0601) + ENDIF() ENDIF() IF(CMAKE_COMPILER_IS_GNUCC) Modified: trunk/freeglut/freeglut/src/fg_spaceball.c =================================================================== --- trunk/freeglut/freeglut/src/fg_spaceball.c 2015-06-29 10:09:33 UTC (rev 1765) +++ trunk/freeglut/freeglut/src/fg_spaceball.c 2015-06-29 10:09:42 UTC (rev 1766) @@ -7,9 +7,12 @@ * magellan X-based protocol. */ + #include <GL/freeglut.h> #include "fg_internal.h" +#if(_WIN32_WINNT >= 0x0501) + /* -- PRIVATE FUNCTIONS --------------------------------------------------- */ extern void fgPlatformInitializeSpaceball(void); @@ -28,13 +31,12 @@ } fgPlatformInitializeSpaceball(); - - //sball_initialized = 1; } void fgSpaceballClose(void) { - fgPlatformSpaceballClose();} + fgPlatformSpaceballClose(); +} int fgHasSpaceball(void) { @@ -74,3 +76,28 @@ fgPlatformSpaceballSetWindow(window); } +#else + +void fgInitialiseSpaceball(void) +{ +} + +void fgSpaceballClose(void) +{ +} + +int fgHasSpaceball(void) +{ + return 0; +} + +int fgSpaceballNumButtons(void) +{ + return 0; +} + +void fgSpaceballSetWindow(SFG_Window *window) +{ +} + +#endif Modified: trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2015-06-29 10:09:33 UTC (rev 1765) +++ trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2015-06-29 10:09:42 UTC (rev 1766) @@ -1543,14 +1543,16 @@ break; } #endif - //Added by Jinrong Xie <stonexjr at gmail.com> 12/24/2014 - //for SpaceNavigator support on Windows. + +#ifdef WM_INPUT case WM_INPUT: + /* Added by Jinrong Xie <stonexjr at gmail.com> for SpaceNavigator support on Windows. Dec 2014 */ if (fgHasSpaceball()) { fgSpaceballHandleWinEvent(hWnd, wParam, lParam); } break; +#endif default: /* Handle unhandled messages */ lRet = DefWindowProc( hWnd, uMsg, wParam, lParam ); Modified: trunk/freeglut/freeglut/src/mswin/fg_spaceball_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_spaceball_mswin.c 2015-06-29 10:09:33 UTC (rev 1765) +++ trunk/freeglut/freeglut/src/mswin/fg_spaceball_mswin.c 2015-06-29 10:09:42 UTC (rev 1766) @@ -36,6 +36,8 @@ * six degree of freedom navigator. */ +#if(_WIN32_WINNT >= 0x0501) + #include <GL/freeglut.h> #include <stdlib.h> #include "../fg_internal.h" @@ -190,3 +192,5 @@ } } } + +#endif \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2015-12-14 16:22:20
|
Revision: 1775 http://sourceforge.net/p/freeglut/code/1775 Author: dcnieho Date: 2015-12-14 16:22:18 +0000 (Mon, 14 Dec 2015) Log Message: ----------- Added GLUT_ALLOW_NEGATIVE_WINDOW_POSITION so windows can be created with negative position coordinates. (cherry picked from commit e7f38b763fec763b3887a0dc29d04e9576d18e78) (cherry picked from commit e7f38b763fec763b3887a0dc29d04e9576d18e78) Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/src/fg_init.c trunk/freeglut/freeglut/src/fg_internal.h trunk/freeglut/freeglut/src/fg_state.c Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2015-10-20 04:35:28 UTC (rev 1774) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2015-12-14 16:22:18 UTC (rev 1775) @@ -90,6 +90,8 @@ #define GLUT_STROKE_FONT_DRAW_JOIN_DOTS 0x0206 /* Draw dots between line segments of stroke fonts? */ +#define GLUT_ALLOW_NEGATIVE_WINDOW_POSITION 0x0207 /* GLUT doesn't allow negative window positions by default */ + /* * New tokens for glutInitDisplayMode. * Only one GLUT_AUXn bit may be used at a time. Modified: trunk/freeglut/freeglut/src/fg_init.c =================================================================== --- trunk/freeglut/freeglut/src/fg_init.c 2015-10-20 04:35:28 UTC (rev 1774) +++ trunk/freeglut/freeglut/src/fg_init.c 2015-12-14 16:22:18 UTC (rev 1775) @@ -88,6 +88,7 @@ 4, /* SampleNumber */ GL_FALSE, /* SkipStaleMotion */ GL_FALSE, /* StrokeFontDrawJoinDots */ + GL_FALSE, /* AllowNegativeWindowPosition */ 1, /* OpenGL context MajorVersion */ 0, /* OpenGL context MinorVersion */ 0, /* OpenGL ContextFlags */ @@ -357,7 +358,7 @@ * size. */ - if (geometry ) + if ( geometry ) { unsigned int parsedWidth, parsedHeight; int mask = XParseGeometry( geometry, @@ -370,10 +371,10 @@ if( (mask & (WidthValue|HeightValue)) == (WidthValue|HeightValue) ) fgState.Size.Use = GL_TRUE; - if( mask & XNegative ) + if( ( mask & XNegative ) && !fgState.AllowNegativeWindowPosition ) fgState.Position.X += fgDisplay.ScreenWidth - fgState.Size.X; - if( mask & YNegative ) + if( ( mask & YNegative ) && !fgState.AllowNegativeWindowPosition ) fgState.Position.Y += fgDisplay.ScreenHeight - fgState.Size.Y; if( (mask & (XValue|YValue)) == (XValue|YValue) ) @@ -397,7 +398,7 @@ fgState.Position.X = x; fgState.Position.Y = y; - if( ( x >= 0 ) && ( y >= 0 ) ) + if( ( ( x >= 0 ) && ( y >= 0 ) ) || fgState.AllowNegativeWindowPosition ) fgState.Position.Use = GL_TRUE; else fgState.Position.Use = GL_FALSE; Modified: trunk/freeglut/freeglut/src/fg_internal.h =================================================================== --- trunk/freeglut/freeglut/src/fg_internal.h 2015-10-20 04:35:28 UTC (rev 1774) +++ trunk/freeglut/freeglut/src/fg_internal.h 2015-12-14 16:22:18 UTC (rev 1775) @@ -354,6 +354,7 @@ GLboolean SkipStaleMotion; /* skip stale motion events */ GLboolean StrokeFontDrawJoinDots;/* Draw dots between line segments of stroke fonts? */ + GLboolean AllowNegativeWindowPosition; /* GLUT, by default, doesn't allow negative window positions. Enable it? */ int MajorVersion; /* Major OpenGL context version */ int MinorVersion; /* Minor OpenGL context version */ Modified: trunk/freeglut/freeglut/src/fg_state.c =================================================================== --- trunk/freeglut/freeglut/src/fg_state.c 2015-10-20 04:35:28 UTC (rev 1774) +++ trunk/freeglut/freeglut/src/fg_state.c 2015-12-14 16:22:18 UTC (rev 1775) @@ -122,6 +122,10 @@ fgState.StrokeFontDrawJoinDots = !!value; break; + case GLUT_ALLOW_NEGATIVE_WINDOW_POSITION: + fgState.AllowNegativeWindowPosition = !!value; + break; + default: fgWarning( "glutSetOption(): missing enum handle %d", eWhat ); break; @@ -225,6 +229,9 @@ case GLUT_STROKE_FONT_DRAW_JOIN_DOTS: return fgState.StrokeFontDrawJoinDots; + case GLUT_ALLOW_NEGATIVE_WINDOW_POSITION: + return fgState.AllowNegativeWindowPosition; + default: return fgPlatformGlutGet ( eWhat ); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2017-06-30 23:21:16
|
Revision: 1810 http://sourceforge.net/p/freeglut/code/1810 Author: dcnieho Date: 2017-06-30 23:21:14 +0000 (Fri, 30 Jun 2017) Log Message: ----------- Changed EXPAND_WCB so it works with MSVC and GCC - Required adding an "argument expansion macro" for each callback (hope to remove eventually) - Fixed MSVC linking error where glutMenuStatusFuncUCall had the incorrect case and should've been glutMenuStatusFuncUcall - Updated formatting of some freeglut_ext.h functions Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/include/GL/freeglut_ext.h trunk/freeglut/freeglut/src/fg_callbacks.c trunk/freeglut/freeglut/src/fg_internal.h Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2017-06-30 23:21:06 UTC (rev 1809) +++ trunk/freeglut/freeglut/CMakeLists.txt 2017-06-30 23:21:14 UTC (rev 1810) @@ -68,6 +68,7 @@ SET(FREEGLUT_HEADERS include/GL/freeglut.h + include/GL/freeglut_ucall.h include/GL/freeglut_ext.h include/GL/freeglut_std.h ) Modified: trunk/freeglut/freeglut/include/GL/freeglut_ext.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2017-06-30 23:21:06 UTC (rev 1809) +++ trunk/freeglut/freeglut/include/GL/freeglut_ext.h 2017-06-30 23:21:14 UTC (rev 1810) @@ -256,13 +256,13 @@ FGAPI void FGAPIENTRY glutInitWarningFunc( void (* callback)( const char *fmt, va_list ap ) ); /* OpenGL >= 2.0 support */ -FGAPI void FGAPIENTRY glutSetVertexAttribCoord3(GLint attrib); -FGAPI void FGAPIENTRY glutSetVertexAttribNormal(GLint attrib); -FGAPI void FGAPIENTRY glutSetVertexAttribTexCoord2(GLint attrib); +FGAPI void FGAPIENTRY glutSetVertexAttribCoord3( GLint attrib ); +FGAPI void FGAPIENTRY glutSetVertexAttribNormal( GLint attrib ); +FGAPI void FGAPIENTRY glutSetVertexAttribTexCoord2( GLint attrib ); /* Mobile platforms lifecycle */ -FGAPI void FGAPIENTRY glutInitContextFunc(void (* callback)()); -FGAPI void FGAPIENTRY glutAppStatusFunc(void (* callback)(int)); +FGAPI void FGAPIENTRY glutInitContextFunc( void (* callback)( void ) ); +FGAPI void FGAPIENTRY glutAppStatusFunc( void (* callback)( int ) ); /* state flags that can be passed to callback set by glutAppStatusFunc */ #define GLUT_APPSTATUS_PAUSE 0x0001 #define GLUT_APPSTATUS_RESUME 0x0002 Modified: trunk/freeglut/freeglut/src/fg_callbacks.c =================================================================== --- trunk/freeglut/freeglut/src/fg_callbacks.c 2017-06-30 23:21:06 UTC (rev 1809) +++ trunk/freeglut/freeglut/src/fg_callbacks.c 2017-06-30 23:21:14 UTC (rev 1810) @@ -113,9 +113,9 @@ } /* Sets the global menu status callback for the current window */ -void FGAPIENTRY glutMenuStatusFuncUCall( FGCBMenuStatusUC callback, FGCBUserData userData ) +void FGAPIENTRY glutMenuStatusFuncUcall( FGCBMenuStatusUC callback, FGCBUserData userData ) { - FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMenuStatusFuncUCall" ); + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMenuStatusFuncUcall" ); fgState.MenuStatusCallback = callback; fgState.MenuStatusCallbackData = userData; } @@ -130,12 +130,11 @@ { FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMenuStatusFunc" ); if( callback ) - glutMenuStatusFuncUCall( glutMenuStatusFuncCallback, (FGCBUserData)callback ); + glutMenuStatusFuncUcall( glutMenuStatusFuncCallback, (FGCBUserData)callback ); else - glutMenuStatusFuncUCall( NULL, NULL ); + glutMenuStatusFuncUcall( NULL, NULL ); } - /* * Menu specific callbacks. */ @@ -180,7 +179,7 @@ * Types need to be defined for callbacks. It's not ideal, but it works for this. */ #define IMPLEMENT_CALLBACK_FUNC_CB_ARG0(a,b) \ -static void glut##a##FuncCallback( FGCBUserData userData ) \ +static void glut##a##FuncCallback( FGCBUserData userData ) \ { \ FGCB##b callback = (FGCB##b)userData; \ callback(); \ Modified: trunk/freeglut/freeglut/src/fg_internal.h =================================================================== --- trunk/freeglut/freeglut/src/fg_internal.h 2017-06-30 23:21:06 UTC (rev 1809) +++ trunk/freeglut/freeglut/src/fg_internal.h 2017-06-30 23:21:14 UTC (rev 1810) @@ -220,66 +220,96 @@ typedef void (* FGCBDisplay )( void ); typedef void (* FGCBDisplayUC )( FGCBUserData ); +#define EXPAND_WCB_SUB_Display(args, userData) EXPAND_WCB_ZERO(args, userData) typedef void (* FGCBReshape )( int, int ); typedef void (* FGCBReshapeUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Reshape(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBPosition )( int, int ); typedef void (* FGCBPositionUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Position(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBVisibility )( int ); typedef void (* FGCBVisibilityUC )( int, FGCBUserData ); +#define EXPAND_WCB_SUB_Visibility(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBKeyboard )( unsigned char, int, int ); typedef void (* FGCBKeyboardUC )( unsigned char, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Keyboard(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBKeyboardUp )( unsigned char, int, int ); typedef void (* FGCBKeyboardUpUC )( unsigned char, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_KeyboardUp(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBSpecial )( int, int, int ); typedef void (* FGCBSpecialUC )( int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Special(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBSpecialUp )( int, int, int ); typedef void (* FGCBSpecialUpUC )( int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_SpecialUp(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMouse )( int, int, int, int ); typedef void (* FGCBMouseUC )( int, int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Mouse(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMouseWheel )( int, int, int, int ); typedef void (* FGCBMouseWheelUC )( int, int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_MouseWheel(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMotion )( int, int ); typedef void (* FGCBMotionUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Motion(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBPassive )( int, int ); typedef void (* FGCBPassiveUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Passive(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBEntry )( int ); typedef void (* FGCBEntryUC )( int, FGCBUserData ); +#define EXPAND_WCB_SUB_Entry(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBWindowStatus )( int ); typedef void (* FGCBWindowStatusUC )( int, FGCBUserData ); +#define EXPAND_WCB_SUB_WindowStatus(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBJoystick )( unsigned int, int, int, int ); typedef void (* FGCBJoystickUC )( unsigned int, int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Joystick(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBOverlayDisplay )( void ); typedef void (* FGCBOverlayDisplayUC)( FGCBUserData ); +#define EXPAND_WCB_SUB_OverlayDisplay(args, userData) EXPAND_WCB_ZERO(args, userData) typedef void (* FGCBSpaceMotion )( int, int, int ); typedef void (* FGCBSpaceMotionUC )( int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_SpaceMotion(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBSpaceRotation )( int, int, int ); typedef void (* FGCBSpaceRotationUC )( int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_SpaceRotation(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBSpaceButton )( int, int ); typedef void (* FGCBSpaceButtonUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_SpaceButton(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBDials )( int, int ); typedef void (* FGCBDialsUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_Dials(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBButtonBox )( int, int ); typedef void (* FGCBButtonBoxUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_ButtonBox(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBTabletMotion )( int, int ); typedef void (* FGCBTabletMotionUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_TabletMotion(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBTabletButton )( int, int, int, int ); typedef void (* FGCBTabletButtonUC )( int, int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_TabletButton(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBDestroy )( void ); /* Used for both window and menu destroy callbacks */ typedef void (* FGCBDestroyUC )( FGCBUserData ); +#define EXPAND_WCB_SUB_Destroy(args, userData) EXPAND_WCB_ZERO(args, userData) typedef void (* FGCBMultiEntry )( int, int ); typedef void (* FGCBMultiEntryUC )( int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_MultiEntry(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMultiButton )( int, int, int, int, int ); typedef void (* FGCBMultiButtonUC )( int, int, int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_MultiButton(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMultiMotion )( int, int, int ); typedef void (* FGCBMultiMotionUC )( int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_MultiMotion(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMultiPassive )( int, int, int ); typedef void (* FGCBMultiPassiveUC )( int, int, int, FGCBUserData ); +#define EXPAND_WCB_SUB_MultiPassive(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBInitContext )( void ); typedef void (* FGCBInitContextUC )( FGCBUserData ); +#define EXPAND_WCB_SUB_InitContext(args, userData) EXPAND_WCB_ZERO(args, userData) typedef void (* FGCBAppStatus )( int ); typedef void (* FGCBAppStatusUC )( int, FGCBUserData ); +#define EXPAND_WCB_SUB_AppStatus(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) /* The global callbacks type definitions */ typedef void (* FGCBIdle )( void ); \ @@ -616,6 +646,7 @@ #define FETCH_USER_DATA_WCB(window,cbname) \ ((window).CallbackDatas[WCB_ ## cbname]) +#if 0 /* * EXPAND_WCB() is used as: * @@ -634,18 +665,9 @@ * * Supports up to five arguments */ -#if TARGET_HOST_MS_WINDOWS -/* FIXME: Does VC6 support variadic macros? I don't think so (variadic macros came with C99. VC6 came out in 1998) */ +/* GCC-specific design that doesn't require per-callback defines */ -/* FIXME: VC++ has a greedy preprocessor. - * The preprocessor resolves the macros on use instead of after on argument completion/token usage. - * e.g.: PP_HAS_ARGS_IMPL2(ONE_OR_MORE, ...) -> PP_HAS_ARGS_IMPL2(, ...) -> "Error, not enough tokens for PP_HAS_ARGS_IMPL2" - */ -#define EXPAND_WCB(...) (__VA_ARGS__) - -#else // #if TARGET_HOST_MS_WINDOWS - #define PP_HAS_ARGS_IMPL2(_0, _1, _2, _3, _4, _5, N, ...) N #define PP_HAS_ARGS_SOURCE() \ ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ZERO @@ -667,8 +689,37 @@ #define EXPAND_WCB(...) \ EXPAND_WCB_DISAMBIGUATE(PP_HAS_ARGS(__VA_ARGS__), __VA_ARGS__) -#endif // #if TARGET_HOST_MS_WINDOWS +#else +/* + * EXPAND_WCB() is used as: + * + * EXPAND_WCB( cbname )( arg_list, userData ) + * + * ... where {(arg_list)} is the parameter list and userData is user + * provided data. + * + * This will take the arg_list and extend it by one argument, adding + * the argument "userData" to the end of the list. + * + * In order for this to work, each callback must have a define that + * properly handles the arguments as needed by the callback. + * This callback is in the format of EXPAND_WCB_SUB_<cbname>. + * Two helper defines exist: EXPAND_WCB_ZERO and EXPAND_WCB_ONE_OR_MORE, + * each to handle callbacks that take zero-params (but take userData) and + * to take one or more params (along with userData). + * + * An example for the "Entry" callback, where "Entry" is the cbname: + * typedef void (* FGCBEntry )( int ); + * typedef void (* FGCBEntryUC)( int, FGCBUserData ); + * #define EXPAND_WCB_SUB_Entry(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) + */ +#define EXPAND_WCB_UNPARAN(...) __VA_ARGS__ +#define EXPAND_WCB_ZERO(args, userData) ( userData ) +#define EXPAND_WCB_ONE_OR_MORE(args, userData) ( EXPAND_WCB_UNPARAN args, userData ) +#define EXPAND_WCB(cbname) EXPAND_WCB_SUB_ ## cbname +#endif + /* * INVOKE_WCB() is used as: * @@ -697,7 +748,7 @@ FGCB ## cbname ## UC func = (FGCB ## cbname ## UC)(FETCH_WCB( window, cbname )); \ FGCBUserData userData = FETCH_USER_DATA_WCB( window, cbname ); \ fgSetWindow( &window ); \ - func EXPAND_WCB arg_list; \ + func EXPAND_WCB( cbname )( arg_list, userData ); \ } \ } while( 0 ) #else @@ -708,7 +759,7 @@ { \ fgSetWindow( &window ); \ FGCBUserData userData = FETCH_USER_DATA_WCB( window, cbname ); \ - ((FGCB ## cbname ## UC)FETCH_WCB( window, cbname )) EXPAND_WCB arg_list; \ + ((FGCB ## cbname ## UC)FETCH_WCB( window, cbname )) EXPAND_WCB( cbname )( arg_list, userData ); \ } \ } while( 0 ) #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2017-06-30 23:21:31
|
Revision: 1812 http://sourceforge.net/p/freeglut/code/1812 Author: dcnieho Date: 2017-06-30 23:21:28 +0000 (Fri, 30 Jun 2017) Log Message: ----------- Initial refactoring of callback macros to make sure all compilers are supported Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/fg_internal.h Added Paths: ----------- trunk/freeglut/freeglut/src/fg_callback_macros.h Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2017-06-30 23:21:21 UTC (rev 1811) +++ trunk/freeglut/freeglut/CMakeLists.txt 2017-06-30 23:21:28 UTC (rev 1812) @@ -91,6 +91,7 @@ src/fg_init.c src/fg_init.h src/fg_internal.h + src/fg_callback_macros.h src/fg_input_devices.c src/fg_joystick.c src/fg_main.c Added: trunk/freeglut/freeglut/src/fg_callback_macros.h =================================================================== --- trunk/freeglut/freeglut/src/fg_callback_macros.h (rev 0) +++ trunk/freeglut/freeglut/src/fg_callback_macros.h 2017-06-30 23:21:28 UTC (rev 1812) @@ -0,0 +1,226 @@ +/* + * fg_callback_macros.h + * + * The freeglut library callback macro file. + * + * 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 FREEGLUT_CALLBACK_MACROS_H +#define FREEGLUT_CALLBACK_MACROS_H + +#ifndef FREEGLUT_INTERNAL_H +#error "fg_internal.h needs to be included before this header" +#endif + +#if 0 /* old. Remove once other testing is complete */ +/* + * EXPAND_WCB() is used as: + * + * EXPAND_WCB arg_list + * + * ... where {(arg_list)} is the parameter list. + * + * This will take the arg_list and extend it by one argument, adding + * the argument "userData" to the end of the list. + * + * All additional args are to get around trailing ',', argument counts, + * and not needing a GCC extension to make this work. + * + * Minor modification of: + * http://stackoverflow.com/questions/5355241/generating-function-declaration-using-a-macro-iteration/5355946#5355946 + * + * Supports up to five arguments + */ + +/* GCC-specific design that doesn't require per-callback defines */ + +#define PP_HAS_ARGS_IMPL2(_0, _1, _2, _3, _4, _5, N, ...) N +#define PP_HAS_ARGS_SOURCE() \ + ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ZERO + +#define PP_HAS_ARGS_IMPL(...) \ + PP_HAS_ARGS_IMPL2(__VA_ARGS__) +#define PP_HAS_ARGS(...) \ + PP_HAS_ARGS_IMPL(NOT_EXIST, ##__VA_ARGS__, PP_HAS_ARGS_SOURCE()) + +#define EXPAND_WCB_ZERO(x) \ + (userData) +#define EXPAND_WCB_ONE_OR_MORE(...) \ + (__VA_ARGS__, userData) + +#define EXPAND_WCB_DISAMBIGUATE2(has_args, ...) \ + EXPAND_WCB_ ## has_args (__VA_ARGS__) +#define EXPAND_WCB_DISAMBIGUATE(has_args, ...) \ + EXPAND_WCB_DISAMBIGUATE2(has_args, __VA_ARGS__) +#define EXPAND_WCB(...) \ + EXPAND_WCB_DISAMBIGUATE(PP_HAS_ARGS(__VA_ARGS__), __VA_ARGS__) +#endif + +/* + * Compiler defines: + * FG_COMPILER_SUPPORTS_GCC_VA_ARGS_HACK: if the compiler supports GCC's varadic macro implementation (AKA, ##__VA_ARGS__) + * FG_COMPILER_SUPPORTS_VA_ARGS: if the compiler supports varadic macros + */ + +#ifdef FG_COMPILER_SUPPORTS_GCC_VA_ARGS_HACK + + /* + * EXPAND_WCB() is used as: + * + * EXPAND_WCB arg_list + * + * ... where {(arg_list)} is the parameter list. + * + * This will take the arg_list and extend it by one argument, adding + * the argument "userData" to the end of the list. + * + * All additional args are to get around trailing ',', argument counts, + * and not needing a GCC extension to make this work. + * + * Modification of: + * http://stackoverflow.com/questions/5355241/generating-function-declaration-using-a-macro-iteration/5355946#5355946 + * + * -------------- + * + * GCC-specific design that doesn't require per-callback defines + * + * The naming is terrible... and it's very convuluted and complex, but + * should not require any modification unless additional arguments are to + * be supported. + * + * Supports callbacks up to 5 args (follow the pattern of PP_HAS_ARGS_IMPL2 + * and PP_HAS_ARGS_SOURCE to add more) + * + * Edit with care. + */ + +#define EXPAND_WCB_UNPARAN(...) __VA_ARGS__ + +#define PP_HAS_ARGS_IMPL2(_0, _1, _2, _3, _4, _5, N, ...) N +#define PP_HAS_ARGS_SOURCE() ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ZERO + +#define PP_HAS_ARGS_IMPL(...) PP_HAS_ARGS_IMPL2( __VA_ARGS__ ) +#define PP_HAS_ARGS(...) PP_HAS_ARGS_IMPL( NOT_EXIST, ##__VA_ARGS__, PP_HAS_ARGS_SOURCE() ) + +#define EXPAND_WCB_ZERO(args, userData) ( userData ) +#define EXPAND_WCB_ONE_OR_MORE(args, userData) ( EXPAND_WCB_UNPARAN args, userData ) + +#define EXPAND_WCB_DISAMBIGUATE(has_args, args, userData) EXPAND_WCB_ ## has_args ( args, userData ) + +#define EXPAND_WCB_UNWRAP_ARGS2(args, userData) EXPAND_WCB_DISAMBIGUATE( PP_HAS_ARGS args, args, userData ) +#define EXPAND_WCB_UNWRAP_ARGS(args) EXPAND_WCB_UNWRAP_ARGS2 args + +#define EXPAND_WCB(cbname) EXPAND_WCB_UNWRAP_ARGS + +#else + +/* + * EXPAND_WCB() is used as: + * + * EXPAND_WCB( cbname )(( arg_list, userData )) + * + * ... where {(arg_list)} is the parameter list and userData is user + * provided data. + * + * This will take the arg_list and extend it by one argument, adding + * the argument "userData" to the end of the list. + * + * In order for this to work, each callback must have a define that + * properly handles the arguments as needed by the callback. + * This callback is in the format of EXPAND_WCB_SUB_<cbname>. + * Helper functions exist for zero to five parameters: EXPAND_WCB_ZERO, + * EXPAND_WCB_ONE, EXPAND_WCB_TWO, EXPAND_WCB_THREE< EXPAND_WCB_FOUR, + * and EXPAND_WCB_FIVE. Each handle the callback argument counts. + * + * An example for the "Entry" callback, where "Entry" is the cbname: + * typedef void (* FGCBEntry )( int ); + * typedef void (* FGCBEntryUC)( int, FGCBUserData ); + * #define EXPAND_WCB_SUB_Entry(args) EXPAND_WCB_ONE args + */ + +#define FG_COMPILER_SUPPORTS_VA_ARGS //XXX (should be compiler defined) +#ifdef FG_COMPILER_SUPPORTS_VA_ARGS + +#define EXPAND_WCB_UNPARAN(...) __VA_ARGS__ +#define EXPAND_WCB_ONE_OR_MORE(args, userData) ( EXPAND_WCB_UNPARAN args, userData ) + +#define EXPAND_WCB_ONE(args, userData) EXPAND_WCB_ONE_OR_MORE( args, userData ) +#define EXPAND_WCB_TWO(args, userData) EXPAND_WCB_ONE_OR_MORE( args, userData ) +#define EXPAND_WCB_THREE(args, userData) EXPAND_WCB_ONE_OR_MORE( args, userData ) +#define EXPAND_WCB_FOUR(args, userData) EXPAND_WCB_ONE_OR_MORE( args, userData ) +#define EXPAND_WCB_FIVE(args, userData) EXPAND_WCB_ONE_OR_MORE( args, userData ) + +#else + +//TODO +#error "Compiler does not support varadic argument macros" + +#endif + +#define EXPAND_WCB_ZERO(args, userData) ( userData ) + +#define EXPAND_WCB(cbname) EXPAND_WCB_SUB_ ## cbname + +/* + * Freeglut callbacks type definitions macros + * + * Every time a callback is updated in fg_internal.h is updated, this needs updated + * if argument counts change, new callbacks are added, or callbacks are removed. + */ + +#define EXPAND_WCB_SUB_Display(args) EXPAND_WCB_ZERO args +#define EXPAND_WCB_SUB_Reshape(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_Position(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_Visibility(args) EXPAND_WCB_ONE args +#define EXPAND_WCB_SUB_Keyboard(args) EXPAND_WCB_THREE args +#define EXPAND_WCB_SUB_KeyboardUp(args) EXPAND_WCB_THREE args +#define EXPAND_WCB_SUB_Special(args) EXPAND_WCB_THREE args +#define EXPAND_WCB_SUB_SpecialUp(args) EXPAND_WCB_THREE args +#define EXPAND_WCB_SUB_Mouse(args) EXPAND_WCB_FOUR args +#define EXPAND_WCB_SUB_MouseWheel(args) EXPAND_WCB_FOUR args +#define EXPAND_WCB_SUB_Motion(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_Passive(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_Entry(args) EXPAND_WCB_ONE args +#define EXPAND_WCB_SUB_WindowStatus(args) EXPAND_WCB_ONE args +#define EXPAND_WCB_SUB_Joystick(args) EXPAND_WCB_FOUR args +#define EXPAND_WCB_SUB_OverlayDisplay(args) EXPAND_WCB_ZERO args +#define EXPAND_WCB_SUB_SpaceMotion(args) EXPAND_WCB_THREE args +#define EXPAND_WCB_SUB_SpaceRotation(args) EXPAND_WCB_THREE args +#define EXPAND_WCB_SUB_SpaceButton(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_Dials(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_ButtonBox(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_TabletMotion(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_TabletButton(args) EXPAND_WCB_FOUR args +#define EXPAND_WCB_SUB_Destroy(args) EXPAND_WCB_ZERO args +#define EXPAND_WCB_SUB_MultiEntry(args) EXPAND_WCB_TWO args +#define EXPAND_WCB_SUB_MultiButton(args) EXPAND_WCB_FIVE args +#define EXPAND_WCB_SUB_MultiMotion(args) EXPAND_WCB_THREE args +#define EXPAND_WCB_SUB_MultiPassive(args) EXPAND_WCB_THREE args +#define EXPAND_WCB_SUB_InitContext(args) EXPAND_WCB_ZERO args +#define EXPAND_WCB_SUB_AppStatus(args) EXPAND_WCB_ONE args + +#endif + +#endif /* FREEGLUT_CALLBACK_MACROS_H */ + +/*** END OF FILE ***/ Property changes on: trunk/freeglut/freeglut/src/fg_callback_macros.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/freeglut/freeglut/src/fg_internal.h =================================================================== --- trunk/freeglut/freeglut/src/fg_internal.h 2017-06-30 23:21:21 UTC (rev 1811) +++ trunk/freeglut/freeglut/src/fg_internal.h 2017-06-30 23:21:28 UTC (rev 1812) @@ -33,12 +33,14 @@ #endif #include "fg_version.h" +#include "fg_callback_macros.h" /* Freeglut is intended to function under all Unix/X11 and Win32 platforms. */ /* XXX: Don't all MS-Windows compilers (except Cygwin) have _WIN32 defined? * XXX: If so, remove the first set of defined()'s below. */ -#if !defined(TARGET_HOST_POSIX_X11) && !defined(TARGET_HOST_MS_WINDOWS) && !defined(TARGET_HOST_MAC_OSX) && !defined(TARGET_HOST_SOLARIS) +#if !defined(TARGET_HOST_POSIX_X11) && !defined(TARGET_HOST_MS_WINDOWS) && !defined(TARGET_HOST_MAC_OSX) && !defined(TARGET_HOST_SOLARIS) && \ + !defined(TARGET_HOST_ANDROID) && !defined(TARGET_HOST_BLACKBERRY) && !defined(TARGET_HOST_POSIX_WAYLAND) #if defined(_MSC_VER) || defined(__WATCOMC__) || defined(__MINGW32__) \ || defined(_WIN32) || defined(_WIN32_WCE) \ || ( defined(__CYGWIN__) && defined(X_DISPLAY_MISSING) ) @@ -215,101 +217,78 @@ /* -- GLOBAL TYPE DEFINITIONS ---------------------------------------------- */ -/* Freeglut callbacks type definitions */ +/* + * Freeglut callbacks type definitions + * + * If anything here is modified or added, update fg_callback_macros.h functions. + * + * This is not ideal, but freeglut needs to either define minimal compiler specs, + * or update header every time this is changed or updated. + */ typedef void* FGCBUserData; typedef void (* FGCBDisplay )( void ); typedef void (* FGCBDisplayUC )( FGCBUserData ); -#define EXPAND_WCB_SUB_Display(args, userData) EXPAND_WCB_ZERO(args, userData) typedef void (* FGCBReshape )( int, int ); typedef void (* FGCBReshapeUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Reshape(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBPosition )( int, int ); typedef void (* FGCBPositionUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Position(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBVisibility )( int ); typedef void (* FGCBVisibilityUC )( int, FGCBUserData ); -#define EXPAND_WCB_SUB_Visibility(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBKeyboard )( unsigned char, int, int ); typedef void (* FGCBKeyboardUC )( unsigned char, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Keyboard(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBKeyboardUp )( unsigned char, int, int ); typedef void (* FGCBKeyboardUpUC )( unsigned char, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_KeyboardUp(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBSpecial )( int, int, int ); typedef void (* FGCBSpecialUC )( int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Special(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBSpecialUp )( int, int, int ); typedef void (* FGCBSpecialUpUC )( int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_SpecialUp(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMouse )( int, int, int, int ); typedef void (* FGCBMouseUC )( int, int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Mouse(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMouseWheel )( int, int, int, int ); typedef void (* FGCBMouseWheelUC )( int, int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_MouseWheel(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMotion )( int, int ); typedef void (* FGCBMotionUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Motion(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBPassive )( int, int ); typedef void (* FGCBPassiveUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Passive(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBEntry )( int ); typedef void (* FGCBEntryUC )( int, FGCBUserData ); -#define EXPAND_WCB_SUB_Entry(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBWindowStatus )( int ); typedef void (* FGCBWindowStatusUC )( int, FGCBUserData ); -#define EXPAND_WCB_SUB_WindowStatus(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBJoystick )( unsigned int, int, int, int ); typedef void (* FGCBJoystickUC )( unsigned int, int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Joystick(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBOverlayDisplay )( void ); typedef void (* FGCBOverlayDisplayUC)( FGCBUserData ); -#define EXPAND_WCB_SUB_OverlayDisplay(args, userData) EXPAND_WCB_ZERO(args, userData) typedef void (* FGCBSpaceMotion )( int, int, int ); typedef void (* FGCBSpaceMotionUC )( int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_SpaceMotion(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBSpaceRotation )( int, int, int ); typedef void (* FGCBSpaceRotationUC )( int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_SpaceRotation(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBSpaceButton )( int, int ); typedef void (* FGCBSpaceButtonUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_SpaceButton(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBDials )( int, int ); typedef void (* FGCBDialsUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_Dials(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBButtonBox )( int, int ); typedef void (* FGCBButtonBoxUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_ButtonBox(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBTabletMotion )( int, int ); typedef void (* FGCBTabletMotionUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_TabletMotion(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBTabletButton )( int, int, int, int ); typedef void (* FGCBTabletButtonUC )( int, int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_TabletButton(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBDestroy )( void ); /* Used for both window and menu destroy callbacks */ typedef void (* FGCBDestroyUC )( FGCBUserData ); -#define EXPAND_WCB_SUB_Destroy(args, userData) EXPAND_WCB_ZERO(args, userData) typedef void (* FGCBMultiEntry )( int, int ); typedef void (* FGCBMultiEntryUC )( int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_MultiEntry(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMultiButton )( int, int, int, int, int ); typedef void (* FGCBMultiButtonUC )( int, int, int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_MultiButton(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMultiMotion )( int, int, int ); typedef void (* FGCBMultiMotionUC )( int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_MultiMotion(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBMultiPassive )( int, int, int ); typedef void (* FGCBMultiPassiveUC )( int, int, int, FGCBUserData ); -#define EXPAND_WCB_SUB_MultiPassive(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) typedef void (* FGCBInitContext )( void ); typedef void (* FGCBInitContextUC )( FGCBUserData ); -#define EXPAND_WCB_SUB_InitContext(args, userData) EXPAND_WCB_ZERO(args, userData) typedef void (* FGCBAppStatus )( int ); typedef void (* FGCBAppStatusUC )( int, FGCBUserData ); -#define EXPAND_WCB_SUB_AppStatus(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) /* The global callbacks type definitions */ typedef void (* FGCBIdle )( void ); \ @@ -646,86 +625,24 @@ #define FETCH_USER_DATA_WCB(window,cbname) \ ((window).CallbackDatas[WCB_ ## cbname]) -#if 0 /* * EXPAND_WCB() is used as: * - * EXPAND_WCB arg_list + * EXPAND_WCB( cbname )(( arg_list, userData )) * - * ... where {(arg_list)} is the parameter list. + * ... where {(arg_list)} is the parameter list and userData is user + * provided data. * * This will take the arg_list and extend it by one argument, adding * the argument "userData" to the end of the list. - * - * All additional args are to get around trailing ',', argument counts, - * and not needing a GCC extension to make this work. * - * Minor modification of: - * http://stackoverflow.com/questions/5355241/generating-function-declaration-using-a-macro-iteration/5355946#5355946 + * All of this is defined in fg_callback_macros.h * - * Supports up to five arguments - */ - -/* GCC-specific design that doesn't require per-callback defines */ - -#define PP_HAS_ARGS_IMPL2(_0, _1, _2, _3, _4, _5, N, ...) N -#define PP_HAS_ARGS_SOURCE() \ - ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ONE_OR_MORE, ZERO - -#define PP_HAS_ARGS_IMPL(...) \ - PP_HAS_ARGS_IMPL2(__VA_ARGS__) -#define PP_HAS_ARGS(...) \ - PP_HAS_ARGS_IMPL(NOT_EXIST, ##__VA_ARGS__, PP_HAS_ARGS_SOURCE()) - -#define EXPAND_WCB_ZERO(x) \ - (userData) -#define EXPAND_WCB_ONE_OR_MORE(...) \ - (__VA_ARGS__, userData) - -#define EXPAND_WCB_DISAMBIGUATE2(has_args, ...) \ - EXPAND_WCB_ ## has_args (__VA_ARGS__) -#define EXPAND_WCB_DISAMBIGUATE(has_args, ...) \ - EXPAND_WCB_DISAMBIGUATE2(has_args, __VA_ARGS__) -#define EXPAND_WCB(...) \ - EXPAND_WCB_DISAMBIGUATE(PP_HAS_ARGS(__VA_ARGS__), __VA_ARGS__) - -#else -/* - * EXPAND_WCB() is used as: - * - * EXPAND_WCB( cbname )( arg_list, userData ) - * - * ... where {(arg_list)} is the parameter list and userData is user - * provided data. + * See that header for more info. * - * This will take the arg_list and extend it by one argument, adding - * the argument "userData" to the end of the list. - * - * In order for this to work, each callback must have a define that - * properly handles the arguments as needed by the callback. - * This callback is in the format of EXPAND_WCB_SUB_<cbname>. - * Two helper defines exist: EXPAND_WCB_ZERO and EXPAND_WCB_ONE_OR_MORE, - * each to handle callbacks that take zero-params (but take userData) and - * to take one or more params (along with userData). - * - * An example for the "Entry" callback, where "Entry" is the cbname: - * typedef void (* FGCBEntry )( int ); - * typedef void (* FGCBEntryUC)( int, FGCBUserData ); - * #define EXPAND_WCB_SUB_Entry(args, userData) EXPAND_WCB_ONE_OR_MORE(args, userData) + * ------------------------------------------------------------------ */ -#define FG_COMPILER_SUPPORTS_VA_ARGS -#ifdef FG_COMPILER_SUPPORTS_VA_ARGS -#define EXPAND_WCB_UNPARAN(...) __VA_ARGS__ -#else -#error "Compiler does not support varadic argument macros" -#endif -#define EXPAND_WCB_ZERO(args, userData) ( userData ) -#define EXPAND_WCB_ONE_OR_MORE(args, userData) ( EXPAND_WCB_UNPARAN args, userData ) - -#define EXPAND_WCB(cbname) EXPAND_WCB_SUB_ ## cbname -#endif - /* * INVOKE_WCB() is used as: * @@ -755,7 +672,7 @@ FGCB ## cbname ## UC func = (FGCB ## cbname ## UC)(FETCH_WCB( window, cbname )); \ FGCBUserData userData = FETCH_USER_DATA_WCB( window, cbname ); \ fgSetWindow( &window ); \ - func EXPAND_WCB( cbname )( arg_list, userData ); \ + func EXPAND_WCB( cbname )(( arg_list, userData )); \ } \ } while( 0 ) #else @@ -766,7 +683,7 @@ { \ fgSetWindow( &window ); \ FGCBUserData userData = FETCH_USER_DATA_WCB( window, cbname ); \ - ((FGCB ## cbname ## UC)FETCH_WCB( window, cbname )) EXPAND_WCB( cbname )( arg_list, userData ); \ + ((FGCB ## cbname ## UC)FETCH_WCB( window, cbname )) EXPAND_WCB( cbname )(( arg_list, userData )); \ } \ } while( 0 ) #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-09-05 03:35:41
|
Revision: 932 http://freeglut.svn.sourceforge.net/freeglut/?rev=932&view=rev Author: fayjf Date: 2011-09-05 03:35:35 +0000 (Mon, 05 Sep 2011) Log Message: ----------- Final patch on full screen fix per e-mail from Diederick Niehorster dated 10/4/11 at 10:19 PM Modified Paths: -------------- trunk/freeglut/freeglut/progs/demos/One/one.c trunk/freeglut/freeglut/src/freeglut_window.c Modified: trunk/freeglut/freeglut/progs/demos/One/one.c =================================================================== --- trunk/freeglut/freeglut/progs/demos/One/one.c 2011-09-04 20:30:48 UTC (rev 931) +++ trunk/freeglut/freeglut/progs/demos/One/one.c 2011-09-05 03:35:35 UTC (rev 932) @@ -336,4 +336,4 @@ return EXIT_SUCCESS; } -/*** END OF FILE ***/ +/*** END OF FILE ***/ \ No newline at end of file Modified: trunk/freeglut/freeglut/src/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_window.c 2011-09-04 20:30:48 UTC (rev 931) +++ trunk/freeglut/freeglut/src/freeglut_window.c 2011-09-05 03:35:35 UTC (rev 932) @@ -1367,7 +1367,7 @@ if( gameMode ) { /* if in gamemode, query the origin of specified by the -display - * parameter command line (if any) and offset the upper-left corner + * command line parameter (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. @@ -2000,7 +2000,7 @@ } { -#if(WINVER >= 0x0500) +#if(WINVER >= 0x0500) /* Windows 2000 or later */ DWORD s; RECT rect; HMONITOR hMonitor; @@ -2042,9 +2042,8 @@ 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; + rect.right = fgDisplay.ScreenWidth; + rect.bottom = fgDisplay.ScreenHeight; AdjustWindowRect ( &rect, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, FALSE ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-09-28 01:37:36
|
Revision: 942 http://freeglut.svn.sourceforge.net/freeglut/?rev=942&view=rev Author: fayjf Date: 2011-09-28 01:37:26 +0000 (Wed, 28 Sep 2011) Log Message: ----------- FreeBSD patch per e-mail from John Tsiombikas vintage 9/27/11, 10:37 AM Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/src/Makefile.am trunk/freeglut/freeglut/src/freeglut_joystick.c Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2011-09-28 01:24:32 UTC (rev 941) +++ trunk/freeglut/freeglut/configure.ac 2011-09-28 01:37:26 UTC (rev 942) @@ -42,11 +42,15 @@ 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 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_CHECK_HEADERS([usbhid.h libusbhid.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]) Modified: trunk/freeglut/freeglut/src/Makefile.am =================================================================== --- trunk/freeglut/freeglut/src/Makefile.am 2011-09-28 01:24:32 UTC (rev 941) +++ trunk/freeglut/freeglut/src/Makefile.am 2011-09-28 01:37:26 UTC (rev 942) @@ -44,7 +44,7 @@ # # Additional linker flags # -lib@LIBRARY@_la_LIBADD = $(GL_LIBS) $(X_LIBS) $(LIBM) +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 Modified: trunk/freeglut/freeglut/src/freeglut_joystick.c =================================================================== --- trunk/freeglut/freeglut/src/freeglut_joystick.c 2011-09-28 01:24:32 UTC (rev 941) +++ trunk/freeglut/freeglut/src/freeglut_joystick.c 2011-09-28 01:37:26 UTC (rev 942) @@ -79,11 +79,11 @@ # include <errno.h> # include <string.h> # endif -# if defined(__FreeBSD__) || defined(__NetBSD__) +# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) /* XXX The below hack is done until freeglut's autoconf is updated. */ # define HAVE_USB_JS 1 -# if defined(__FreeBSD__) +# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) # include <sys/joystick.h> # else /* @@ -134,7 +134,7 @@ /* BSD defines from "jsBSD.cxx" around lines 42-270 */ -#if defined(__NetBSD__) || defined(__FreeBSD__) +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) # ifdef HAVE_USB_JS # if defined(__NetBSD__) @@ -145,16 +145,14 @@ # else # include <usb.h> # endif -# elif defined(__FreeBSD__) -# if __FreeBSD_version < 500000 -# include <libusbhid.h> -# else -/* XXX The below hack is done until freeglut's autoconf is updated. */ -# define HAVE_USBHID_H 1 +# elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +# ifdef HAVE_USBHID_H # include <usbhid.h> +# else +# include <libusbhid.h> # endif # endif -# include <dev/usb/usb.h> +# include <legacy/dev/usb/usb.h> # include <dev/usb/usbhid.h> /* Compatibility with older usb.h revisions */ @@ -407,7 +405,7 @@ #if TARGET_HOST_POSIX_X11 -# if defined(__FreeBSD__) || defined(__NetBSD__) +# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) struct os_specific_s *os; # endif @@ -475,7 +473,7 @@ int status; #endif -#if defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) int len; #endif @@ -612,7 +610,7 @@ #endif #if TARGET_HOST_POSIX_X11 -# if defined(__FreeBSD__) || defined(__NetBSD__) +# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) if ( joy->os->is_analog ) { int status = read ( joy->os->fd, &joy->os->ajs, sizeof(joy->os->ajs) ); @@ -764,7 +762,7 @@ } if ( buttons ) -# if defined( __FreeBSD__ ) || defined( __NetBSD__ ) +# if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ ) *buttons = ( joy->js.b1 ? 1 : 0 ) | ( joy->js.b2 ? 2 : 0 ); /* XXX Should not be here -- BSD is handled earlier */ # else *buttons = joy->js.buttons; @@ -1074,7 +1072,7 @@ CFTypeRef topLevelElement; #endif #if TARGET_HOST_POSIX_X11 -# if defined( __FreeBSD__ ) || defined( __NetBSD__ ) +# if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ ) char *cp; # endif # ifdef JS_NEW @@ -1310,7 +1308,7 @@ #endif #if TARGET_HOST_POSIX_X11 -#if defined( __FreeBSD__ ) || defined( __NetBSD__ ) +#if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ ) for( i = 0; i < _JS_MAX_AXES; i++ ) joy->os->cache_axes[ i ] = 0.0f; @@ -1576,7 +1574,7 @@ #endif #if TARGET_HOST_POSIX_X11 -# if defined( __FreeBSD__ ) || defined( __NetBSD__ ) +# if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ ) fgJoystick[ ident ]->id = ident; fgJoystick[ ident ]->error = GL_FALSE; @@ -1645,7 +1643,7 @@ #endif #if TARGET_HOST_POSIX_X11 -#if defined( __FreeBSD__ ) || defined( __NetBSD__ ) +#if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ ) if( fgJoystick[ident]->os ) { if( ! fgJoystick[ ident ]->error ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2011-12-13 05:40:16
|
Revision: 952 http://freeglut.svn.sourceforge.net/freeglut/?rev=952&view=rev Author: fayjf Date: 2011-12-13 05:40:10 +0000 (Tue, 13 Dec 2011) Log Message: ----------- Deleting project directories that were deprecated last January and are now redundant and out of date Removed Paths: ------------- trunk/freeglut/freeglut/VisualStudio2008/ trunk/freeglut/freeglut/VisualStudio2008Static/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2012-01-08 04:37:41
|
Revision: 970 http://freeglut.svn.sourceforge.net/freeglut/?rev=970&view=rev Author: fayjf Date: 2012-01-08 04:37:34 +0000 (Sun, 08 Jan 2012) Log Message: ----------- Adding the first step towards "cmake" support. It does not work with MSVC 6.0 yet. Added Paths: ----------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/config.h.in Added: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt (rev 0) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-01-08 04:37:34 UTC (rev 970) @@ -0,0 +1,113 @@ +PROJECT(freeglut) +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +SET(FREEGLUT_SRCS + src/freeglut_callbacks.c + src/freeglut_cursor.c + src/freeglut_display.c + src/freeglut_ext.c + src/freeglut_font.c + src/freeglut_font_data.c + src/freeglut_gamemode.c + src/freeglut_geometry.c + src/freeglut_glutfont_definitions.c + src/freeglut_init.c + src/freeglut_input_devices.c + src/freeglut_joystick.c + src/freeglut_main.c + src/freeglut_menu.c + src/freeglut_misc.c + src/freeglut_overlay.c + src/freeglut_spaceball.c + src/freeglut_state.c + src/freeglut_stroke_mono_roman.c + src/freeglut_stroke_roman.c + src/freeglut_structure.c + src/freeglut_teapot.c + src/freeglut_videoresize.c + src/freeglut_window.c + src/freeglut_xinput.c +) + +IF(WIN32) + LIST(APPEND FREEGLUT_SRCS src/freeglut_windows.c) +ELSE() + LIST(APPEND FREEGLUT_SRCS src/freeglut_x11.c) +ENDIF() + +# Neatly organize all of the output files in the build directory +SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) +SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) + +# BUILD_SHARED_LIBS is already a standard CMake variable, but we need to +# re-delcare it here so it will show up in the GUI. +OPTION(BUILD_SHARED_LIBS "Build FreeGLUT as a shared library." ON) + +FIND_PACKAGE(OpenGL REQUIRED) + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${OPENGL_INCLUDE_DIR}) + +IF(WIN32) + MESSAGE(WARNING "Insecure CRT warnings hidden (might want to fix these)") + ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) +ENDIF() + +INCLUDE(CheckIncludeFiles) + +CHECK_INCLUDE_FILES(X11/extensions/xf86vmode.h HAVE_X11_EXTENSIONS_XF86VMODE_H) +CHECK_INCLUDE_FILES(X11/extensions/Xrandr.h HAVE_X11_EXTENSIONS_XRANDR_H) +CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H) +CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H) +CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_TIME_H) +CHECK_INCLUDE_FILES(stdbool.h HAVE_STDBOOL_H) +CHECK_INCLUDE_FILES(sys/param.h HAVE_SYS_PARAM_H) +CHECK_INCLUDE_FILES(sys/ioctl.h HAVE_SYS_IOCTL_H) +CHECK_INCLUDE_FILES(fcntl.h HAVE_FCNTL_H) +CHECK_INCLUDE_FILES(errno.h HAVE_ERRNO_H) +CHECK_INCLUDE_FILES(usbhid.h HAVE_USBHID_H) + +# The generated config.h is placed in the project's build directory, just to +# ensure that all CMake-generated files are kept away from the main source tree. +# As a result, the build directory must to be added to the include path list. +CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h) +INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) +ADD_DEFINITIONS(-DHAVE_CONFIG_H) + +IF(BUILD_SHARED_LIBS) + IF(WIN32) + LIST(APPEND FREEGLUT_SRCS src/freeglutdll.def freeglut.rc) + ENDIF() + ADD_DEFINITIONS(-DFREEGLUT_EXPORTS) +ELSE() + ADD_DEFINITIONS(-DFREEGLUT_STATIC) +ENDIF() + +# The default library type is determined by BUILD_SHARED_LIBS +ADD_LIBRARY(freeglut ${FREEGLUT_SRCS}) + +IF(NOT BUILD_SHARED_LIBS) + SET_TARGET_PROPERTIES(freeglut PROPERTIES OUTPUT_NAME freeglut_static) +ENDIF() + +INSTALL(TARGETS freeglut DESTINATION lib) +INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/include/GL" DESTINATION include + FILES_MATCHING PATTERN "*.h") + +MACRO(ADD_DEMO name) + ADD_EXECUTABLE(${name} ${ARGN}) + TARGET_LINK_LIBRARIES(${name} freeglut) + INSTALL(TARGETS ${name} DESTINATION bin) +ENDMACRO() + +ADD_DEMO(CallbackMaker progs/demos/CallbackMaker/CallbackMaker.c) +ADD_DEMO(Fractals progs/demos/Fractals/Fractals.c) +ADD_DEMO(Fractals_random progs/demos/Fractals_random/Fractals_random.c) +ADD_DEMO(Lorenz progs/demos/Lorenz/Lorenz.c) +ADD_DEMO(One progs/demos/One/One.c) +ADD_DEMO(Resizer progs/demos/Resizer/Resizer.c) +ADD_DEMO(shapes progs/demos/shapes/shapes.c) +ADD_DEMO(smooth_opengl3 progs/demos/smooth_opengl3/smooth_opengl3.c) +ADD_DEMO(spaceball progs/demos/spaceball/spaceball.c) +ADD_DEMO(subwin progs/demos/subwin/subwin.c) + + Added: trunk/freeglut/freeglut/config.h.in =================================================================== --- trunk/freeglut/freeglut/config.h.in (rev 0) +++ trunk/freeglut/freeglut/config.h.in 2012-01-08 04:37:34 UTC (rev 970) @@ -0,0 +1,11 @@ +#cmakedefine HAVE_X11_EXTENSIONS_XF86VMODE_H +#cmakedefine HAVE_X11_EXTENSIONS_XRANDR_H +#cmakedefine HAVE_SYS_TYPES_H +#cmakedefine HAVE_UNISTD_H +#cmakedefine HAVE_SYS_TIME_H +#cmakedefine HAVE_STDBOOL_H +#cmakedefine HAVE_SYS_PARAM_H +#cmakedefine HAVE_SYS_IOCTL_H +#cmakedefine HAVE_FCNTL_H +#cmakedefine HAVE_ERRNO_H +#cmakedefine HAVE_USBHID_H This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2012-01-16 01:28:02
|
Revision: 978 http://freeglut.svn.sourceforge.net/freeglut/?rev=978&view=rev Author: fayjf Date: 2012-01-16 01:27:55 +0000 (Mon, 16 Jan 2012) Log Message: ----------- Adding empty files for platform-specific Windows and Posix/X11 code to be placed in. Modified Paths: -------------- trunk/freeglut/freeglut/freeglut.dsp trunk/freeglut/freeglut/freeglut_static.dsp Added Paths: ----------- trunk/freeglut/freeglut/src/mswin/freeglut_cursor_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_display_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_ext_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_gamemode_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_input_devices_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_internal_mswin.h trunk/freeglut/freeglut/src/mswin/freeglut_joystick_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_main_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_menu_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_spaceball_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_state_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_structure_mswin.c trunk/freeglut/freeglut/src/mswin/freeglut_window_mswin.c trunk/freeglut/freeglut/src/x11/freeglut_cursor_x11.c trunk/freeglut/freeglut/src/x11/freeglut_display_x11.c trunk/freeglut/freeglut/src/x11/freeglut_ext_x11.c trunk/freeglut/freeglut/src/x11/freeglut_gamemode_x11.c trunk/freeglut/freeglut/src/x11/freeglut_init_x11.c trunk/freeglut/freeglut/src/x11/freeglut_input_devices_x11.c trunk/freeglut/freeglut/src/x11/freeglut_internal_x11.h trunk/freeglut/freeglut/src/x11/freeglut_joystick_x11.c trunk/freeglut/freeglut/src/x11/freeglut_main_x11.c trunk/freeglut/freeglut/src/x11/freeglut_menu_x11.c trunk/freeglut/freeglut/src/x11/freeglut_spaceball_x11.c trunk/freeglut/freeglut/src/x11/freeglut_state_x11.c trunk/freeglut/freeglut/src/x11/freeglut_structure_x11.c trunk/freeglut/freeglut/src/x11/freeglut_window_x11.c Modified: trunk/freeglut/freeglut/freeglut.dsp =================================================================== --- trunk/freeglut/freeglut/freeglut.dsp 2012-01-15 22:28:35 UTC (rev 977) +++ trunk/freeglut/freeglut/freeglut.dsp 2012-01-16 01:27:55 UTC (rev 978) @@ -89,8 +89,64 @@ # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Group "mswin" + +# PROP Default_Filter "" # Begin Source File +SOURCE=.\src\mswin\freeglut_cursor_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_display_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_ext_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_gamemode_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_init_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_input_devices_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_joystick_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_main_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_menu_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_spaceball_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_state_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_structure_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_window_mswin.c +# End Source File +# End Group +# Begin Source File + SOURCE=.\src\Common\freeglut_callbacks.c # End Source File # Begin Source File Modified: trunk/freeglut/freeglut/freeglut_static.dsp =================================================================== --- trunk/freeglut/freeglut/freeglut_static.dsp 2012-01-15 22:28:35 UTC (rev 977) +++ trunk/freeglut/freeglut/freeglut_static.dsp 2012-01-16 01:27:55 UTC (rev 978) @@ -83,8 +83,69 @@ # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Group "mswin" + +# PROP Default_Filter "" # Begin Source File +SOURCE=.\src\mswin\freeglut_cursor_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_display_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_ext_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_gamemode_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_init_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_input_devices_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_joystick_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_main_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_menu_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_spaceball_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_state_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_structure_mswin.c +# End Source File +# Begin Source File + +SOURCE=.\src\mswin\freeglut_window_mswin.c +# End Source File +# End Group +# End Group +# Begin Source File + +SOURCE=.\include\GL\freeglut.h +# End Source File +# Begin Source File + SOURCE=.\src\Common\freeglut_callbacks.c # End Source File # Begin Source File @@ -101,6 +162,10 @@ # End Source File # Begin Source File +SOURCE=.\include\GL\freeglut_ext.h +# End Source File +# Begin Source File + SOURCE=.\src\Common\freeglut_font.c # End Source File # Begin Source File @@ -129,6 +194,10 @@ # End Source File # Begin Source File +SOURCE=.\src\Common\freeglut_internal.h +# End Source File +# Begin Source File + SOURCE=.\src\Common\freeglut_joystick.c # End Source File # Begin Source File @@ -157,6 +226,10 @@ # End Source File # Begin Source File +SOURCE=.\include\GL\freeglut_std.h +# End Source File +# Begin Source File + SOURCE=.\src\Common\freeglut_stroke_mono_roman.c # End Source File # Begin Source File @@ -173,40 +246,23 @@ # End Source File # Begin Source File -SOURCE=.\src\Common\freeglut_videoresize.c +SOURCE=.\src\Common\freeglut_teapot_data.h # End Source File # Begin Source File -SOURCE=.\src\Common\freeglut_window.c +SOURCE=.\src\Common\freeglut_videoresize.c # End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File -SOURCE=.\include\GL\freeglut.h +SOURCE=.\src\Common\freeglut_window.c # End Source File # Begin Source File -SOURCE=.\include\GL\freeglut_ext.h +SOURCE=.\include\GL\glut.h # End Source File -# Begin Source File +# End Target +# Begin Group "Header Files" -SOURCE=.\src\Common\freeglut_internal.h -# End Source File -# Begin Source File - -SOURCE=.\include\GL\freeglut_std.h -# End Source File -# Begin Source File - -SOURCE=.\src\Common\freeglut_teapot_data.h -# End Source File -# Begin Source File - -SOURCE=.\include\GL\glut.h -# End Source File +# PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group -# End Target # End Project Added: trunk/freeglut/freeglut/src/mswin/freeglut_cursor_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_display_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_ext_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_gamemode_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_input_devices_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_internal_mswin.h =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_joystick_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_main_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_menu_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_spaceball_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_state_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_structure_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/mswin/freeglut_window_mswin.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_cursor_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_display_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_ext_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_gamemode_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_init_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_input_devices_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_internal_x11.h =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_joystick_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_main_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_menu_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_spaceball_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_state_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_structure_x11.c =================================================================== Added: trunk/freeglut/freeglut/src/x11/freeglut_window_x11.c =================================================================== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2012-01-19 23:36:03
|
Revision: 983 http://freeglut.svn.sourceforge.net/freeglut/?rev=983&view=rev Author: fayjf Date: 2012-01-19 23:35:57 +0000 (Thu, 19 Jan 2012) Log Message: ----------- Making "freeglut_internal_mswin.h" part of the MSVC 6.0 projects Modified Paths: -------------- trunk/freeglut/freeglut/freeglut.dsp trunk/freeglut/freeglut/freeglut_static.dsp Modified: trunk/freeglut/freeglut/freeglut.dsp =================================================================== --- trunk/freeglut/freeglut/freeglut.dsp 2012-01-19 23:33:47 UTC (rev 982) +++ trunk/freeglut/freeglut/freeglut.dsp 2012-01-19 23:35:57 UTC (rev 983) @@ -259,6 +259,10 @@ # End Source File # Begin Source File +SOURCE=.\src\mswin\freeglut_internal_mswin.h +# End Source File +# Begin Source File + SOURCE=.\include\GL\freeglut_std.h # End Source File # Begin Source File Modified: trunk/freeglut/freeglut/freeglut_static.dsp =================================================================== --- trunk/freeglut/freeglut/freeglut_static.dsp 2012-01-19 23:33:47 UTC (rev 982) +++ trunk/freeglut/freeglut/freeglut_static.dsp 2012-01-19 23:35:57 UTC (rev 983) @@ -139,6 +139,10 @@ SOURCE=.\src\mswin\freeglut_window_mswin.c # End Source File # End Group +# Begin Source File + +SOURCE=.\src\mswin\freeglut_internal_mswin.h +# End Source File # End Group # Begin Source File This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2012-02-04 05:23:30
|
Revision: 1039 http://freeglut.svn.sourceforge.net/freeglut/?rev=1039&view=rev Author: fayjf Date: 2012-02-04 05:23:24 +0000 (Sat, 04 Feb 2012) Log Message: ----------- Removing the "freeglut_glutfont_definitions.c" dependency from the Windows part of the "cmake" input and from the MSVC 6.0 files Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/freeglut.dsp trunk/freeglut/freeglut/freeglut_static.dsp Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-02-04 05:22:33 UTC (rev 1038) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-02-04 05:23:24 UTC (rev 1039) @@ -17,7 +17,6 @@ src/Common/freeglut_font_data.c src/Common/freeglut_gamemode.c src/Common/freeglut_geometry.c - src/Common/freeglut_glutfont_definitions.c src/Common/freeglut_init.c src/Common/freeglut_internal.h src/Common/freeglut_input_devices.c Modified: trunk/freeglut/freeglut/freeglut.dsp =================================================================== --- trunk/freeglut/freeglut/freeglut.dsp 2012-02-04 05:22:33 UTC (rev 1038) +++ trunk/freeglut/freeglut/freeglut.dsp 2012-02-04 05:23:24 UTC (rev 1039) @@ -179,10 +179,6 @@ # End Source File # Begin Source File -SOURCE=.\src\Common\freeglut_glutfont_definitions.c -# End Source File -# Begin Source File - SOURCE=.\src\Common\freeglut_init.c # End Source File # Begin Source File Modified: trunk/freeglut/freeglut/freeglut_static.dsp =================================================================== --- trunk/freeglut/freeglut/freeglut_static.dsp 2012-02-04 05:22:33 UTC (rev 1038) +++ trunk/freeglut/freeglut/freeglut_static.dsp 2012-02-04 05:23:24 UTC (rev 1039) @@ -186,10 +186,6 @@ # End Source File # Begin Source File -SOURCE=.\src\Common\freeglut_glutfont_definitions.c -# End Source File -# Begin Source File - SOURCE=.\src\Common\freeglut_init.c # End Source File # Begin Source File This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2012-02-05 19:34:18
|
Revision: 1070 http://freeglut.svn.sourceforge.net/freeglut/?rev=1070&view=rev Author: fayjf Date: 2012-02-05 19:34:08 +0000 (Sun, 05 Feb 2012) Log Message: ----------- Fixing the MinGW build and updating the "omitted files" per e-mail from Sylvain dated February 5, 2012 at 12:33 PM Modified Paths: -------------- trunk/freeglut/freeglut/Makefile.am trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/src/Makefile.am Modified: trunk/freeglut/freeglut/Makefile.am =================================================================== --- trunk/freeglut/freeglut/Makefile.am 2012-02-05 19:00:31 UTC (rev 1069) +++ trunk/freeglut/freeglut/Makefile.am 2012-02-05 19:34:08 UTC (rev 1070) @@ -25,31 +25,45 @@ freeglut_static.dsp \ freeglut_static.mak \ freeglut_static.tgt \ - freeglut_static_vs2008.vcproj \ - freeglut_vs2008.sln \ - freeglut_vs2008.vcproj \ + 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/CallbackMaker/CallbackMakerStatic_vs2008.vcproj \ - progs/demos/CallbackMaker/CallbackMaker_vs2008.vcproj \ progs/demos/Fractals/FractalsStatic.dsp \ - progs/demos/Fractals/FractalsStatic_vs2008.vcproj \ - progs/demos/Fractals/Fractals_vs2008.vcproj \ progs/demos/Fractals_random/Fractals_randomStatic.dsp \ - progs/demos/Fractals_random/Fractals_randomStatic_vs2008.vcproj \ - progs/demos/Fractals_random/Fractals_random_vs2008.vcproj \ progs/demos/Lorenz/lorenzStatic.dsp \ - progs/demos/Lorenz/lorenzStatic_vs2008.vcproj \ - progs/demos/Lorenz/lorenz_vs2008.vcproj \ progs/demos/One/oneStatic.dsp \ - progs/demos/One/oneStatic_vs2008.vcproj \ - progs/demos/One/one_vs2008.vcproj \ - progs/demos/demos_vs2008.sln \ progs/demos/shapes/shapesStatic.dsp \ - progs/demos/shapes/shapesStatic_vs2008.vcproj \ - progs/demos/shapes/shapes_vs2008.vcproj \ - progs/demos/smooth_opengl3/smooth_opengl3Static.dsp \ - progs/demos/smooth_opengl3/smooth_opengl3Static_vs2008.vcproj \ - progs/demos/smooth_opengl3/smooth_opengl3_vs2008.vcproj + 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, Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2012-02-05 19:00:31 UTC (rev 1069) +++ trunk/freeglut/freeglut/configure.ac 2012-02-05 19:34:08 UTC (rev 1070) @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. -AC_INIT([freeglut library], [2.6.0], [fre...@li...], [freeglut]) +AC_INIT([freeglut library], [3.0.0], [fre...@li...], [freeglut]) AM_INIT_AUTOMAKE AC_PREREQ([2.56]) AC_CONFIG_SRCDIR([AUTHORS]) @@ -21,21 +21,54 @@ # 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 +#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= + 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]) Modified: trunk/freeglut/freeglut/src/Makefile.am =================================================================== --- trunk/freeglut/freeglut/src/Makefile.am 2012-02-05 19:00:31 UTC (rev 1069) +++ trunk/freeglut/freeglut/src/Makefile.am 2012-02-05 19:34:08 UTC (rev 1070) @@ -10,7 +10,7 @@ # noinst_HEADERS = Common/freeglut_internal.h Common/freeglut_teapot_data.h -EXTRA_DIST = freeglutdll.def +EXTRA_DIST = Common/freeglutdll.def # # Those source files build the freeglut library @@ -37,23 +37,46 @@ Common/freeglut_structure.c \ Common/freeglut_teapot.c \ Common/freeglut_videoresize.c \ - Common/freeglut_window.c \ - 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_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 + Common/freeglut_window.c +if TARGET_HOST_MS_WINDOWS +lib@LIBRARY@_la_SOURCES += \ + 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 + # # Additional linker flags # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fa...@us...> - 2012-02-25 05:34:30
|
Revision: 1078 http://freeglut.svn.sourceforge.net/freeglut/?rev=1078&view=rev Author: fayjf Date: 2012-02-25 05:34:24 +0000 (Sat, 25 Feb 2012) Log Message: ----------- Checking for "gettimeofday" per e-mail from John Tsiombikas dated 2/23/12 at 9:29 AM Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/config.h.in trunk/freeglut/freeglut/src/x11/freeglut_main_x11.c Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-02-12 04:41:32 UTC (rev 1077) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-02-25 05:34:24 UTC (rev 1078) @@ -107,6 +107,7 @@ ENDIF() INCLUDE(CheckIncludeFiles) +INCLUDE(CheckFunctionExists) CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H) CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H) CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_TIME_H) @@ -116,6 +117,7 @@ CHECK_INCLUDE_FILES(fcntl.h HAVE_FCNTL_H) CHECK_INCLUDE_FILES(errno.h HAVE_ERRNO_H) CHECK_INCLUDE_FILES(usbhid.h HAVE_USBHID_H) +CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) # The generated config.h is placed in the project's build directory, just to # ensure that all CMake-generated files are kept away from the main source tree. Modified: trunk/freeglut/freeglut/config.h.in =================================================================== --- trunk/freeglut/freeglut/config.h.in 2012-02-12 04:41:32 UTC (rev 1077) +++ trunk/freeglut/freeglut/config.h.in 2012-02-25 05:34:24 UTC (rev 1078) @@ -9,3 +9,4 @@ #cmakedefine HAVE_FCNTL_H #cmakedefine HAVE_ERRNO_H #cmakedefine HAVE_USBHID_H +#cmakedefine HAVE_GETTIMEOFDAY \ No newline at end of file Modified: trunk/freeglut/freeglut/src/x11/freeglut_main_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/freeglut_main_x11.c 2012-02-12 04:41:32 UTC (rev 1077) +++ trunk/freeglut/freeglut/src/x11/freeglut_main_x11.c 2012-02-25 05:34:24 UTC (rev 1078) @@ -91,7 +91,7 @@ unsigned long fgPlatformSystemTime ( void ) { -#if TARGET_HOST_SOLARIS || HAVE_GETTIMEOFDAY +#ifdef HAVE_GETTIMEOFDAY struct timeval now; gettimeofday( &now, NULL ); return now.tv_usec/1000 + now.tv_sec*1000; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-09 20:20:27
|
Revision: 1087 http://freeglut.svn.sourceforge.net/freeglut/?rev=1087&view=rev Author: beuc Date: 2012-03-09 20:20:20 +0000 (Fri, 09 Mar 2012) Log Message: ----------- Detect vfprintf (used in fgError/fgWarning) Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/config.h.in Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-03-09 20:02:30 UTC (rev 1086) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-03-09 20:20:20 UTC (rev 1087) @@ -123,6 +123,8 @@ CHECK_INCLUDE_FILES(errno.h HAVE_ERRNO_H) CHECK_INCLUDE_FILES(usbhid.h HAVE_USBHID_H) CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) +CHECK_FUNCTION_EXISTS(vfprintf HAVE_VFPRINTF) +CHECK_FUNCTION_EXISTS(_doprnt HAVE_DOPRNT) # The generated config.h is placed in the project's build directory, just to # ensure that all CMake-generated files are kept away from the main source tree. Modified: trunk/freeglut/freeglut/config.h.in =================================================================== --- trunk/freeglut/freeglut/config.h.in 2012-03-09 20:02:30 UTC (rev 1086) +++ trunk/freeglut/freeglut/config.h.in 2012-03-09 20:20:20 UTC (rev 1087) @@ -9,4 +9,6 @@ #cmakedefine HAVE_FCNTL_H #cmakedefine HAVE_ERRNO_H #cmakedefine HAVE_USBHID_H -#cmakedefine HAVE_GETTIMEOFDAY \ No newline at end of file +#cmakedefine HAVE_GETTIMEOFDAY +#cmakedefine HAVE_VFPRINTF +#cmakedefine HAVE_DOPRNT This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-09 20:34:57
|
Revision: 1090 http://freeglut.svn.sourceforge.net/freeglut/?rev=1090&view=rev Author: beuc Date: 2012-03-09 20:34:51 +0000 (Fri, 09 Mar 2012) Log Message: ----------- Add CMake toolchain script for mingw32/64 compilation, and update documentation Modified Paths: -------------- trunk/freeglut/freeglut/README.mingw_cross Added Paths: ----------- trunk/freeglut/freeglut/mingw_cross_toolchain.cmake Modified: trunk/freeglut/freeglut/README.mingw_cross =================================================================== --- trunk/freeglut/freeglut/README.mingw_cross 2012-03-09 20:33:54 UTC (rev 1089) +++ trunk/freeglut/freeglut/README.mingw_cross 2012-03-09 20:34:51 UTC (rev 1090) @@ -1,24 +1,61 @@ Cross-compilation from GNU/Linux (static and shared DLL) ======================================================== -Install MinGW32 and prepare FreeGLUT on Debian/Ubuntu: +Install MinGW, and specify which MinGW you're using: - apt-get install mingw32 - ./configure --host=i586-mingw32msvc --prefix=/freeglut +- on Debian/Ubuntu, mingw-w64, 32-bit executables: -Install MinGW32 and prepare FreeGLUT on Fedora: + apt-get install mingw-w64 + GNU_HOST=i686-w64-mingw32 +- on Debian/Ubuntu, mingw-w64, 64-bit executables: + + apt-get install mingw-w64 + GNU_HOST=x86_64-w64-mingw32 + +- on Fedora, mingw32, 32-bit executables: + yum install mingw32-gcc - ./configure --host=i686-pc-mingw32 --prefix=/freeglut + GNU_HOST=i686-pc-mingw32 -Cross-compile! +- on Debian/Ubuntu, mingw32 (deprecated): - make + apt-get install mingw32 + GNU_HOST=i586-mingw32msvc + + +With the GNU Autotools +---------------------- + +Cross-compile with: + + ./configure --host=$GNU_HOST --prefix=/freeglut + make -j4 make install DESTDIR=$(pwd) -Everything is in the new freeglut/ directory. -The .dll is in the freeglut/bin/. +Everything is now in the new 'freeglut/' directory. +The .dll is in 'freeglut/bin/'. +With CMake +---------- + +Cross-compile with: + + cmake \ + -D GNU_HOST=$GNU_HOST \ + -D CMAKE_TOOLCHAIN_FILE=mingw_cross_toolchain.cmake \ + -D CMAKE_INSTALL_PREFIX=/freeglut \ + . + make -j4 + make install DESTDIR=$(pwd) + +Everything is now in the new 'freeglut/' directory. +The .dll is in 'freeglut/lib/'. + + +Compiling your code +------------------- + Compilation of your own programs is done as usual. See README.cygwin_mingw for details. Added: trunk/freeglut/freeglut/mingw_cross_toolchain.cmake =================================================================== --- trunk/freeglut/freeglut/mingw_cross_toolchain.cmake (rev 0) +++ trunk/freeglut/freeglut/mingw_cross_toolchain.cmake 2012-03-09 20:34:51 UTC (rev 1090) @@ -0,0 +1,9 @@ +# CMake toolchain file, cf. README.mingw_cross +SET(CMAKE_SYSTEM_NAME Windows) +include(CMakeForceCompiler) +IF("${GNU_HOST}" STREQUAL "") + SET(GNU_HOST i586-mingw32msvc) +ENDIF() +# Prefix detection only works with compiler id "GNU" +CMAKE_FORCE_C_COMPILER(${GNU_HOST}-gcc GNU) +SET(CMAKE_RC_COMPILER ${GNU_HOST}-windres) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-09 20:46:22
|
Revision: 1091 http://freeglut.svn.sourceforge.net/freeglut/?rev=1091&view=rev Author: beuc Date: 2012-03-09 20:46:15 +0000 (Fri, 09 Mar 2012) Log Message: ----------- Make XParseGeometry reusable by several ports Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/Makefile.am trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2012-03-09 20:34:51 UTC (rev 1090) +++ trunk/freeglut/freeglut/CMakeLists.txt 2012-03-09 20:46:15 UTC (rev 1091) @@ -37,6 +37,8 @@ IF(WIN32) LIST(APPEND FREEGLUT_SRCS + src/Common/xparsegeometry_repl.c + src/Common/xparsegeometry_repl.h src/mswin/freeglut_cursor_mswin.c src/mswin/freeglut_display_mswin.c src/mswin/freeglut_ext_mswin.c @@ -85,7 +87,7 @@ OPTION(BUILD_STATIC_LIBS "Build FreeGLUT static library." ON) FIND_PACKAGE(OpenGL REQUIRED) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${OPENGL_INCLUDE_DIR}) +INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) LIST(APPEND LIBS ${OPENGL_gl_LIBRARY}) LIST(APPEND LIBS m) @@ -130,7 +132,7 @@ # ensure that all CMake-generated files are kept away from the main source tree. # As a result, the build directory must to be added to the include path list. CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h) -INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src) ADD_DEFINITIONS(-DHAVE_CONFIG_H) # by default, at least on UNIX, we want to build both Modified: trunk/freeglut/freeglut/src/Makefile.am =================================================================== --- trunk/freeglut/freeglut/src/Makefile.am 2012-03-09 20:34:51 UTC (rev 1090) +++ trunk/freeglut/freeglut/src/Makefile.am 2012-03-09 20:46:15 UTC (rev 1091) @@ -41,6 +41,8 @@ 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 \ Modified: trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c 2012-03-09 20:34:51 UTC (rev 1090) +++ trunk/freeglut/freeglut/src/mswin/freeglut_init_mswin.c 2012-03-09 20:46:15 UTC (rev 1091) @@ -195,144 +195,6 @@ */ -#define NoValue 0x0000 -#define XValue 0x0001 -#define YValue 0x0002 -#define WidthValue 0x0004 -#define HeightValue 0x0008 -#define AllValues 0x000F -#define XNegative 0x0010 -#define YNegative 0x0020 - -/* - * XParseGeometry parses strings of the form - * "=<width>x<height>{+-}<xoffset>{+-}<yoffset>", where - * width, height, xoffset, and yoffset are unsigned integers. - * Example: "=80x24+300-49" - * The equal sign is optional. - * It returns a bitmask that indicates which of the four values - * were actually found in the string. For each value found, - * the corresponding argument is updated; for each value - * not found, the corresponding argument is left unchanged. - */ - -static int -ReadInteger(char *string, char **NextString) -{ - register int Result = 0; - int Sign = 1; - - if (*string == '+') - string++; - else if (*string == '-') - { - string++; - Sign = -1; - } - for (; (*string >= '0') && (*string <= '9'); string++) - { - Result = (Result * 10) + (*string - '0'); - } - *NextString = string; - if (Sign >= 0) - return Result; - else - return -Result; -} - -int XParseGeometry ( - const char *string, - int *x, - int *y, - unsigned int *width, /* RETURN */ - unsigned int *height) /* RETURN */ -{ - int mask = NoValue; - register char *strind; - unsigned int tempWidth = 0, tempHeight = 0; - int tempX = 0, tempY = 0; - char *nextCharacter; - - if ( (string == NULL) || (*string == '\0')) - return mask; - if (*string == '=') - string++; /* ignore possible '=' at beg of geometry spec */ - - strind = (char *)string; - if (*strind != '+' && *strind != '-' && *strind != 'x') { - tempWidth = ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return 0; - strind = nextCharacter; - mask |= WidthValue; - } - - if (*strind == 'x' || *strind == 'X') { - strind++; - tempHeight = ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return 0; - strind = nextCharacter; - mask |= HeightValue; - } - - if ((*strind == '+') || (*strind == '-')) { - if (*strind == '-') { - strind++; - tempX = -ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return 0; - strind = nextCharacter; - mask |= XNegative; - } - else - { - strind++; - tempX = ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return 0; - strind = nextCharacter; - } - mask |= XValue; - if ((*strind == '+') || (*strind == '-')) { - if (*strind == '-') { - strind++; - tempY = -ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return 0; - strind = nextCharacter; - mask |= YNegative; - } - else - { - strind++; - tempY = ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return 0; - strind = nextCharacter; - } - mask |= YValue; - } - } - - /* If strind isn't at the end of the string the it's an invalid - geometry specification. */ - - if (*strind != '\0') return 0; - - if (mask & XValue) - *x = tempX; - if (mask & YValue) - *y = tempY; - if (mask & WidthValue) - *width = tempWidth; - if (mask & HeightValue) - *height = tempHeight; - return mask; -} - - - /* -- PLATFORM-SPECIFIC INTERFACE FUNCTION -------------------------------------------------- */ void (__cdecl *__glutExitFunc)( int return_value ) = NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-11 09:19:00
|
Revision: 1103 http://freeglut.svn.sourceforge.net/freeglut/?rev=1103&view=rev Author: beuc Date: 2012-03-11 09:18:53 +0000 (Sun, 11 Mar 2012) Log Message: ----------- Android documentation Added Paths: ----------- trunk/freeglut/freeglut/README.android trunk/freeglut/freeglut/android_toolchain.cmake Property Changed: ---------------- trunk/freeglut/freeglut/ Property changes on: trunk/freeglut/freeglut ___________________________________________________________________ Modified: svn:ignore - INSTALL Makefile Makefile.in aclocal.m4 autom4te.cache autoscan.log compile config.guess config.h config.h.in config.log config.status config.sub configure configure.scan debugfiles.list debugsources.list depcomp freeglut-*.tar.gz install-sh libtool ltmain.sh man-pages missing stamp-h1 config.lt + INSTALL Makefile Makefile.in aclocal.m4 autom4te.cache autoscan.log compile config.guess config.h config.h.in config.log config.status config.sub configure configure.scan debugfiles.list debugsources.list depcomp freeglut-*.tar.gz install-sh libtool ltmain.sh man-pages missing stamp-h1 config.lt native cross-woe cross-android Added: trunk/freeglut/freeglut/README.android =================================================================== --- trunk/freeglut/freeglut/README.android (rev 0) +++ trunk/freeglut/freeglut/README.android 2012-03-11 09:18:53 UTC (rev 1103) @@ -0,0 +1,61 @@ +Create a module compatible with the NDK build-system +==================================================== + +- Use your own cross-compiler for Android, or export the one from the + NDK: + + /usr/src/android-ndk-r7/build/tools/make-standalone-toolchain.sh \ + --platform=android-9 \ + --install-dir=/usr/src/ndk-standalone-9 + +- Build FreeGLUT with a '/freeglut' prefix : + + PATH=/usr/src/ndk-standalone-9/bin:$PATH + cd /usr/src/freeglut-3.0.0/ + cmake \ + -D CMAKE_TOOLCHAIN_FILE=android_toolchain.cmake \ + -D CMAKE_INSTALL_PREFIX=/freeglut \ + -D FREEGLUT_GLES2=ON \ + -D FREEGLUT_BUILD_DEMOS=NO \ + . + make -j4 + make install DESTDIR=$(pwd) + +- Copy Android.mk in the new 'freeglut/' directory : + + cp android/Android.mk freeglut/ + +- Reference this module in your jni/Android.mk: + + LOCAL_STATIC_LIBRARIES := ... freeglut + ... + $(call import-module,freeglut) + +- You now can point your NDK_MODULE_PATH to this module! + + ndk-build NDK_MODULE_PATH=/usr/src/freeglut-3.0.0/freeglut/ + + +Compile FreeGLUT for a traditional cross-compiler environment +============================================================= + +- Use your own cross-compiler for Android, or export the one from the + NDK: + + /usr/src/android-ndk-r7/build/tools/make-standalone-toolchain.sh \ + --platform=android-9 \ + --install-dir=/usr/src/ndk-standalone-9 + +- Compile FreeGLUT and install it in your Android cross-compiler path: + + PATH=/usr/src/ndk-standalone-9/bin:$PATH + ./configure --host=arm-linux-androideabi --prefix=/usr/src/ndk-standalone-9 + make + make install + +- Compile your own project, for instance if you use the autotools: + + PATH=/usr/src/ndk-standalone-9/bin:$PATH + ./configure --host=arm-linux-androideabi --prefix=/somewhere + make + make install Added: trunk/freeglut/freeglut/android_toolchain.cmake =================================================================== --- trunk/freeglut/freeglut/android_toolchain.cmake (rev 0) +++ trunk/freeglut/freeglut/android_toolchain.cmake 2012-03-11 09:18:53 UTC (rev 1103) @@ -0,0 +1,6 @@ +# CMake toolchain file, cf. README.android +SET(CMAKE_SYSTEM_NAME Linux) # Tell CMake we're cross-compiling +include(CMakeForceCompiler) +# Prefix detection only works with compiler id "GNU" +CMAKE_FORCE_C_COMPILER(arm-linux-androideabi-gcc GNU) +SET(ANDROID TRUE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-11 09:30:57
|
Revision: 1104 http://freeglut.svn.sourceforge.net/freeglut/?rev=1104&view=rev Author: beuc Date: 2012-03-11 09:30:51 +0000 (Sun, 11 Mar 2012) Log Message: ----------- Support GLES headers Modified Paths: -------------- trunk/freeglut/freeglut/include/GL/freeglut_std.h trunk/freeglut/freeglut/src/Common/freeglut_internal.h trunk/freeglut/freeglut/src/Common/freeglut_misc.c trunk/freeglut/freeglut/src/Common/freeglut_window.c Modified: trunk/freeglut/freeglut/include/GL/freeglut_std.h =================================================================== --- trunk/freeglut/freeglut/include/GL/freeglut_std.h 2012-03-11 09:18:53 UTC (rev 1103) +++ trunk/freeglut/freeglut/include/GL/freeglut_std.h 2012-03-11 09:30:51 UTC (rev 1104) @@ -119,8 +119,20 @@ /* * Always include OpenGL and GLU headers */ +#ifdef ANDROID +/* Use EGL (implies OpenGL ES) */ +/* TODO: EGL/GLES builds should be more generally defined, possibly by + generating this file dynamically */ +#include <EGL/egl.h> +/* TODO: we probably need 2 builds: -lGLESv1 and -lGLESv2 */ +/* #include <GLES/gl.h> */ +#include <GLES2/gl2.h> +/* TODO: temporary work-around for e.g. glutWireCube */ +#define GLdouble GLfloat +#else #include <GL/gl.h> #include <GL/glu.h> +#endif /* * GLUT API macro definitions -- the special key codes: Modified: trunk/freeglut/freeglut/src/Common/freeglut_internal.h =================================================================== --- trunk/freeglut/freeglut/src/Common/freeglut_internal.h 2012-03-11 09:18:53 UTC (rev 1103) +++ trunk/freeglut/freeglut/src/Common/freeglut_internal.h 2012-03-11 09:30:51 UTC (rev 1104) @@ -47,6 +47,9 @@ || ( defined(__CYGWIN__) && defined(X_DISPLAY_MISSING) ) # define TARGET_HOST_MS_WINDOWS 1 +#elif defined (ANDROID) +# define TARGET_HOST_ANDROID 1 + #elif defined(__posix__) || defined(__unix__) || defined(__linux__) || defined(__sun) # define TARGET_HOST_POSIX_X11 1 @@ -163,6 +166,9 @@ #if TARGET_HOST_MS_WINDOWS #include "../mswin/freeglut_internal_mswin.h" #endif +#if TARGET_HOST_ANDROID +#include "../android/freeglut_internal_android.h" +#endif /* -- GLOBAL TYPE DEFINITIONS ---------------------------------------------- */ Modified: trunk/freeglut/freeglut/src/Common/freeglut_misc.c =================================================================== --- trunk/freeglut/freeglut/src/Common/freeglut_misc.c 2012-03-11 09:18:53 UTC (rev 1103) +++ trunk/freeglut/freeglut/src/Common/freeglut_misc.c 2012-03-11 09:30:51 UTC (rev 1104) @@ -109,8 +109,10 @@ case GL_INVALID_ENUM: return "invalid enumerant"; case GL_INVALID_VALUE: return "invalid value"; case GL_INVALID_OPERATION: return "invalid operation"; +#ifndef GL_ES_VERSION_2_0 case GL_STACK_OVERFLOW: return "stack overflow"; case GL_STACK_UNDERFLOW: return "stack underflow"; +#endif case GL_OUT_OF_MEMORY: return "out of memory"; case GL_TABLE_TOO_LARGE: return "table too large"; case GL_INVALID_FRAMEBUFFER_OPERATION: return "invalid framebuffer operation"; Modified: trunk/freeglut/freeglut/src/Common/freeglut_window.c =================================================================== --- trunk/freeglut/freeglut/src/Common/freeglut_window.c 2012-03-11 09:18:53 UTC (rev 1103) +++ trunk/freeglut/freeglut/src/Common/freeglut_window.c 2012-03-11 09:30:51 UTC (rev 1104) @@ -145,11 +145,13 @@ window->Window.DoubleBuffered = ( fgState.DisplayMode & GLUT_DOUBLE ) ? 1 : 0; +#ifndef EGL_VERSION_1_0 /* No glDrawBuffer/glReadBuffer in GLES */ if ( ! window->Window.DoubleBuffered ) { glDrawBuffer ( GL_FRONT ); glReadBuffer ( GL_FRONT ); } +#endif } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2012-03-11 09:34:37
|
Revision: 1106 http://freeglut.svn.sourceforge.net/freeglut/?rev=1106&view=rev Author: beuc Date: 2012-03-11 09:34:30 +0000 (Sun, 11 Mar 2012) Log Message: ----------- autotools: Android port Modified Paths: -------------- trunk/freeglut/freeglut/configure.ac trunk/freeglut/freeglut/src/Makefile.am Modified: trunk/freeglut/freeglut/configure.ac =================================================================== --- trunk/freeglut/freeglut/configure.ac 2012-03-11 09:31:44 UTC (rev 1105) +++ trunk/freeglut/freeglut/configure.ac 2012-03-11 09:34:30 UTC (rev 1106) @@ -55,6 +55,12 @@ 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) ;; @@ -83,7 +89,7 @@ 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 fcntl.h limits.h sys/ioctl.h sys/param.h sys/time.h]) +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]) Modified: trunk/freeglut/freeglut/src/Makefile.am =================================================================== --- trunk/freeglut/freeglut/src/Makefile.am 2012-03-11 09:31:44 UTC (rev 1105) +++ trunk/freeglut/freeglut/src/Makefile.am 2012-03-11 09:34:30 UTC (rev 1106) @@ -15,30 +15,36 @@ # # 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.c \ - Common/freeglut_font_data.c \ - Common/freeglut_stroke_roman.c \ - Common/freeglut_stroke_mono_roman.c \ - Common/freeglut_gamemode.c \ - Common/freeglut_geometry.c \ - Common/freeglut_init.c \ - Common/freeglut_input_devices.c \ - Common/freeglut_spaceball.c \ - Common/freeglut_joystick.c \ - Common/freeglut_main.c \ - Common/freeglut_menu.c \ - Common/freeglut_misc.c \ - Common/freeglut_overlay.c \ - Common/freeglut_state.c \ - Common/freeglut_structure.c \ - Common/freeglut_teapot.c \ - Common/freeglut_videoresize.c \ - Common/freeglut_window.c +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 \ @@ -79,6 +85,30 @@ 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 # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |