diff options
Diffstat (limited to 'src/glut')
-rw-r--r-- | src/glut/beos/Makefile | 7 | ||||
-rw-r--r-- | src/glut/directfb/Makefile | 4 | ||||
-rw-r--r-- | src/glut/directfb/callback.c | 2 | ||||
-rw-r--r-- | src/glut/directfb/internal.h | 3 | ||||
-rw-r--r-- | src/glut/directfb/window.c | 22 | ||||
-rw-r--r-- | src/glut/fbdev/Makefile | 12 | ||||
-rw-r--r-- | src/glut/ggi/Makefile | 2 | ||||
-rw-r--r-- | src/glut/glx/Makefile | 30 | ||||
-rw-r--r-- | src/glut/glx/Makefile.mgw | 191 | ||||
-rw-r--r-- | src/glut/glx/SConscript | 89 | ||||
-rw-r--r-- | src/glut/glx/glut.pc.in | 11 | ||||
-rw-r--r-- | src/glut/glx/glut_dstr.c | 1 | ||||
-rw-r--r-- | src/glut/glx/glut_event.c | 8 | ||||
-rw-r--r-- | src/glut/glx/glut_fcb.c (renamed from src/glut/glx/glut_fbc.c) | 50 | ||||
-rw-r--r-- | src/glut/glx/glutint.h | 2 | ||||
-rw-r--r-- | src/glut/glx/glutstroke.h | 2 | ||||
-rw-r--r-- | src/glut/glx/glutwin32.h | 1 | ||||
-rw-r--r-- | src/glut/glx/win32_x11.h | 2 | ||||
-rw-r--r-- | src/glut/mini/Makefile | 24 | ||||
-rw-r--r-- | src/glut/mini/glut.pc.in | 11 |
20 files changed, 417 insertions, 57 deletions
diff --git a/src/glut/beos/Makefile b/src/glut/beos/Makefile index a7ba512cb11..a9f8684c9bd 100644 --- a/src/glut/beos/Makefile +++ b/src/glut/beos/Makefile @@ -83,9 +83,10 @@ $(TOP)/$(LIB_DIR): # Make the library $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS) - @$(TOP)/bin/mklib -o $(GLUT_LIB) -major $(GLUT_MAJOR) -minor $(GLUT_MINOR) -patch $(GLUT_TINY) \ - -install $(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) $(GLUT_LIB_DEPS) \ - $(OBJECTS) + @$(MKLIB) -o $(GLUT_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ + -major $(GLUT_MAJOR) -minor $(GLUT_MINOR) -patch $(GLUT_TINY) \ + -install $(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) \ + $(GLUT_LIB_DEPS) $(OBJECTS) clean: -rm -f *.o diff --git a/src/glut/directfb/Makefile b/src/glut/directfb/Makefile index e881b8aacdd..bf93d63e305 100644 --- a/src/glut/directfb/Makefile +++ b/src/glut/directfb/Makefile @@ -61,7 +61,7 @@ default: depend $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME) # Make the library $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS) - $(TOP)/bin/mklib -o $(GLUT_LIB) -linker '$(CC)' \ + $(MKLIB) -o $(GLUT_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ -major $(GLUT_MAJOR) -minor $(GLUT_MINOR) -patch $(GLUT_TINY) \ $(GLUT_LIB_DEPS) -install $(TOP)/$(LIB_DIR) \ $(MKLIB_OPTIONS) $(OBJECTS) @@ -81,7 +81,7 @@ tags: # Remove .o and backup files clean: depend - -rm -f depend + -rm -f depend depend.bak -rm -f *.o *~ *.o *~ *.so libglut.so.3.7 include depend diff --git a/src/glut/directfb/callback.c b/src/glut/directfb/callback.c index 4f23441167a..7c9768aac0a 100644 --- a/src/glut/directfb/callback.c +++ b/src/glut/directfb/callback.c @@ -278,7 +278,7 @@ __glutGetTimeout( int *ret_msec ) gettimeofday( &now, NULL ); *ret_msec = (time->tv_sec - now.tv_sec) * 1000 + - (time->tv_usec - now.tv_usec + 500) / 1000; + (time->tv_usec - now.tv_usec + 999) / 1000; return GL_TRUE; } diff --git a/src/glut/directfb/internal.h b/src/glut/directfb/internal.h index 47311c9342b..55c4b5ce280 100644 --- a/src/glut/directfb/internal.h +++ b/src/glut/directfb/internal.h @@ -62,6 +62,9 @@ typedef struct __GlutWindow_s { IDirectFBSurface *surface; IDirectFBGL *gl; + /* display mode */ + GLenum mode; + /* cursor position in fullscreen mode */ int cx; int cy; diff --git a/src/glut/directfb/window.c b/src/glut/directfb/window.c index c8174d795e7..62cf8bb33e0 100644 --- a/src/glut/directfb/window.c +++ b/src/glut/directfb/window.c @@ -66,6 +66,9 @@ __glutCreateWindow( GLboolean fullscreen ) case 8: config.pixelformat = DSPF_RGB332; break; + case 12: + config.pixelformat = DSPF_ARGB4444; + break; case 15: config.pixelformat = DSPF_ARGB1555; break; @@ -109,7 +112,7 @@ __glutCreateWindow( GLboolean fullscreen ) if (joystick) joystick->AttachEventBuffer( joystick, events ); - new->visible = GL_TRUE; + new->visible = GL_TRUE; } else { DFBWindowDescription dsc; @@ -160,11 +163,12 @@ __glutCreateWindow( GLboolean fullscreen ) DWET_BUTTONDOWN | DWET_BUTTONUP | DWET_ENTER | DWET_LEAVE | DWET_MOTION | DWET_SIZE ); - new->req.flags |= WINDOW_REQUEST_SHOW; } + new->mode = g_display_mode; + new->reshape = GL_TRUE; new->visibility = GL_TRUE; new->redisplay = GL_TRUE; @@ -220,7 +224,8 @@ __glutHandleWindows( void ) __GlutWindow *cur = g_stack; while (cur) { - __GlutWindow *next = cur->next; + __GlutWindow *next = cur->next; + GLboolean displayed = GL_FALSE; if (cur->window && cur->req.flags) { if (cur == g_current) @@ -291,18 +296,29 @@ __glutHandleWindows( void ) cur->surface->GetSize( cur->surface, &w, &h ); __glutSetWindow( cur ); reshape_func( w, h ); + displayed = GL_TRUE; } if (cur->visibility && visibility_func) { g_idle = GL_FALSE; __glutSetWindow( cur ); visibility_func( cur->visible ? GLUT_VISIBLE : GLUT_NOT_VISIBLE ); + displayed = GL_TRUE; } if (cur->redisplay && display_func) { g_idle = GL_FALSE; __glutSetWindow( cur ); display_func(); + displayed = GL_TRUE; + } + + if (displayed && cur->window && cur->visible) { + if (!(cur->mode & GLUT_DOUBLE)) { + cur->gl->Unlock( cur->gl ); + cur->surface->Flip( cur->surface, NULL, 0 ); + cur->gl->Lock( cur->gl ); + } } cur->reshape = GL_FALSE; diff --git a/src/glut/fbdev/Makefile b/src/glut/fbdev/Makefile index b32b4141e8d..199d8c390a6 100644 --- a/src/glut/fbdev/Makefile +++ b/src/glut/fbdev/Makefile @@ -63,16 +63,16 @@ default: depend $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME) # Make the library $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS) - $(TOP)/bin/mklib -o $(GLUT_LIB) -linker '$(CC)' \ + $(MKLIB) -o $(GLUT_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ -major $(GLUT_MAJOR) -minor $(GLUT_MINOR) -patch $(GLUT_TINY) \ $(GLUT_LIB_DEPS) -install $(TOP)/$(LIB_DIR) \ $(MKLIB_OPTIONS) $(OBJECTS) install: - $(INSTALL) -d $(INSTALL_DIR)/include/GL - $(INSTALL) -d $(INSTALL_DIR)/$(LIB_DIR) - $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(INSTALL_DIR)/include/GL - $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(INSTALL_DIR)/$(LIB_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_INC_DIR)/GL + $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_LIB_DIR) # Run 'make -f Makefile.solo dep' to update the dependencies if you change # what's included by any source file. @@ -88,7 +88,7 @@ tags: # Remove .o and backup files clean: depend - -rm -f depend + -rm -f depend depend.bak -rm -f *.o *~ *.o *~ *.so libglut.so.3.7 include depend diff --git a/src/glut/ggi/Makefile b/src/glut/ggi/Makefile index 748c83c2286..c23dfcac105 100644 --- a/src/glut/ggi/Makefile +++ b/src/glut/ggi/Makefile @@ -32,7 +32,7 @@ default: $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME) # Make the library $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS) - $(TOP)/bin/mklib -o $(GLUT_LIB) -linker '$(CC)' \ + $(MKLIB) -o $(GLUT_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ -major $(GLUT_MAJOR) -minor $(GLUT_MINOR) \ -patch $(GLUT_TINY) $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \ $(GLUT_LIB_DEPS) $(OBJECTS) diff --git a/src/glut/glx/Makefile b/src/glut/glx/Makefile index 910c6fa28a4..b61d5b04789 100644 --- a/src/glut/glx/Makefile +++ b/src/glut/glx/Makefile @@ -36,6 +36,7 @@ SOURCES = \ glut_dstr.c \ glut_event.c \ glut_ext.c \ + glut_fcb.c \ glut_fullscrn.c \ glut_gamemode.c \ glut_get.c \ @@ -90,25 +91,38 @@ default: $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME) # Make the library $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS) - $(TOP)/bin/mklib -o $(GLUT_LIB) -linker '$(CC)' \ + $(MKLIB) -o $(GLUT_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ -major $(GLUT_MAJOR) -minor $(GLUT_MINOR) -patch $(GLUT_TINY) \ $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \ + -id $(INSTALL_LIB_DIR)/lib$(GLUT_LIB).$(GLUT_MAJOR).dylib \ $(GLUT_LIB_DEPS) $(OBJECTS) -install: - $(INSTALL) -d $(INSTALL_DIR)/include/GL - $(INSTALL) -d $(INSTALL_DIR)/$(LIB_DIR) - $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(INSTALL_DIR)/include/GL - $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(INSTALL_DIR)/$(LIB_DIR) +# glut pkgconfig file +pcedit = sed \ + -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ + -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ + -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ + -e 's,@VERSION@,$(GLUT_MAJOR).$(GLUT_MINOR).$(GLUT_TINY),' +glut.pc: glut.pc.in + $(pcedit) $< > $@ + +install: glut.pc + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig + $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_INC_DIR)/GL + $(INSTALL) $(TOP)/$(LIB_DIR)/$(GLUT_LIB_GLOB) $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -m 644 glut.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig clean: -rm -f *.o *~ -rm -f *.lo -rm -f *.la + -rm -f *.pc -rm -rf .libs - -rm -rf depend depend.bak + -rm -f depend depend.bak depend: $(SOURCES) @@ -116,6 +130,6 @@ depend: $(SOURCES) @ rm -f depend @ touch depend @ $(MKDEP) $(MKDEP_OPTIONS) -I$(TOP)/include $(SOURCES) \ - > /dev/null + $(X11_INCLUDES) > /dev/null include depend diff --git a/src/glut/glx/Makefile.mgw b/src/glut/glx/Makefile.mgw new file mode 100644 index 00000000000..5e1fde03de2 --- /dev/null +++ b/src/glut/glx/Makefile.mgw @@ -0,0 +1,191 @@ +# Mesa 3-D graphics library +# Version: 5.1 +# +# Copyright (C) 1999-2003 Brian Paul All Rights Reserved. +# +# 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 +# BRIAN PAUL 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. + +# MinGW core makefile v1.4 for Mesa +# +# Copyright (C) 2002 - Daniel Borca +# Email : [email protected] +# Web : http://www.geocities.com/dborca + +# MinGW core-glut makefile updated for Mesa 7.0 +# +# Updated : by Heromyth, on 2007-7-21 +# Email : [email protected] +# Bugs : 1) All the default settings work fine. But the setting X86=1 can't work. +# The others havn't been tested yet. +# 2) The generated DLLs are *not* compatible with the ones built +# with the other compilers like VC8, especially for GLUT. +# 3) Although more tests are needed, it can be used individually! + + +# +# Available options: +# +# Environment variables: +# CFLAGS +# +# GLIDE path to Glide3 SDK; used with FX. +# default = $(TOP)/glide3 +# FX=1 build for 3dfx Glide3. Note that this disables +# compilation of most WMesa code and requires fxMesa. +# As a consequence, you'll need the Win32 Glide3 +# library to build any application. +# default = no +# ICD=1 build the installable client driver interface +# (windows opengl driver interface) +# default = no +# X86=1 optimize for x86 (if possible, use MMX, SSE, 3DNow). +# default = no +# +# Targets: +# all: build GL +# clean: remove object files +# + + + +.PHONY: all clean +.INTERMEDIATE: x86/gen_matypes.exe +.SUFFIXES: .rc .res + +# Set this to the prefix of your build tools, i.e. mingw32- +TOOLS_PREFIX = mingw32- + +TOP = ../../.. + +LIBDIR = $(TOP)/lib + +LIB_NAME = glut32 + +DLL_EXT = .dll +IMP_EXT = .a +LIB_PRE = lib +STRIP = -s + +AR = ar +ARFLAGS = crus +DLLTOOL = dlltool + +GLUT_DLL = $(LIB_NAME)$(DLL_EXT) +GLUT_IMP = $(LIB_PRE)$(LIB_NAME)$(IMP_EXT) +GLUT_DEF = $(LIB_NAME).def + +LDLIBS = -L$(LIBDIR) -lwinmm -lgdi32 -luser32 -lopengl32 -lglu32 +LDFLAGS = $(STRIP) -shared -fPIC -Wl,--kill-at + +CFLAGS += -DBUILD_GLUT32 -DGLUT_BUILDING_LIB -DMESA -D_DLL +CFLAGS += -DNDEBUG -DLIBRARYBUILD -I$(TOP)/include + +CC = $(TOOLS_PREFIX)gcc +CXX = $(TOOLS_PREFIX)g++ +CXXFLAGS = $(CFLAGS) + +AR = ar +ARFLAGS = crus + +UNLINK = del $(subst /,\,$(1)) +ifneq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),) +UNLINK = $(RM) $(1) +endif +ifneq ($(wildcard $(addsuffix /rm,$(subst :, ,$(PATH)))),) +UNLINK = $(RM) $(1) +endif + +HDRS = glutint.h glutstroke.h glutbitmap.h glutwin32.h stroke.h win32_glx.h win32_x11.h + +SRCS = \ + glut_bitmap.c \ + glut_bwidth.c \ + glut_cindex.c \ + glut_cmap.c \ + glut_cursor.c \ + glut_dials.c \ + glut_dstr.c \ + glut_event.c \ + glut_ext.c \ + glut_fcb.c \ + glut_fullscrn.c \ + glut_gamemode.c \ + glut_get.c \ + glut_init.c \ + glut_input.c \ + glut_joy.c \ + glut_key.c \ + glut_keyctrl.c \ + glut_keyup.c \ + glut_mesa.c \ + glut_modifier.c \ + glut_overlay.c \ + glut_shapes.c \ + glut_space.c \ + glut_stroke.c \ + glut_swap.c \ + glut_swidth.c \ + glut_tablet.c \ + glut_teapot.c \ + glut_util.c \ + glut_vidresize.c \ + glut_warp.c \ + glut_win.c \ + glut_winmisc.c \ + win32_glx.c \ + win32_menu.c \ + win32_util.c \ + win32_winproc.c \ + win32_x11.c + + +SRCSSEMIGENS = \ + glut_8x13.c \ + glut_9x15.c \ + glut_hel10.c \ + glut_hel12.c \ + glut_hel18.c \ + glut_mroman.c \ + glut_roman.c \ + glut_tr10.c \ + glut_tr24.c + + + +SOURCES = $(SRCS) $(SRCSSEMIGENS) + +OBJECTS = $(addsuffix .o,$(basename $(SOURCES))) + +.c.o: + $(CC) -o $@ $(CFLAGS) -c $< +.cc.o: + $(CXX) -o $@ $(CXXFLAGS) -c $< + + +all: $(LIBDIR) $(LIBDIR)/$(GLUT_DLL) $(LIBDIR)/$(GLUT_IMP) + +$(LIBDIR): + mkdir -p $(LIBDIR) + +$(LIBDIR)/$(GLUT_DLL) $(LIBDIR)/$(GLUT_IMP): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $(LIBDIR)/$(GLUT_DLL) $^ $(LDLIBS) + $(DLLTOOL) --as=as --dllname $(LIB_NAME) --output-def $(LIBDIR)/$(GLUT_DEF) $^ + $(DLLTOOL) --as=as -k --dllname $(LIB_NAME) --output-lib $(LIBDIR)/$(GLUT_IMP) --def $(LIBDIR)/$(GLUT_DEF) + +clean: + -$(call UNLINK,*.o)
\ No newline at end of file diff --git a/src/glut/glx/SConscript b/src/glut/glx/SConscript new file mode 100644 index 00000000000..99b3bb7df64 --- /dev/null +++ b/src/glut/glx/SConscript @@ -0,0 +1,89 @@ +Import('*') + +env = env.Clone() + +if env['platform'] != 'windows': + Return() + +target = 'glut32' + +env.Replace(CPPDEFINES = [ + 'BUILD_GLUT32', + 'GLUT_BUILDING_LIB', + 'MESA', + '_DLL', + 'NDEBUG', + 'GLUT_NO_WARNING_DISABLE', +]) + +env.AppendUnique(CPPPATH = [ + '#/include', +]) + +env.PrependUnique(LIBS = [ + 'winmm', + 'gdi32', + 'user32', + 'opengl32', + 'glu32', +]) + +sources = [ + 'glut_bitmap.c', + 'glut_bwidth.c', + 'glut_cindex.c', + 'glut_cmap.c', + 'glut_cursor.c', + 'glut_dials.c', + 'glut_dstr.c', + 'glut_event.c', + 'glut_ext.c', + 'glut_fcb.c', + 'glut_fullscrn.c', + 'glut_gamemode.c', + 'glut_get.c', + 'glut_init.c', + 'glut_input.c', + 'glut_joy.c', + 'glut_key.c', + 'glut_keyctrl.c', + 'glut_keyup.c', + 'glut_mesa.c', + 'glut_modifier.c', + 'glut_overlay.c', + 'glut_shapes.c', + 'glut_space.c', + 'glut_stroke.c', + 'glut_swap.c', + 'glut_swidth.c', + 'glut_tablet.c', + 'glut_teapot.c', + 'glut_util.c', + 'glut_vidresize.c', + 'glut_warp.c', + 'glut_win.c', + 'glut_winmisc.c', + + 'win32_glx.c', + 'win32_menu.c', + 'win32_util.c', + 'win32_winproc.c', + 'win32_x11.c', + + 'glut_8x13.c', + 'glut_9x15.c', + 'glut_hel10.c', + 'glut_hel12.c', + 'glut_hel18.c', + 'glut_mroman.c', + 'glut_roman.c', + 'glut_tr10.c', + 'glut_tr24.c', + + 'glut.def', +] + +env.SharedLibrary( + target = target, + source = sources, +) diff --git a/src/glut/glx/glut.pc.in b/src/glut/glx/glut.pc.in new file mode 100644 index 00000000000..e8638fe1488 --- /dev/null +++ b/src/glut/glx/glut.pc.in @@ -0,0 +1,11 @@ +prefix=@INSTALL_DIR@ +exec_prefix=${prefix} +libdir=@INSTALL_LIB_DIR@ +includedir=@INSTALL_INC_DIR@ + +Name: glut +Description: Mesa OpenGL Utility Toolkit library +Requires: gl glu +Version: @VERSION@ +Libs: -L${libdir} -lglut +Cflags: -I${includedir} diff --git a/src/glut/glx/glut_dstr.c b/src/glut/glx/glut_dstr.c index ec9386f3e50..2513af45394 100644 --- a/src/glut/glx/glut_dstr.c +++ b/src/glut/glx/glut_dstr.c @@ -291,6 +291,7 @@ loadVisuals(int *nitems_return) fbmodes = (FrameBufferMode *) malloc(n * sizeof(FrameBufferMode)); if (fbmodes == NULL) { *nitems_return = -1; + free(vlist); return NULL; } for (i = 0; i < n; i++) { diff --git a/src/glut/glx/glut_event.c b/src/glut/glx/glut_event.c index 443f9a85740..cf34e05ca98 100644 --- a/src/glut/glx/glut_event.c +++ b/src/glut/glx/glut_event.c @@ -24,7 +24,7 @@ # ifdef __sgi # include <bstring.h> /* prototype for bzero used by FD_ZERO */ # endif -# if (defined(SVR4) || defined(CRAY) || defined(AIXV3)) && !defined(FD_SETSIZE) +# if (defined(__FreeBSD__) || defined(SVR4) || defined(CRAY) || defined(AIXV3)) && !defined(FD_SETSIZE) # include <sys/select.h> /* select system call interface */ # ifdef luna # include <sysent.h> @@ -172,10 +172,14 @@ handleTimeouts(void) GETTIMEOFDAY(&now); while (IS_AT_OR_AFTER(__glutTimerList->timeout, now)) { timer = __glutTimerList; - __glutTimerList = timer->next; + /* call the timer function */ timer->func(timer->value); + /* remove from the linked list */ + __glutTimerList = timer->next; + /* put this timer on the "free" list */ timer->next = freeTimerList; freeTimerList = timer; + if (!__glutTimerList) break; } diff --git a/src/glut/glx/glut_fbc.c b/src/glut/glx/glut_fcb.c index e93188b8622..c8a3422b360 100644 --- a/src/glut/glx/glut_fbc.c +++ b/src/glut/glx/glut_fcb.c @@ -19,7 +19,7 @@ /* Set a Fortran callback function. */ void APIENTRY -__glutSetFCB(int which, void *func) +__glutSetFCB(int which, GLUTproc func) { #ifdef SUPPORT_FORTRAN switch (which) { @@ -100,61 +100,61 @@ __glutSetFCB(int which, void *func) /* Get a Fortran callback function. */ -void* APIENTRY +GLUTproc APIENTRY __glutGetFCB(int which) { #ifdef SUPPORT_FORTRAN switch (which) { case GLUT_FCB_DISPLAY: - return (void *) __glutCurrentWindow->fdisplay; + return __glutCurrentWindow->fdisplay; case GLUT_FCB_RESHAPE: - return (void *) __glutCurrentWindow->freshape; + return __glutCurrentWindow->freshape; case GLUT_FCB_MOUSE: - return (void *) __glutCurrentWindow->fmouse; + return __glutCurrentWindow->fmouse; case GLUT_FCB_MOTION: - return (void *) __glutCurrentWindow->fmotion; + return __glutCurrentWindow->fmotion; case GLUT_FCB_PASSIVE: - return (void *) __glutCurrentWindow->fpassive; + return __glutCurrentWindow->fpassive; case GLUT_FCB_ENTRY: - return (void *) __glutCurrentWindow->fentry; + return __glutCurrentWindow->fentry; case GLUT_FCB_KEYBOARD: - return (void *) __glutCurrentWindow->fkeyboard; + return __glutCurrentWindow->fkeyboard; case GLUT_FCB_KEYBOARD_UP: - return (void *) __glutCurrentWindow->fkeyboardUp; + return __glutCurrentWindow->fkeyboardUp; case GLUT_FCB_WINDOW_STATUS: - return (void *) __glutCurrentWindow->fwindowStatus; + return __glutCurrentWindow->fwindowStatus; case GLUT_FCB_VISIBILITY: - return (void *) __glutCurrentWindow->fvisibility; + return __glutCurrentWindow->fvisibility; case GLUT_FCB_SPECIAL: - return (void *) __glutCurrentWindow->fspecial; + return __glutCurrentWindow->fspecial; case GLUT_FCB_SPECIAL_UP: - return (void *) __glutCurrentWindow->fspecialUp; + return __glutCurrentWindow->fspecialUp; case GLUT_FCB_BUTTON_BOX: - return (void *) __glutCurrentWindow->fbuttonBox; + return __glutCurrentWindow->fbuttonBox; case GLUT_FCB_DIALS: - return (void *) __glutCurrentWindow->fdials; + return __glutCurrentWindow->fdials; case GLUT_FCB_SPACE_MOTION: - return (void *) __glutCurrentWindow->fspaceMotion; + return __glutCurrentWindow->fspaceMotion; case GLUT_FCB_SPACE_ROTATE: - return (void *) __glutCurrentWindow->fspaceRotate; + return __glutCurrentWindow->fspaceRotate; case GLUT_FCB_SPACE_BUTTON: - return (void *) __glutCurrentWindow->fspaceButton; + return __glutCurrentWindow->fspaceButton; case GLUT_FCB_TABLET_MOTION: - return (void *) __glutCurrentWindow->ftabletMotion; + return __glutCurrentWindow->ftabletMotion; case GLUT_FCB_TABLET_BUTTON: - return (void *) __glutCurrentWindow->ftabletButton; + return __glutCurrentWindow->ftabletButton; case GLUT_FCB_JOYSTICK: #ifdef _WIN32 - return (void *) __glutCurrentWindow->fjoystick; + return __glutCurrentWindow->fjoystick; #else return NULL; #endif case GLUT_FCB_OVERLAY_DISPLAY: - return (void *) __glutCurrentWindow->overlay->fdisplay; + return __glutCurrentWindow->overlay->fdisplay; case GLUT_FCB_SELECT: - return (void *) __glutCurrentMenu->fselect; + return __glutCurrentMenu->fselect; case GLUT_FCB_TIMER: - return (void *) __glutTimerList->ffunc; + return __glutTimerList ? __glutTimerList->ffunc : NULL; default: return NULL; } diff --git a/src/glut/glx/glutint.h b/src/glut/glx/glutint.h index a962c780238..de506a5932d 100644 --- a/src/glut/glx/glutint.h +++ b/src/glut/glx/glutint.h @@ -33,7 +33,7 @@ #include <GL/glut.h> #if defined(MESA) && defined(_WIN32) && !defined(__CYGWIN32__) -#include <gl/mesa_wgl.h> +#include <GL/mesa_wgl.h> #endif #ifndef _WIN32 diff --git a/src/glut/glx/glutstroke.h b/src/glut/glx/glutstroke.h index cbc9e156fea..74b60314aa2 100644 --- a/src/glut/glx/glutstroke.h +++ b/src/glut/glx/glutstroke.h @@ -7,7 +7,7 @@ and is provided without guarantee or warrantee expressed or implied. This program is -not- in the public domain. */ -#if defined(_WIN32) +#if defined(_MSC_VER) #pragma warning (disable:4244) /* disable bogus conversion warnings */ #pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ #endif diff --git a/src/glut/glx/glutwin32.h b/src/glut/glx/glutwin32.h index 304eeb20a22..01db99fad6d 100644 --- a/src/glut/glx/glutwin32.h +++ b/src/glut/glx/glutwin32.h @@ -41,6 +41,7 @@ /* Private routines from win32_util.c */ #ifndef __CYGWIN32__ +struct timeval; extern int gettimeofday(struct timeval* tp, void* tzp); #endif extern void *__glutFont(void *font); diff --git a/src/glut/glx/win32_x11.h b/src/glut/glx/win32_x11.h index 6f5c3a9aeaf..daf065e27b8 100644 --- a/src/glut/glx/win32_x11.h +++ b/src/glut/glx/win32_x11.h @@ -228,7 +228,7 @@ typedef struct { SetWindowPos(window, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE) #define XSetWMName(display, window, tp) \ - SetWindowText(window, (tp)->value) + SetWindowText(window, (const char *)(tp)->value) /* There really isn't a way to set the icon name separate from the windows name in Win32, so, just set the windows name. */ diff --git a/src/glut/mini/Makefile b/src/glut/mini/Makefile index 980306d0e28..7e7afc35337 100644 --- a/src/glut/mini/Makefile +++ b/src/glut/mini/Makefile @@ -55,7 +55,7 @@ default: depend $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME) # Make the library $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS) - $(TOP)/bin/mklib -o $(GLUT_LIB) -linker '$(CC)' \ + $(MKLIB) -o $(GLUT_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ -major $(GLUT_MAJOR) -minor $(GLUT_MINOR) -patch $(GLUT_TINY) \ $(GLUT_LIB_DEPS) -install $(TOP)/$(LIB_DIR) \ $(MKLIB_OPTIONS) $(OBJECTS) @@ -73,9 +73,27 @@ tags: etags `find . -name \*.[ch]` `find ../include` +# glut pkgconfig file +pcedit = sed \ + -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ + -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ + -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ + -e 's,@VERSION@,$(GLUT_MAJOR).$(GLUT_MINOR).$(GLUT_TINY),' +glut.pc: glut.pc.in + $(pcedit) $< > $@ + +install: glut.pc + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig + $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_INC_DIR)/GL + $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -m 644 glut.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig + + # Remove .o and backup files clean: depend - -rm -f depend - -rm -f *.o *~ *.o *~ *.so libglut.so.3.7 + -rm -f depend depend.bak + -rm -f *.o *~ *.o *~ *.so *.pc libglut.so.3.7 include depend diff --git a/src/glut/mini/glut.pc.in b/src/glut/mini/glut.pc.in new file mode 100644 index 00000000000..e8638fe1488 --- /dev/null +++ b/src/glut/mini/glut.pc.in @@ -0,0 +1,11 @@ +prefix=@INSTALL_DIR@ +exec_prefix=${prefix} +libdir=@INSTALL_LIB_DIR@ +includedir=@INSTALL_INC_DIR@ + +Name: glut +Description: Mesa OpenGL Utility Toolkit library +Requires: gl glu +Version: @VERSION@ +Libs: -L${libdir} -lglut +Cflags: -I${includedir} |