git: 70bc78cfbd12 - main - graphics/freeglut: Update to 3.8.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 08 Sep 2026 18:34:04 UTC
The branch main has been updated by arrowd:
URL: https://cgit.FreeBSD.org/ports/commit/?id=70bc78cfbd12aabb9163d8743ac579477cd9205e
commit 70bc78cfbd12aabb9163d8743ac579477cd9205e
Author: Gleb Popov <arrowd@FreeBSD.org>
AuthorDate: 2026-09-08 17:12:28 +0000
Commit: Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2026-09-08 18:32:02 +0000
graphics/freeglut: Update to 3.8.0
---
graphics/freeglut/Makefile | 8 +-
graphics/freeglut/distinfo | 6 +-
graphics/freeglut/files/patch-b9998bb.c | 50 ---
graphics/freeglut/files/patch-src_fg__internal.h | 10 -
.../files/patch-src_x11_fg__internal__x11.h | 85 -----
.../files/patch-src_x11_fg__joystick__x11.c | 403 ---------------------
graphics/freeglut/pkg-plist | 99 ++++-
7 files changed, 95 insertions(+), 566 deletions(-)
diff --git a/graphics/freeglut/Makefile b/graphics/freeglut/Makefile
index 6cec3a606cfa..87d080629d47 100644
--- a/graphics/freeglut/Makefile
+++ b/graphics/freeglut/Makefile
@@ -1,5 +1,5 @@
PORTNAME= freeglut
-PORTVERSION= 3.2.1
+PORTVERSION= 3.8.0
CATEGORIES= graphics
MASTER_SITES= SF
@@ -16,10 +16,8 @@ USE_XORG= ice x11 xi xrandr xxf86vm
USE_GL= gl glu
LDFLAGS+= -lusbhid -lm
-DOCS= download.html freeglut.html freeglut_logo.png \
- freeglut_user_interface.html index.html ogl_sm.png \
- progress.html structure.html
-BINS= CallbackMaker Fractals Fractals_random Lorenz One Resizer \
+DOCS= api.md
+BINS= CallbackMaker Fractals Fractals_random Lorenz One \
multi-touch shapes smooth_opengl3 spaceball subwin timer
OPTIONS_DEFINE= DOCS EXAMPLES
diff --git a/graphics/freeglut/distinfo b/graphics/freeglut/distinfo
index 3e2f66098b02..d38cd42ef71f 100644
--- a/graphics/freeglut/distinfo
+++ b/graphics/freeglut/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1616308723
-SHA256 (freeglut-3.2.1.tar.gz) = d4000e02102acaf259998c870e25214739d1f16f67f99cb35e4f46841399da68
-SIZE (freeglut-3.2.1.tar.gz) = 440228
+TIMESTAMP = 1788885995
+SHA256 (freeglut-3.8.0.tar.gz) = 674dcaff25010e09e450aec458b8870d9e98c46f99538db457ab659b321d9989
+SIZE (freeglut-3.8.0.tar.gz) = 538754
diff --git a/graphics/freeglut/files/patch-b9998bb.c b/graphics/freeglut/files/patch-b9998bb.c
deleted file mode 100644
index 7846bf2cc1df..000000000000
--- a/graphics/freeglut/files/patch-b9998bb.c
+++ /dev/null
@@ -1,50 +0,0 @@
-diff --git a/freeglut/freeglut/src/fg_gl2.c b/freeglut/freeglut/src/fg_gl2.c
-index 38b0acbb..54b4285b 100644
---- src/fg_gl2.c
-+++ src/fg_gl2.c
-@@ -27,6 +27,20 @@
- #include "fg_internal.h"
- #include "fg_gl2.h"
-
-+#ifndef GL_ES_VERSION_2_0
-+/* GLES2 has the corresponding entry points built-in, and these fgh-prefixed
-+ * names are defined in fg_gl2.h header to reference them, for any other case,
-+ * define them as function pointers here.
-+ */
-+FGH_PFNGLGENBUFFERSPROC fghGenBuffers;
-+FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers;
-+FGH_PFNGLBINDBUFFERPROC fghBindBuffer;
-+FGH_PFNGLBUFFERDATAPROC fghBufferData;
-+FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray;
-+FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray;
-+FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer;
-+#endif
-+
- void FGAPIENTRY glutSetVertexAttribCoord3(GLint attrib) {
- if (fgStructure.CurrentWindow != NULL)
- fgStructure.CurrentWindow->Window.attribute_v_coord = attrib;
-diff --git a/freeglut/freeglut/src/fg_gl2.h b/freeglut/freeglut/src/fg_gl2.h
-index ab8ba5c7..fb3d4676 100644
---- src/fg_gl2.h
-+++ src/fg_gl2.h
-@@ -67,13 +67,13 @@ typedef void (APIENTRY *FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
- typedef void (APIENTRY *FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint);
- typedef void (APIENTRY *FGH_PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
-
--FGH_PFNGLGENBUFFERSPROC fghGenBuffers;
--FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers;
--FGH_PFNGLBINDBUFFERPROC fghBindBuffer;
--FGH_PFNGLBUFFERDATAPROC fghBufferData;
--FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray;
--FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray;
--FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer;
-+extern FGH_PFNGLGENBUFFERSPROC fghGenBuffers;
-+extern FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers;
-+extern FGH_PFNGLBINDBUFFERPROC fghBindBuffer;
-+extern FGH_PFNGLBUFFERDATAPROC fghBufferData;
-+extern FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray;
-+extern FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray;
-+extern FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer;
-
- # endif
-
diff --git a/graphics/freeglut/files/patch-src_fg__internal.h b/graphics/freeglut/files/patch-src_fg__internal.h
deleted file mode 100644
index ddfe3b90b866..000000000000
--- a/graphics/freeglut/files/patch-src_fg__internal.h
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/fg_internal.h.orig 2014-12-22 16:27:02 UTC
-+++ src/fg_internal.h
-@@ -967,6 +967,7 @@ int fgJoystickDetect( void );
- void fgInitialiseJoysticks( void );
- void fgJoystickClose( void );
- void fgJoystickPollWindow( SFG_Window* window );
-+void fgJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes );
-
- /* InputDevice Initialisation and Closure */
- int fgInputDeviceDetect( void );
diff --git a/graphics/freeglut/files/patch-src_x11_fg__internal__x11.h b/graphics/freeglut/files/patch-src_x11_fg__internal__x11.h
deleted file mode 100644
index bae5f3272bf9..000000000000
--- a/graphics/freeglut/files/patch-src_x11_fg__internal__x11.h
+++ /dev/null
@@ -1,85 +0,0 @@
---- src/x11/fg_internal_x11.h.orig 2014-10-20 15:27:04 UTC
-+++ src/x11/fg_internal_x11.h
-@@ -136,11 +136,50 @@ struct tagSFG_PlatformWindowState
- #include <string.h>
-
- # if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
-+
-+static int hatmap_x[9] = { 0, 0, 1, 1, 1, 0, -1, -1, -1 };
-+static int hatmap_y[9] = { 0, 1, 1, 0, -1, -1, -1, 0, 1 };
-+
-+/* Idents lower than USB_IDENT_OFFSET are for analog joysticks. */
-+# define USB_IDENT_OFFSET 2
-+
-+# define USBDEV "/dev/usb"
-+# define UHIDDEV "/dev/uhid"
-+# define AJSDEV "/dev/joy"
-+
- /* XXX The below hack is done until freeglut's autoconf is updated. */
- # define HAVE_USB_JS 1
-+# if defined(__NetBSD__)
-+/* XXX The below hack is done until freeglut's autoconf is updated. */
-+# define HAVE_USBHID_H 1
-+# ifdef HAVE_USBHID_H
-+# include <usbhid.h>
-+# else
-+# include <usb.h>
-+# endif
-+# elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-+# ifdef HAVE_USBHID_H
-+# include <usbhid.h>
-+# else
-+# include <libusbhid.h>
-+# endif
-+# include <dev/usb/usb_ioctl.h>
-+# endif
-+# include <dev/usb/usb.h>
-+# include <dev/usb/usbhid.h>
-
-+/* Compatibility with older usb.h revisions */
-+# if !defined(USB_MAX_DEVNAMES) && defined(MAXDEVNAMES)
-+# define USB_MAX_DEVNAMES MAXDEVNAMES
-+# endif
-+
- # if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
--# include <sys/joystick.h>
-+struct joystick {
-+ int x;
-+ int y;
-+ int b1;
-+ int b2;
-+};
- # else
- /*
- * XXX NetBSD/amd64 systems may find that they have to steal the
-@@ -189,6 +228,30 @@ struct tagSFG_PlatformWindowState
- */
- # define _JS_MAX_AXES 16
- typedef struct tagSFG_PlatformJoystick SFG_PlatformJoystick;
-+
-+# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
-+struct os_specific_s {
-+ char fname [128 ];
-+ int fd;
-+ int is_analog;
-+ /* The following structure members are specific to analog joysticks */
-+ struct joystick ajs;
-+# ifdef HAVE_USB_JS
-+ /* The following structure members are specific to USB joysticks */
-+ struct hid_item *hids;
-+ int hid_dlen;
-+ int hid_offset;
-+ char *hid_data_buf;
-+ int axes_usage [ _JS_MAX_AXES ];
-+# endif
-+ /* We keep button and axes state ourselves, as they might not be updated
-+ * on every read of a USB device
-+ */
-+ int cache_buttons;
-+ float cache_axes [ _JS_MAX_AXES ];
-+};
-+# endif
-+
- struct tagSFG_PlatformJoystick
- {
- # if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
diff --git a/graphics/freeglut/files/patch-src_x11_fg__joystick__x11.c b/graphics/freeglut/files/patch-src_x11_fg__joystick__x11.c
deleted file mode 100644
index 4479c1675715..000000000000
--- a/graphics/freeglut/files/patch-src_x11_fg__joystick__x11.c
+++ /dev/null
@@ -1,403 +0,0 @@
---- src/x11/fg_joystick_x11.c.orig 2021-03-21 08:11:11 UTC
-+++ src/x11/fg_joystick_x11.c
-@@ -41,196 +41,135 @@
-
- #include <fcntl.h>
-
-+/*this should be defined in a header file */
-+#define MAX_NUM_JOYSTICKS 2
-
--/* BSD defines from "jsBSD.cxx" around lines 42-270 */
--
- #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
--
--# ifdef HAVE_USB_JS
--# if defined(__NetBSD__)
--# ifdef HAVE_USBHID_H
--# include <usbhid.h>
--# else
--# include <usb.h>
--# endif
--# include <dev/usb/usb.h>
--# elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
--# ifdef HAVE_USBHID_H
--# include <usbhid.h>
--# else
--# include <libusbhid.h>
--# endif
--# include <legacy/dev/usb/usb.h>
--# endif
--# include <dev/usb/usbhid.h>
--
--/* Compatibility with older usb.h revisions */
--# if !defined(USB_MAX_DEVNAMES) && defined(MAXDEVNAMES)
--# define USB_MAX_DEVNAMES MAXDEVNAMES
--# endif
--# endif
--
--struct os_specific_s {
-- char fname [128 ];
-- int fd;
-- int is_analog;
-- /* The following structure members are specific to analog joysticks */
-- struct joystick ajs;
--# ifdef HAVE_USB_JS
-- /* The following structure members are specific to USB joysticks */
-- struct hid_item *hids;
-- int hid_dlen;
-- int hid_offset;
-- char *hid_data_buf;
-- int axes_usage [ _JS_MAX_AXES ];
--# endif
-- /* We keep button and axes state ourselves, as they might not be updated
-- * on every read of a USB device
-- */
-- int cache_buttons;
-- float cache_axes [ _JS_MAX_AXES ];
--};
--
--/* Idents lower than USB_IDENT_OFFSET are for analog joysticks. */
--# define USB_IDENT_OFFSET 2
--
--# define USBDEV "/dev/usb"
--# define UHIDDEV "/dev/uhid"
--# define AJSDEV "/dev/joy"
--
--
--#endif
--
--#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
--
--#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
--static int hatmap_x[9] = {0, 0, 1, 1, 1, 0, -1, -1, -1};
--static int hatmap_y[9] = {0, 1, 1, 0, -1, -1, -1, 0, 1};
--
--# ifdef HAVE_USB_JS
-+# ifdef HAVE_USB_JS
- /*
--* fghJoystickFindUSBdev (and its helper, fghJoystickWalkUSBdev) try to locate
--* the full name of a USB device. If /dev/usbN isn't readable, we punt and
--* return the uhidN device name. We warn the user of this situation once.
--*/
-+ * fghJoystickFindUSBdev (and its helper, fghJoystickWalkUSBdev) try to locate
-+ * the full name of a USB device. If /dev/usbN isn't readable, we punt and
-+ * return the uhidN device name. We warn the user of this situation once.
-+ */
- static char *fghJoystickWalkUSBdev(int f, char *dev, char *out, int outlen)
- {
-- struct usb_device_info di;
-- int i, a;
-- char *cp;
-+#if __FreeBSD_version < 800061
-+ struct usb_device_info di;
-+ int i, a;
-+ char *cp;
-
-- for (a = 1; a < USB_MAX_DEVICES; a++) {
-- di.udi_addr = a;
-- if (ioctl(f, USB_DEVICEINFO, &di) != 0)
-- return NULL;
-- for (i = 0; i < USB_MAX_DEVNAMES; i++)
-- if (di.udi_devnames[i][0] &&
-- strcmp(di.udi_devnames[i], dev) == 0) {
-- cp = calloc(1, strlen(di.udi_vendor) + strlen(di.udi_product) + 2);
-- strcpy(cp, di.udi_vendor);
-- strcat(cp, " ");
-- strcat(cp, di.udi_product);
-- strncpy(out, cp, outlen - 1);
-- out[outlen - 1] = 0;
-- free(cp);
-- return out;
-- }
-- }
-- return NULL;
-+ for (a = 1; a < USB_MAX_DEVICES; a++) {
-+ di.udi_addr = a;
-+ if (ioctl(f, USB_DEVICEINFO, &di) != 0)
-+ return NULL;
-+ for (i = 0; i < USB_MAX_DEVNAMES; i++)
-+ if (di.udi_devnames[i][0] &&
-+ strcmp(di.udi_devnames[i], dev) == 0) {
-+ cp = calloc( 1, strlen(di.udi_vendor) + strlen(di.udi_product) + 2);
-+ strcpy(cp, di.udi_vendor);
-+ strcat(cp, " ");
-+ strcat(cp, di.udi_product);
-+ strncpy(out, cp, outlen - 1);
-+ out[outlen - 1] = 0;
-+ free( cp );
-+ return out;
-+ }
-+ }
-+#endif
-+ return NULL;
- }
-
- static int fghJoystickFindUSBdev(char *name, char *out, int outlen)
- {
-- int i, f;
-- char buf[50];
-- char *cp;
-- static int protection_warned = 0;
-+ int i, f;
-+ char buf[50];
-+ char *cp;
-+ static int protection_warned = 0;
-
-- for (i = 0; i < 16; i++) {
-- snprintf(buf, sizeof(buf), "%s%d", USBDEV, i);
-- f = open(buf, O_RDONLY);
-- if (f >= 0) {
-- cp = fghJoystickWalkUSBdev(f, name, out, outlen);
-- close(f);
-- if (cp)
-- return 1;
-- }
-- else if (errno == EACCES) {
-- if (!protection_warned) {
-- fgWarning("Can't open %s for read!", buf);
-- protection_warned = 1;
-- }
-- }
-+ for (i = 0; i < 16; i++) {
-+ snprintf(buf, sizeof(buf), "%s%d", USBDEV, i);
-+ f = open(buf, O_RDONLY);
-+ if (f >= 0) {
-+ cp = fghJoystickWalkUSBdev(f, name, out, outlen);
-+ close(f);
-+ if (cp)
-+ return 1;
- }
-- return 0;
-+ else if (errno == EACCES) {
-+ if (!protection_warned) {
-+ fgWarning ( "Can't open %s for read!", buf );
-+ protection_warned = 1;
-+ }
-+ }
-+ }
-+ return 0;
- }
--#endif
-
- static int fghJoystickInitializeHID(struct os_specific_s *os,
-- int *num_axes, int *num_buttons)
-+ int *num_axes, int *num_buttons)
- {
- int size, is_joystick;
- # ifdef HAVE_USBHID_H
-- int report_id = 0;
-+ int report_id = 0;
- # endif
- struct hid_data *d;
- struct hid_item h;
- report_desc_t rd;
-
-- if ((rd = hid_get_report_desc(os->fd)) == 0)
-+ if ( ( rd = hid_get_report_desc( os->fd ) ) == 0 )
- {
-- fgWarning("error: %s: %s", os->fname, strerror(errno));
-+ fgWarning ( "error: %s: %s", os->fname, strerror( errno ) );
- return FALSE;
- }
-
- os->hids = NULL;
-
- # ifdef HAVE_USBHID_H
-- if (ioctl(os->fd, USB_GET_REPORT_ID, &report_id) < 0)
-- {
-- /*** XXX {report_id} may not be the right variable? ***/
-- fgWarning("error: %s%d: %s", UHIDDEV, report_id, strerror(errno));
-- return FALSE;
-- }
-+ if( ioctl( os->fd, USB_GET_REPORT_ID, &report_id ) < 0)
-+ {
-+ /*** XXX {report_id} may not be the right variable? ***/
-+ fgWarning ( "error: %s%d: %s", UHIDDEV, report_id, strerror( errno ) );
-+ return FALSE;
-+ }
-
-- size = hid_report_size(rd, hid_input, report_id);
-+ size = hid_report_size( rd, hid_input, report_id );
- # else
-- size = hid_report_size(rd, 0, hid_input);
-+ size = hid_report_size( rd, 0, hid_input );
- # endif
-- os->hid_data_buf = calloc(1, size);
-+ os->hid_data_buf = calloc( 1, size );
- os->hid_dlen = size;
-
- is_joystick = 0;
- # ifdef HAVE_USBHID_H
-- d = hid_start_parse(rd, 1 << hid_input, report_id);
-+ d = hid_start_parse( rd, 1 << hid_input, report_id );
- # else
-- d = hid_start_parse(rd, 1 << hid_input);
-+ d = hid_start_parse( rd, 1 << hid_input );
- # endif
-- while (hid_get_item(d, &h))
-- {
-- int usage, page, interesting_hid;
-+ while( hid_get_item( d, &h ) )
-+ {
-+ int usage, page, interesting_hid;
-
-- page = HID_PAGE(h.usage);
-- usage = HID_USAGE(h.usage);
-+ page = HID_PAGE( h.usage );
-+ usage = HID_USAGE( h.usage );
-
-- /* This test is somewhat too simplistic, but this is how MicroSoft
-- * does, so I guess it works for all joysticks/game pads. */
-- is_joystick = is_joystick ||
-- (h.kind == hid_collection &&
-- page == HUP_GENERIC_DESKTOP &&
-- (usage == HUG_JOYSTICK || usage == HUG_GAME_PAD));
-+ /* This test is somewhat too simplistic, but this is how MicroSoft
-+ * does, so I guess it works for all joysticks/game pads. */
-+ is_joystick = is_joystick ||
-+ ( h.kind == hid_collection &&
-+ page == HUP_GENERIC_DESKTOP &&
-+ ( usage == HUG_JOYSTICK || usage == HUG_GAME_PAD ) );
-
-- if (h.kind != hid_input)
-- continue;
-+ if( h.kind != hid_input )
-+ continue;
-
-- if (!is_joystick)
-- continue;
-+ if( !is_joystick )
-+ continue;
-
-- interesting_hid = TRUE;
-- if (page == HUP_GENERIC_DESKTOP)
-- {
-- switch (usage)
-+ interesting_hid = TRUE;
-+ if( page == HUP_GENERIC_DESKTOP )
- {
-+ switch( usage )
-+ {
- case HUG_X:
- case HUG_RX:
- case HUG_Y:
-@@ -238,53 +177,51 @@ static int fghJoystickInitializeHID(struct os_specific
- case HUG_Z:
- case HUG_RZ:
- case HUG_SLIDER:
-- if (*num_axes < _JS_MAX_AXES)
-+ if( *num_axes < _JS_MAX_AXES )
- {
-- os->axes_usage[*num_axes] = usage;
-- (*num_axes)++;
-+ os->axes_usage[ *num_axes ] = usage;
-+ ( *num_axes )++;
- }
- break;
- case HUG_HAT_SWITCH:
- /* Allocate two axes for a hat */
-- if (*num_axes + 1 < _JS_MAX_AXES)
-+ if( *num_axes + 1 < _JS_MAX_AXES )
- {
-- os->axes_usage[*num_axes] = usage;
-+ os->axes_usage[ *num_axes ] = usage;
- (*num_axes)++;
-- os->axes_usage[*num_axes] = usage;
-+ os->axes_usage[ *num_axes ] = usage;
- (*num_axes)++;
- }
- break;
- default:
- interesting_hid = FALSE;
- break;
-+ }
- }
-- }
-- else if (page == HUP_BUTTON)
-- {
-- interesting_hid = (usage > 0) &&
-- (usage <= _JS_MAX_BUTTONS);
-+ else if( page == HUP_BUTTON )
-+ {
-+ interesting_hid = ( usage > 0 ) &&
-+ ( usage <= _JS_MAX_BUTTONS );
-
-- if (interesting_hid && usage - 1 > *num_buttons)
-- *num_buttons = usage - 1;
-- }
-+ if( interesting_hid && usage - 1 > *num_buttons )
-+ *num_buttons = usage - 1;
-+ }
-
-- if (interesting_hid)
-- {
-- h.next = os->hids;
-- os->hids = calloc(1, sizeof(struct hid_item));
-- *os->hids = h;
-+ if( interesting_hid )
-+ {
-+ h.next = os->hids;
-+ os->hids = calloc( 1, sizeof ( struct hid_item ) );
-+ *os->hids = h;
-+ }
- }
-- }
-- hid_end_parse(d);
-+ hid_end_parse( d );
-
-- return os->hids != NULL;
-+ return os->hids != NULL;
- }
--# endif
--#endif
-+# endif /* HAVE_USB_JS */
-+#endif /* FreeBSD or NetBSD */
-
-
--/*this should be defined in a header file */
--#define MAX_NUM_JOYSTICKS 2
- extern SFG_Joystick *fgJoystick [ MAX_NUM_JOYSTICKS ];
-
- void fgPlatformJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
-@@ -500,7 +437,7 @@ void fgPlatformJoystickOpen( SFG_Joystick* joy )
- joy->num_axes = 2;
- joy->num_buttons = 32;
-
-- fghJoystickRawRead( joy, buttons, axes );
-+ fgJoystickRawRead( joy, buttons, axes );
- joy->error = axes[ 0 ] < -1000000000.0f;
- if( joy->error )
- return;
-@@ -620,7 +557,7 @@ void fgPlatformJoystickOpen( SFG_Joystick* joy )
-
- do
- {
-- fghJoystickRawRead( joy, NULL, joy->center );
-+ fgJoystickRawRead( joy, NULL, joy->center );
- counter++;
- } while( !joy->error &&
- counter < 100 &&
-@@ -647,6 +584,23 @@ void fgPlatformJoystickOpen( SFG_Joystick* joy )
- #endif
- }
-
-+void fgJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
-+{
-+ int i;
-+
-+ /* Defaults */
-+ if( buttons )
-+ *buttons = 0;
-+
-+ if( axes )
-+ for( i = 0; i < joy->num_axes; i++ )
-+ axes[ i ] = 1500.0f;
-+
-+ if( joy->error )
-+ return;
-+
-+ fgPlatformJoystickRawRead ( joy, buttons, axes );
-+}
-
- void fgPlatformJoystickInit( SFG_Joystick *fgJoystick[], int ident )
- {
diff --git a/graphics/freeglut/pkg-plist b/graphics/freeglut/pkg-plist
index 0ff52f8015d2..45e728cf4627 100644
--- a/graphics/freeglut/pkg-plist
+++ b/graphics/freeglut/pkg-plist
@@ -10,14 +10,14 @@ lib/cmake/FreeGLUT/FreeGLUTTargets.cmake
lib/libglut.a
lib/libglut.so
lib/libglut.so.3
-lib/libglut.so.3.11.0
+lib/libglut.so.3.13.0
libdata/pkgconfig/glut.pc
+%%PORTDOCS%%%%DOCSDIR%%/api.md
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/CallbackMaker
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/Fractals
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/Fractals_random
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/Lorenz
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/One
-%%PORTEXAMPLES%%%%EXAMPLESDIR%%/Resizer
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fractals.dat
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/multi-touch
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/shapes
@@ -25,11 +25,90 @@ libdata/pkgconfig/glut.pc
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/spaceball
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/subwin
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/timer
-%%PORTDOCS%%%%DOCSDIR%%/download.html
-%%PORTDOCS%%%%DOCSDIR%%/freeglut.html
-%%PORTDOCS%%%%DOCSDIR%%/freeglut_logo.png
-%%PORTDOCS%%%%DOCSDIR%%/freeglut_user_interface.html
-%%PORTDOCS%%%%DOCSDIR%%/index.html
-%%PORTDOCS%%%%DOCSDIR%%/ogl_sm.png
-%%PORTDOCS%%%%DOCSDIR%%/progress.html
-%%PORTDOCS%%%%DOCSDIR%%/structure.html
+share/man/man3/glut.3.gz
+share/man/man3/glutAddMenuEntry.3.gz
+share/man/man3/glutAddSubMenu.3.gz
+share/man/man3/glutAttachMenu.3.gz
+share/man/man3/glutBitmapCharacter.3.gz
+share/man/man3/glutBitmapWidth.3.gz
+share/man/man3/glutButtonBoxFunc.3.gz
+share/man/man3/glutChangeToMenuEntry.3.gz
+share/man/man3/glutChangeToSubMenu.3.gz
+share/man/man3/glutCopyColormap.3.gz
+share/man/man3/glutCreateMenu.3.gz
+share/man/man3/glutCreateSubWindow.3.gz
+share/man/man3/glutCreateWindow.3.gz
+share/man/man3/glutDestroyMenu.3.gz
+share/man/man3/glutDestroyWindow.3.gz
+share/man/man3/glutDeviceGet.3.gz
+share/man/man3/glutDialsFunc.3.gz
+share/man/man3/glutDisplayFunc.3.gz
+share/man/man3/glutEnterGameMode.3.gz
+share/man/man3/glutEntryFunc.3.gz
+share/man/man3/glutEstablishOverlay.3.gz
+share/man/man3/glutExtensionSupported.3.gz
+share/man/man3/glutForceJoystickFunc.3.gz
+share/man/man3/glutFullScreen.3.gz
+share/man/man3/glutGameModeGet.3.gz
+share/man/man3/glutGameModeString.3.gz
+share/man/man3/glutGet.3.gz
+share/man/man3/glutGetColor.3.gz
+share/man/man3/glutGetModifiers.3.gz
+share/man/man3/glutIdleFunc.3.gz
+share/man/man3/glutIgnoreKeyRepeat.3.gz
+share/man/man3/glutInit.3.gz
+share/man/man3/glutInitDisplayMode.3.gz
+share/man/man3/glutInitDisplayString.3.gz
+share/man/man3/glutInitWindowPosition.3.gz
+share/man/man3/glutJoystickFunc.3.gz
+share/man/man3/glutKeyboardFunc.3.gz
+share/man/man3/glutKeyboardUpFunc.3.gz
+share/man/man3/glutLayerGet.3.gz
+share/man/man3/glutMainLoop.3.gz
+share/man/man3/glutMenuStatusFunc.3.gz
+share/man/man3/glutMotionFunc.3.gz
+share/man/man3/glutMouseFunc.3.gz
+share/man/man3/glutOverlayDisplayFunc.3.gz
+share/man/man3/glutPopWindow.3.gz
+share/man/man3/glutPositionWindow.3.gz
+share/man/man3/glutPostOverlayRedisplay.3.gz
+share/man/man3/glutPostRedisplay.3.gz
+share/man/man3/glutRemoveMenuItem.3.gz
+share/man/man3/glutRemoveOverlay.3.gz
+share/man/man3/glutReportErrors.3.gz
+share/man/man3/glutReshapeFunc.3.gz
+share/man/man3/glutReshapeWindow.3.gz
+share/man/man3/glutSetColor.3.gz
+share/man/man3/glutSetCursor.3.gz
+share/man/man3/glutSetKeyRepeat.3.gz
+share/man/man3/glutSetMenu.3.gz
+share/man/man3/glutSetWindow.3.gz
+share/man/man3/glutSetWindowTitle.3.gz
+share/man/man3/glutShowOverlay.3.gz
+share/man/man3/glutShowWindow.3.gz
+share/man/man3/glutSolidCone.3.gz
+share/man/man3/glutSolidCube.3.gz
+share/man/man3/glutSolidDodecahedron.3.gz
+share/man/man3/glutSolidIcosahedron.3.gz
+share/man/man3/glutSolidOctahedron.3.gz
+share/man/man3/glutSolidSphere.3.gz
+share/man/man3/glutSolidTeapot.3.gz
+share/man/man3/glutSolidTetrahedron.3.gz
+share/man/man3/glutSolidTorus.3.gz
+share/man/man3/glutSpaceballButtonFunc.3.gz
+share/man/man3/glutSpaceballMotionFunc.3.gz
+share/man/man3/glutSpaceballRotateFunc.3.gz
+share/man/man3/glutSpecialFunc.3.gz
+share/man/man3/glutSpecialUpFunc.3.gz
+share/man/man3/glutStrokeCharacter.3.gz
+share/man/man3/glutStrokeWidth.3.gz
+share/man/man3/glutSwapBuffers.3.gz
+share/man/man3/glutSwapInterval.3.gz
+share/man/man3/glutTabletButtonFunc.3.gz
+share/man/man3/glutTabletMotionFunc.3.gz
+share/man/man3/glutTimerFunc.3.gz
+share/man/man3/glutUseLayer.3.gz
+share/man/man3/glutVideoResizeGet.3.gz
+share/man/man3/glutVisibilityFunc.3.gz
+share/man/man3/glutWarpPointer.3.gz
+share/man/man3/glutWindowStatusFunc.3.gz