Re: New: sdl12-compat - SDL1 reimplentation layered on top of SDL2
Stuart Henderson <[email protected]>
| Newsgroups | gmane.os.openbsd.ports |
|---|---|
| Message-ID | <[email protected]> |
On 2026/08/19 10:20, [email protected] wrote: > For testing purposes, that would be removing the old devel/sdl folder, > putting this in devel/sdl as oppose to devel/sdl12-compat with a Makefile > something like this? Index: Makefile =================================================================== RCS file: /cvs/ports/devel/sdl/Makefile,v diff -u -p -r1.108 Makefile --- Makefile 21 Sep 2023 09:50:05 -0000 1.108 +++ Makefile 19 Aug 2026 11:05:11 -0000 @@ -1,79 +1,34 @@ -COMMENT= cross-platform multimedia library +COMMENT = compatiblity layer SDL 1.2 on SDL2 -VERSION= 1.2.15 -DISTNAME= SDL-${VERSION} -PKGNAME= ${DISTNAME:L} -REVISION= 12 -CATEGORIES= devel -MAINTAINER= Thomas Frohwein <[email protected]> -SITES= ${HOMEPAGE}release/ - -SHARED_LIBS= SDL 8.0 - -HOMEPAGE= https://www.libsdl.org/ - -# LGPLv2.1+ -PERMIT_PACKAGE= Yes - -WANTLIB= iconv m pthread sndio usbhid - -LIB_DEPENDS= converters/libiconv - -AUTOCONF_VERSION= 2.61 -BUILD_DEPENDS+= ${MODGNU_AUTOCONF_DEPENDS} - -.if ${MACHINE_ARCH} == "i386" -BUILD_DEPENDS+= devel/nasm -.endif - -FLAVORS= aa no_x11 -FLAVOR?= - -USE_GMAKE= Yes -SEPARATE_BUILD= Yes -CONFIGURE_STYLE= gnu -MODGNU_CONFIG_GUESS_DIRS= ${WRKSRC} ${WRKSRC}/test -CONFIGURE_ARGS+= --disable-alsa \ - --disable-arts \ - --disable-esd \ - --disable-oss \ - --disable-pulseaudio -CONFIGURE_ENV+= CPPFLAGS="-I${LOCALBASE}/include" \ - LDFLAGS="-L${LOCALBASE}/lib" - -# in case devel/usb is installed, don't pick it up. -CONFIGURE_ENV+= ac_cv_lib_usb_hid_init=no \ - ac_cv_header_usb_h=no - -.if ${FLAVOR:Maa} -WANTLIB+= aa -LIB_DEPENDS+= graphics/aalib -CONFIGURE_ARGS+= --enable-video-aalib -.endif - -.if ${FLAVOR:Mno_x11} -CONFIGURE_ARGS+= --without-x \ - --disable-video-x11 -.else -# -# X11/Xext/Xrender/Xrandr are dlopen'd by SDL -# -WANTLIB+= X11 Xau Xdmcp Xext Xrandr Xrender xcb -.endif - -NO_TEST= Yes - -# The assembly code contains AltiVec instructions, whose support is not -# properly detected at runtime. Fix SIGILLs on macppc G3s, while keeping -# it for powerpc64. -.if ${MACHINE_ARCH} == "powerpc" -CONFIGURE_ARGS+= --enable-altivec=no -.endif +V = 1.2.76 + +DISTNAME = sdl12-compat-${V} +PKGNAME = sdl-${V} + +SHARED_LIBS += SDL 8.1 + +CATEGORIES = devel + +HOMEPAGE = https://github.com/libsdl-org/sdl12-compat + +MAINTAINER = Thomas Frohwein <[email protected]> + +# zlib +PERMIT_PACKAGE = Yes + +# SDL2 is dlopen(3)'d +WANTLIB += SDL2 + +SITES = https://github.com/libsdl-org/sdl12-compat/releases/download/release-${V}/ + +MODULES = devel/cmake + +BUILD_DEPENDS = converters/libiconv +LIB_DEPENDS = devel/sdl2 + +CFLAGS += -I${X11BASE}/include -I${LOCALBASE}/include pre-configure: - @mkdir -p ${WRKSRC}/src/audio/sndio - @cp ${FILESDIR}/SDL_sndioaudio.{c,h} ${WRKSRC}/src/audio/sndio - @cd ${WRKSRC} && AUTOCONF_VERSION=${AUTOCONF_VERSION} PATH=${PORTPATH} \ - ./autogen.sh + ${SUBST_CMD} ${WRKSRC}/CMakeLists.txt .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/devel/sdl/distinfo,v diff -u -p -r1.19 distinfo --- distinfo 18 Jan 2015 03:13:47 -0000 1.19 +++ distinfo 19 Aug 2026 11:05:11 -0000 @@ -1,2 +1,2 @@ -SHA256 (SDL-1.2.15.tar.gz) = 1tMWp5Pl40gVXw3ZO5eXmJM/uYqh7evMEIgp1kdKrQA= -SIZE (SDL-1.2.15.tar.gz) = 3920622 +SHA256 (sdl12-compat-1.2.76.tar.gz) = poR3AJwkvG6HYyax6N0L7ewrDDesvdvd+QrLpI+6Szg= +SIZE (sdl12-compat-1.2.76.tar.gz) = 487319 Index: files/SDL_sndioaudio.c =================================================================== RCS file: files/SDL_sndioaudio.c diff -N files/SDL_sndioaudio.c --- files/SDL_sndioaudio.c 19 Dec 2013 09:24:18 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,243 +0,0 @@ -/* - * Copyright (c) 2008 Jacob Meuser <[email protected]> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include "SDL_config.h" - -/* Allow access to a raw mixing buffer */ - -#ifdef HAVE_SIGNAL_H -#include <signal.h> -#endif -#include <unistd.h> - -#include "SDL_timer.h" -#include "SDL_audio.h" -#include "../SDL_audiomem.h" -#include "../SDL_audio_c.h" -#include "../SDL_audiodev_c.h" -#include "SDL_sndioaudio.h" - -/* The tag name used by sndio audio */ -#define SNDIO_DRIVER_NAME "sndio" - -/* Audio driver functions */ -static int SNDIO_OpenAudio(_THIS, SDL_AudioSpec *spec); -static void SNDIO_WaitAudio(_THIS); -static void SNDIO_PlayAudio(_THIS); -static Uint8 *SNDIO_GetAudioBuf(_THIS); -static void SNDIO_CloseAudio(_THIS); - -/* Audio driver bootstrap functions */ - -static int Audio_Available(void) -{ - struct sio_hdl *this_hdl; - int available = 0; - - if ( (this_hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0)) != NULL ) { - sio_close(this_hdl); - available = 1; - } - - return available; -} - -static void Audio_DeleteDevice(SDL_AudioDevice *device) -{ - SDL_free(device->hidden); - SDL_free(device); -} - -static SDL_AudioDevice *Audio_CreateDevice(int devindex) -{ - SDL_AudioDevice *this; - - /* Initialize all variables that we clean on shutdown */ - this = (SDL_AudioDevice *)SDL_malloc(sizeof(SDL_AudioDevice)); - if ( this ) { - SDL_memset(this, 0, (sizeof *this)); - this->hidden = (struct SDL_PrivateAudioData *) - SDL_malloc((sizeof *this->hidden)); - } - if ( (this == NULL) || (this->hidden == NULL) ) { - SDL_OutOfMemory(); - if ( this ) { - SDL_free(this); - } - return(0); - } - SDL_memset(this->hidden, 0, (sizeof *this->hidden)); - - /* Set the function pointers */ - this->OpenAudio = SNDIO_OpenAudio; - this->WaitAudio = SNDIO_WaitAudio; - this->PlayAudio = SNDIO_PlayAudio; - this->GetAudioBuf = SNDIO_GetAudioBuf; - this->CloseAudio = SNDIO_CloseAudio; - - this->free = Audio_DeleteDevice; - - hdl = NULL; - - return this; -} - -AudioBootStrap SNDIO_bootstrap = { - SNDIO_DRIVER_NAME, "sndio", - Audio_Available, Audio_CreateDevice -}; - - - -/* This function waits until it is possible to write a full sound buffer */ -static void SNDIO_WaitAudio(_THIS) -{ - /* nothing, we're using the blocking api */ -} - -static void SNDIO_PlayAudio(_THIS) -{ - int written; - - /* Write the audio data */ - written = sio_write(hdl, mixbuf, mixlen); - - /* If we couldn't write, assume fatal error for now */ - if ( written == 0 ) { - this->enabled = 0; - } -#ifdef DEBUG_AUDIO - fprintf(stderr, "Wrote %d bytes of audio data\n", written); -#endif -} - -static Uint8 *SNDIO_GetAudioBuf(_THIS) -{ - return(mixbuf); -} - -static void SNDIO_CloseAudio(_THIS) -{ - if ( mixbuf != NULL ) { - SDL_FreeAudioMem(mixbuf); - mixbuf = NULL; - } - if ( hdl != NULL ) { - sio_close(hdl); - hdl = NULL; - } -} - -static int SNDIO_OpenAudio(_THIS, SDL_AudioSpec *spec) -{ - struct sio_par par; - - mixbuf = NULL; - - if ((hdl = sio_open(NULL, SIO_PLAY, 0)) == NULL) { - SDL_SetError("sio_open() failed"); - return(-1); - } - - sio_initpar(&par); - - switch (spec->format) { - case AUDIO_S16LSB: - par.bits = 16; - par.sig = 1; - par.le = 1; - break; - case AUDIO_S16MSB: - par.bits = 16; - par.sig = 1; - par.le = 0; - break; - case AUDIO_S8: - par.bits = 8; - par.sig = 1; - break; - case AUDIO_U16LSB: - par.bits = 16; - par.sig = 0; - par.le = 1; - break; - case AUDIO_U16MSB: - par.bits = 16; - par.sig = 0; - par.le = 0; - break; - case AUDIO_U8: - par.bits = 8; - par.sig = 0; - break; - default: - SDL_SetError("SNDIO unknown format"); - return(-1); - } - - par.rate = spec->freq; - par.pchan = spec->channels; - par.round = spec->samples; - par.appbufsz = par.round * 2; - - if (sio_setpar(hdl, &par) == 0) { - SDL_SetError("sio_setpar() failed"); - return(-1); - } - - if (sio_getpar(hdl, &par) == 0) { - SDL_SetError("sio_getpar() failed"); - return(-1); - } - - if (par.bits == 16) { - if (par.sig && par.le) { - spec->format = AUDIO_S16LSB; - } else if (par.sig && !par.le) { - spec->format = AUDIO_S16MSB; - } else if (!par.sig && par.le) { - spec->format = AUDIO_U16LSB; - } else - spec->format = AUDIO_U16MSB; - } else if (par.bits == 8) { - spec->format = par.sig ? AUDIO_S8 : AUDIO_U8; - } else { - SDL_SetError("SNDIO couldn't configure a suitable format"); - return(-1); - } - - spec->freq = par.rate; - spec->channels = par.pchan; - spec->samples = par.round; - - SDL_CalculateAudioSpec(spec); - - /* Allocate mixing buffer */ - mixlen = spec->size; - mixbuf = (Uint8 *)SDL_AllocAudioMem(mixlen); - if ( mixbuf == NULL ) { - return(-1); - } - SDL_memset(mixbuf, spec->silence, spec->size); - - if ( sio_start(hdl) == 0 ) { - SDL_SetError("sio_start() failed"); - return(-1); - } - - /* We're ready to rock and roll. :-) */ - return(0); -} Index: files/SDL_sndioaudio.h =================================================================== RCS file: files/SDL_sndioaudio.h diff -N files/SDL_sndioaudio.h --- files/SDL_sndioaudio.h 15 Dec 2013 01:57:55 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2008 Jacob Meuser <[email protected]> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include "SDL_config.h" - -#ifndef _SDL_sndioaudio_h -#define _SDL_sndioaudio_h - -#include <sndio.h> - -#include "../SDL_sysaudio.h" - -/* Hidden "this" pointer for the video functions */ -#define _THIS SDL_AudioDevice *this - -struct SDL_PrivateAudioData { - /* The stream descriptor for the audio device */ - struct sio_hdl *hdl; - - /* The parent process id, to detect when application quits */ - pid_t parent; - - /* Raw mixing buffer */ - Uint8 *mixbuf; - int mixlen; - -}; - -/* Old variable names */ -#define stream (this->hidden->stream) -#define parent (this->hidden->parent) -#define mixbuf (this->hidden->mixbuf) -#define mixlen (this->hidden->mixlen) -#define hdl (this->hidden->hdl) - -#endif /* _SDL_sndioaudio_h */ - Index: patches/patch-CMakeLists_txt =================================================================== RCS file: patches/patch-CMakeLists_txt diff -N patches/patch-CMakeLists_txt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-CMakeLists_txt 19 Aug 2026 11:05:11 -0000 @@ -0,0 +1,44 @@ +Index: CMakeLists.txt +--- CMakeLists.txt.orig ++++ CMakeLists.txt +@@ -93,6 +93,11 @@ if(APPLE) + set_target_properties(SDL PROPERTIES + OUTPUT_NAME "SDL-1.2.0" + ) ++elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") ++ set_target_properties(SDL PROPERTIES ++ VERSION "${PROJECT_VERSION}" ++ OUTPUT_NAME "SDL" ++ ) + elseif(UNIX AND NOT ANDROID) + set_target_properties(SDL PROPERTIES + VERSION "${PROJECT_VERSION}" +@@ -194,9 +199,17 @@ if(SDL12DEVEL) + set(SDL_STATIC_LIBS "") + set(SDL_RLD_FLAGS "") # !!! FIXME: this forces rpath, which we might want? + else() # unix +- set(SDL_CFLAGS "-D_GNU_SOURCE=1 -D_REENTRANT") ++ if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") ++ set(SDL_CFLAGS "-D_GNU_SOURCE=1 -D_REENTRANT -I${LOCALBASE}/include -I${X11BASE}/include -DXTHREADS") ++ else() ++ set(SDL_CFLAGS "-D_GNU_SOURCE=1 -D_REENTRANT") ++ endif() + set(SDL_RLD_FLAGS "") # !!! FIXME: this forces rpath, which we might want? +- set(SDL_LIBS "-lSDL") ++ if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") ++ set(SDL_LIBS "-lSDL -pthread -L${X11BASE}/lib") ++ else() ++ set(SDL_LIBS "-lSDL") ++ endif() + set(SDL_STATIC_LIBS "") + foreach(lib ${CMAKE_DL_LIBS}) + set(SDL_STATIC_LIBS "-l${lib}") +@@ -235,7 +248,7 @@ if(SDL12DEVEL) + + set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) + get_target_property(SONAME SDL OUTPUT_NAME) +- if(UNIX AND NOT ANDROID) ++ if(UNIX AND NOT ANDROID AND NOT (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")) + install(CODE " + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink + \"lib${SONAME}${SOPOSTFIX}${SOEXT}\" \"libSDL${SOPOSTFIX}${SOEXT}\" Index: patches/patch-Makefile_in =================================================================== RCS file: patches/patch-Makefile_in diff -N patches/patch-Makefile_in --- patches/patch-Makefile_in 11 Mar 2022 18:53:23 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,11 +0,0 @@ ---- Makefile.in.orig Thu Jan 19 01:30:05 2012 -+++ Makefile.in Wed Feb 22 13:39:54 2012 -@@ -49,7 +49,7 @@ LT_AGE = @LT_AGE@ - LT_CURRENT = @LT_CURRENT@ - LT_RELEASE = @LT_RELEASE@ - LT_REVISION = @LT_REVISION@ --LT_LDFLAGS = -no-undefined -rpath $(DESTDIR)$(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -+LT_LDFLAGS = -no-undefined -rpath $(DESTDIR)$(libdir) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) - - all: $(srcdir)/configure Makefile $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) - Index: patches/patch-configure_in =================================================================== RCS file: patches/patch-configure_in diff -N patches/patch-configure_in --- patches/patch-configure_in 11 Mar 2022 18:53:23 -0000 1.31 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,88 +0,0 @@ ---- configure.in.orig Thu Jan 19 01:30:05 2012 -+++ configure.in Thu Dec 5 14:41:54 2013 -@@ -486,6 +486,35 @@ AC_HELP_STRING([--enable-esd-shared], [dynamically loa - fi - } - -+dnl Find Sndio -+CheckSndio() -+{ -+ AC_ARG_ENABLE(sndio, -+AC_HELP_STRING([--enable-sndio], [support the sndio audio API [[default=yes]]]), -+ , enable_sndioaudio=yes) -+ if test x$enable_audio = xyes -a x$enable_sndioaudio = xyes; then -+ AC_CHECK_HEADER(sndio.h, have_sndio_hdr=yes) -+ AC_CHECK_LIB(sndio, sio_open, have_sndio_lib=yes) -+ -+ AC_MSG_CHECKING(for sndio support) -+ have_sndio=no -+ -+ if test x$have_sndio_hdr = xyes -a x$have_sndio_lib = xyes; then -+ have_sndio=yes -+ SNDIO_LIBS="-lsndio" -+ fi -+ -+ AC_MSG_RESULT($have_sndio) -+ -+ if test x$have_sndio = xyes; then -+ AC_DEFINE(SDL_AUDIO_DRIVER_SNDIO) -+ SOURCES="$SOURCES $srcdir/src/audio/sndio/*.c" -+ EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SNDIO_LIBS" -+ have_audio=yes -+ fi -+ fi -+} -+ - dnl Find PulseAudio - CheckPulseAudio() - { -@@ -860,8 +889,8 @@ CheckVisibilityHidden() - save_CFLAGS="$CFLAGS" - CFLAGS="$save_CFLAGS $visibility_CFLAGS -Werror" - AC_TRY_COMPILE([ -- #if !defined(__GNUC__) || __GNUC__ < 4 -- #error SDL only uses visibility attributes in GCC 4 or newer -+ #if !defined(__GNUC__) || __GNUC__ < 3 -+ #error SDL only uses visibility attributes in GCC 3 or newer - #endif - ],[ - ],[ -@@ -1005,6 +1034,12 @@ AC_HELP_STRING([--enable-x11-shared], [dynamically loa - x11_lib='libX11.so' - x11ext_lib='libXext.so' - ;; -+ *-*-openbsd*) -+ x11_lib='libX11.so' -+ x11ext_lib='libXext.so' -+ xrender_lib='libXrender.so' -+ xrandr_lib='libXrandr.so' -+ ;; - *) - x11_lib=[`find_lib "libX11.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`] - x11ext_lib=[`find_lib "libXext.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`] -@@ -1034,7 +1069,7 @@ AC_HELP_STRING([--enable-x11-shared], [dynamically loa - fi - if test x$x11_symbols_private != xyes && \ - test x$enable_x11_shared = xyes; then -- AC_MSG_WARN([You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading]) -+ AC_MSG_WARN([You must have gcc3 (-fvisibility=hidden) for dynamic X11 loading]) - enable_x11_shared=no - fi - -@@ -2358,6 +2393,7 @@ case "$host" in - CheckALSA - CheckARTSC - CheckESD -+ CheckSndio - CheckPulseAudio - CheckNAS - CheckX11 -@@ -2390,7 +2426,7 @@ case "$host" in - SOURCES="$SOURCES $srcdir/src/audio/sun/*.c" - have_audio=yes - ;; -- netbsd|openbsd) -+ netbsd) - AC_DEFINE(SDL_AUDIO_DRIVER_BSD) - SOURCES="$SOURCES $srcdir/src/audio/bsd/*.c" - have_audio=yes Index: patches/patch-include_SDL_config_h_in =================================================================== RCS file: patches/patch-include_SDL_config_h_in diff -N patches/patch-include_SDL_config_h_in --- patches/patch-include_SDL_config_h_in 11 Mar 2022 18:53:23 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,10 +0,0 @@ ---- include/SDL_config.h.in.orig Thu Jan 19 01:30:05 2012 -+++ include/SDL_config.h.in Wed Feb 22 13:39:54 2012 -@@ -184,6 +184,7 @@ - #undef SDL_AUDIO_DRIVER_QNXNTO - #undef SDL_AUDIO_DRIVER_SNDMGR - #undef SDL_AUDIO_DRIVER_SUNAUDIO -+#undef SDL_AUDIO_DRIVER_SNDIO - #undef SDL_AUDIO_DRIVER_WAVEOUT - - /* Enable various cdrom drivers */ Index: patches/patch-include_SDL_opengl_h =================================================================== RCS file: patches/patch-include_SDL_opengl_h diff -N patches/patch-include_SDL_opengl_h --- patches/patch-include_SDL_opengl_h 11 Mar 2022 18:53:23 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,28 +0,0 @@ -Index: include/SDL_opengl.h ---- include/SDL_opengl.h.orig -+++ include/SDL_opengl.h -@@ -35,7 +35,12 @@ - #endif - #ifndef NO_SDL_GLEXT - #define __glext_h_ /* Don't let gl.h include glext.h */ -+#define __gl_glext_h_ /* Don't let gl.h include glext.h */ -+#ifndef GL_ARB_shader_objects -+#define GL_ARB_shader_objects 0 -+#define undef_GL_ARB - #endif -+#endif - #if defined(__MACOSX__) - #include <OpenGL/gl.h> /* Header File For The OpenGL Library */ - #include <OpenGL/glu.h> /* Header File For The GLU Library */ -@@ -48,6 +53,11 @@ - #endif - #ifndef NO_SDL_GLEXT - #undef __glext_h_ -+#undef __gl_glext_h_ -+#ifdef undef_GL_ARB -+#undef GL_ARB_shader_objects -+#undef undef_GL_ARB -+#endif - #endif - - /** @name GLext.h Index: patches/patch-include_begin_code_h =================================================================== RCS file: patches/patch-include_begin_code_h diff -N patches/patch-include_begin_code_h --- patches/patch-include_begin_code_h 11 Mar 2022 18:53:23 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,11 +0,0 @@ ---- include/begin_code.h.orig Tue Jan 15 19:09:01 2013 -+++ include/begin_code.h Tue Jan 15 19:09:45 2013 -@@ -77,7 +77,7 @@ - # define DECLSPEC - # endif - # else --# if defined(__GNUC__) && __GNUC__ >= 4 -+# if defined(__GNUC__) && __GNUC__ >= 3 - # define DECLSPEC __attribute__ ((visibility("default"))) - # else - # define DECLSPEC Index: patches/patch-sdl-config_in =================================================================== RCS file: patches/patch-sdl-config_in diff -N patches/patch-sdl-config_in --- patches/patch-sdl-config_in 11 Mar 2022 18:53:23 -0000 1.7 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,15 +0,0 @@ ---- sdl-config.in.orig Sun Dec 30 20:48:39 2007 -+++ sdl-config.in Tue Mar 18 20:33:17 2008 -@@ -42,10 +42,10 @@ while test $# -gt 0; do - echo @SDL_VERSION@ - ;; - --cflags) -- echo -I@includedir@/SDL @SDL_CFLAGS@ -+ echo -I@includedir@ -I@includedir@/SDL @SDL_CFLAGS@ @X_CFLAGS@ - ;; - @ENABLE_SHARED_TRUE@ --libs) --@ENABLE_SHARED_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_LIBS@ -+@ENABLE_SHARED_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_LIBS@ @X_LIBS@ - @ENABLE_SHARED_TRUE@ ;; - @ENABLE_STATIC_TRUE@@ENABLE_SHARED_TRUE@ --static-libs) - @ENABLE_STATIC_TRUE@@ENABLE_SHARED_FALSE@ --libs|--static-libs) Index: patches/patch-sdl_pc_in =================================================================== RCS file: patches/patch-sdl_pc_in diff -N patches/patch-sdl_pc_in --- patches/patch-sdl_pc_in 11 Mar 2022 18:53:23 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,11 +0,0 @@ ---- sdl.pc.in.orig Mon Oct 12 19:07:20 2009 -+++ sdl.pc.in Sat Nov 7 13:30:12 2009 -@@ -10,6 +10,5 @@ Description: Simple DirectMedia Layer is a cross-platf - Version: @SDL_VERSION@ - Requires: - Conflicts: --Libs: -L${libdir} @SDL_RLD_FLAGS@ @SDL_LIBS@ --Libs.private: @SDL_STATIC_LIBS@ --Cflags: -I${includedir}/SDL @SDL_CFLAGS@ -+Libs: -L${libdir} @SDL_RLD_FLAGS@ @SDL_LIBS@ @X_LIBS@ -+Cflags: -I${includedir}/SDL @SDL_CFLAGS@ @X_CFLAGS@ Index: patches/patch-src_SDL12_compat_c =================================================================== RCS file: patches/patch-src_SDL12_compat_c diff -N patches/patch-src_SDL12_compat_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_SDL12_compat_c 19 Aug 2026 11:05:11 -0000 @@ -0,0 +1,16 @@ +Index: src/SDL12_compat.c +--- src/SDL12_compat.c.orig ++++ src/SDL12_compat.c +@@ -1341,7 +1341,11 @@ static char loaderror[256]; + } + #elif defined(__unix__) + #include <dlfcn.h> +- #define SDL20_LIBNAME "libSDL2-2.0.so.0" ++ #ifdef __OpenBSD__ ++ #define SDL20_LIBNAME "libSDL2.so" ++ #else ++ #define SDL20_LIBNAME "libSDL2-2.0.so.0" ++ #endif + #define SDL20_REQUIRED_VER SDL_VERSIONNUM(2,0,7) + static void *Loaded_SDL20 = NULL; + #define LoadSDL20Library() ((Loaded_SDL20 = dlopen(SDL20_LIBNAME, RTLD_LOCAL|RTLD_NOW)) != NULL) Index: patches/patch-src_audio_SDL_audio_c =================================================================== RCS file: patches/patch-src_audio_SDL_audio_c diff -N patches/patch-src_audio_SDL_audio_c --- patches/patch-src_audio_SDL_audio_c 11 Mar 2022 18:53:23 -0000 1.18 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,18 +0,0 @@ ---- src/audio/SDL_audio.c.orig Thu Jan 19 01:30:06 2012 -+++ src/audio/SDL_audio.c Wed Feb 22 13:41:58 2012 -@@ -36,11 +36,15 @@ - - /* Available audio drivers */ - static AudioBootStrap *bootstrap[] = { -+ - #if SDL_AUDIO_DRIVER_PULSE - &PULSE_bootstrap, - #endif - #if SDL_AUDIO_DRIVER_ALSA - &ALSA_bootstrap, -+#endif -+#if SDL_AUDIO_DRIVER_SNDIO -+ &SNDIO_bootstrap, - #endif - #if SDL_AUDIO_DRIVER_BSD - &BSD_AUDIO_bootstrap, Index: patches/patch-src_audio_SDL_sysaudio_h =================================================================== RCS file: patches/patch-src_audio_SDL_sysaudio_h diff -N patches/patch-src_audio_SDL_sysaudio_h --- patches/patch-src_audio_SDL_sysaudio_h 11 Mar 2022 18:53:23 -0000 1.7 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ ---- src/audio/SDL_sysaudio.h.orig Thu Jan 19 01:30:06 2012 -+++ src/audio/SDL_sysaudio.h Wed Feb 22 13:39:54 2012 -@@ -105,6 +105,9 @@ typedef struct AudioBootStrap { - #if SDL_AUDIO_DRIVER_BSD - extern AudioBootStrap BSD_AUDIO_bootstrap; - #endif -+#if SDL_AUDIO_DRIVER_SNDIO -+extern AudioBootStrap SNDIO_bootstrap; -+#endif - #if SDL_AUDIO_DRIVER_PULSE - extern AudioBootStrap PULSE_bootstrap; - #endif Index: patches/patch-src_cpuinfo_SDL_cpuinfo_c =================================================================== RCS file: patches/patch-src_cpuinfo_SDL_cpuinfo_c diff -N patches/patch-src_cpuinfo_SDL_cpuinfo_c --- patches/patch-src_cpuinfo_SDL_cpuinfo_c 11 Mar 2022 18:53:23 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,37 +0,0 @@ ---- src/cpuinfo/SDL_cpuinfo.c.orig Thu Jan 19 01:30:06 2012 -+++ src/cpuinfo/SDL_cpuinfo.c Fri Feb 24 16:08:00 2012 -@@ -28,6 +28,10 @@ - - #if defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__)) - #include <sys/sysctl.h> /* For AltiVec check */ -+#elif defined(__OpenBSD__) && defined(__powerpc__) -+#include <sys/param.h> -+#include <sys/sysctl.h> /* For AltiVec check */ -+#include <machine/cpu.h> - #elif SDL_ALTIVEC_BLITTERS && HAVE_SETJMP - #include <signal.h> - #include <setjmp.h> -@@ -42,7 +46,7 @@ - #define CPU_HAS_SSE2 0x00000080 - #define CPU_HAS_ALTIVEC 0x00000100 - --#if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ -+#if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ && !__OpenBSD__ - /* This is the brute force way of detecting instruction sets... - the idea is borrowed from the libmpeg2 library - thanks! - */ -@@ -359,8 +363,12 @@ static __inline__ int CPU_haveSSE2(void) - static __inline__ int CPU_haveAltiVec(void) - { - volatile int altivec = 0; --#if defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__)) -- int selectors[2] = { CTL_HW, HW_VECTORUNIT }; -+#if (defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__))) || (defined(__OpenBSD__) && defined(__powerpc__)) -+# ifdef __OpenBSD__ -+ int selectors[2] = { CTL_MACHDEP, CPU_ALTIVEC }; -+# else -+ int selectors[2] = { CTL_HW, HW_VECTORUNIT }; -+# endif - int hasVectorUnit = 0; - size_t length = sizeof(hasVectorUnit); - int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0); Index: patches/patch-src_joystick_bsd_SDL_sysjoystick_c =================================================================== RCS file: patches/patch-src_joystick_bsd_SDL_sysjoystick_c diff -N patches/patch-src_joystick_bsd_SDL_sysjoystick_c --- patches/patch-src_joystick_bsd_SDL_sysjoystick_c 11 Mar 2022 18:53:23 -0000 1.13 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,24 +0,0 @@ -It is easy to exhaust uhid devices in this day and age. -use ujoy(4) device nodes - -Index: src/joystick/bsd/SDL_sysjoystick.c ---- src/joystick/bsd/SDL_sysjoystick.c.orig -+++ src/joystick/bsd/SDL_sysjoystick.c -@@ -77,7 +77,7 @@ - #include "../SDL_sysjoystick.h" - #include "../SDL_joystick_c.h" - --#define MAX_UHID_JOYS 4 -+#define MAX_UHID_JOYS 16 - #define MAX_JOY_JOYS 2 - #define MAX_JOYS (MAX_UHID_JOYS + MAX_JOY_JOYS) - -@@ -170,7 +170,7 @@ SDL_SYS_JoystickInit(void) - for (i = 0; i < MAX_UHID_JOYS; i++) { - SDL_Joystick nj; - -- SDL_snprintf(s, SDL_arraysize(s), "/dev/uhid%d", i); -+ SDL_snprintf(s, SDL_arraysize(s), "/dev/ujoy/%d", i); - - nj.index = SDL_numjoysticks; - joynames[nj.index] = strdup(s); Index: patches/patch-src_thread_pthread_SDL_syssem_c =================================================================== RCS file: patches/patch-src_thread_pthread_SDL_syssem_c diff -N patches/patch-src_thread_pthread_SDL_syssem_c --- patches/patch-src_thread_pthread_SDL_syssem_c 11 Mar 2022 18:53:23 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,22 +0,0 @@ -Fixed bug 1426 - SDL_SemWaitTimeout returns -1 and sets error instead of -SDL_MUTEX_TIMEDOUT on time out - ---- src/thread/pthread/SDL_syssem.c.orig Fri Mar 2 04:42:50 2012 -+++ src/thread/pthread/SDL_syssem.c Fri Mar 2 04:44:23 2012 -@@ -144,8 +144,14 @@ int SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout) - retval = sem_timedwait(&sem->sem, &ts_timeout); - while (retval == -1 && errno == EINTR); - -- if (retval == -1) -- SDL_SetError(strerror(errno)); -+ if (retval == -1) { -+ if (errno == ETIMEDOUT) { -+ retval = SDL_MUTEX_TIMEDOUT; -+ } -+ else { -+ SDL_SetError(strerror(errno)); -+ } -+ } - #else - end = SDL_GetTicks() + timeout; - while ((retval = SDL_SemTryWait(sem)) == SDL_MUTEX_TIMEDOUT) { Index: patches/patch-src_video_SDL_blit_N_c =================================================================== RCS file: patches/patch-src_video_SDL_blit_N_c diff -N patches/patch-src_video_SDL_blit_N_c --- patches/patch-src_video_SDL_blit_N_c 11 Mar 2022 18:53:23 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,59 +0,0 @@ -- Fixed bug 1424 - Handling of alpha channel in Altivec accelerated blit functions -- Use fast path for RGB 565 -> 32-bit XRGB 8888 - ---- src/video/SDL_blit_N.c.orig Thu Jan 19 01:30:06 2012 -+++ src/video/SDL_blit_N.c Thu Oct 25 21:57:48 2012 -@@ -689,6 +689,8 @@ static void ConvertAltivec32to32_noprefetch(SDL_BlitIn - while ((UNALIGNED_PTR(dst)) && (width)) { - bits = *(src++); - RGBA_FROM_8888(bits, srcfmt, r, g, b, a); -+ if(!srcfmt->Amask) -+ a = srcfmt->alpha; - *(dst++) = MAKE8888(dstfmt, r, g, b, a); - width--; - } -@@ -716,6 +718,8 @@ static void ConvertAltivec32to32_noprefetch(SDL_BlitIn - while (extrawidth) { - bits = *(src++); /* max 7 pixels, don't bother with prefetch. */ - RGBA_FROM_8888(bits, srcfmt, r, g, b, a); -+ if(!srcfmt->Amask) -+ a = srcfmt->alpha; - *(dst++) = MAKE8888(dstfmt, r, g, b, a); - extrawidth--; - } -@@ -769,6 +773,8 @@ static void ConvertAltivec32to32_prefetch(SDL_BlitInfo - vec_dstst(dst+scalar_dst_lead, DST_CTRL(2,32,1024), DST_CHAN_DEST); - bits = *(src++); - RGBA_FROM_8888(bits, srcfmt, r, g, b, a); -+ if(!srcfmt->Amask) -+ a = srcfmt->alpha; - *(dst++) = MAKE8888(dstfmt, r, g, b, a); - width--; - } -@@ -798,6 +804,8 @@ static void ConvertAltivec32to32_prefetch(SDL_BlitInfo - while (extrawidth) { - bits = *(src++); /* max 7 pixels, don't bother with prefetch. */ - RGBA_FROM_8888(bits, srcfmt, r, g, b, a); -+ if(!srcfmt->Amask) -+ a = srcfmt->alpha; - *(dst++) = MAKE8888(dstfmt, r, g, b, a); - extrawidth--; - } -@@ -2299,13 +2307,13 @@ static const struct blit_table normal_blit_2[] = { - 2, NULL, Blit_RGB555_32Altivec, NO_ALPHA | COPY_ALPHA | SET_ALPHA }, - #endif - { 0x0000F800,0x000007E0,0x0000001F, 4, 0x00FF0000,0x0000FF00,0x000000FF, -- 0, NULL, Blit_RGB565_ARGB8888, SET_ALPHA }, -+ 0, NULL, Blit_RGB565_ARGB8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA }, - { 0x0000F800,0x000007E0,0x0000001F, 4, 0x000000FF,0x0000FF00,0x00FF0000, -- 0, NULL, Blit_RGB565_ABGR8888, SET_ALPHA }, -+ 0, NULL, Blit_RGB565_ABGR8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA }, - { 0x0000F800,0x000007E0,0x0000001F, 4, 0xFF000000,0x00FF0000,0x0000FF00, -- 0, NULL, Blit_RGB565_RGBA8888, SET_ALPHA }, -+ 0, NULL, Blit_RGB565_RGBA8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA }, - { 0x0000F800,0x000007E0,0x0000001F, 4, 0x0000FF00,0x00FF0000,0xFF000000, -- 0, NULL, Blit_RGB565_BGRA8888, SET_ALPHA }, -+ 0, NULL, Blit_RGB565_BGRA8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA }, - - /* Default for 16-bit RGB source, used if no other blitter matches */ - { 0,0,0, 0, 0,0,0, 0, NULL, BlitNtoN, 0 } Index: patches/patch-src_video_x11_SDL_x11events_c =================================================================== RCS file: patches/patch-src_video_x11_SDL_x11events_c diff -N patches/patch-src_video_x11_SDL_x11events_c --- patches/patch-src_video_x11_SDL_x11events_c 11 Mar 2022 18:53:23 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,28 +0,0 @@ -Fixed bug 1390 - X11_KeyToUnicode - ---- src/video/x11/SDL_x11events.c.orig Wed Feb 22 19:31:47 2012 -+++ src/video/x11/SDL_x11events.c Wed Feb 22 19:33:27 2012 -@@ -1246,14 +1246,23 @@ static void get_modifier_masks(Display *display) - * sequences (dead accents, compose key sequences) will not work since the - * state has been irrevocably lost. - */ -+extern DECLSPEC Uint16 SDLCALL X11_KeyToUnicode(SDLKey, SDLMod); -+ - Uint16 X11_KeyToUnicode(SDLKey keysym, SDLMod modifiers) - { -+ static int warning = 0; - struct SDL_VideoDevice *this = current_video; - char keybuf[32]; - int i; - KeySym xsym = 0; - XKeyEvent xkey; - Uint16 unicode; -+ -+ if ( warning ) { -+ warning = 0; -+ fprintf(stderr, "WARNING: Application is using X11_KeyToUnicode().\n"); -+ fprintf(stderr, "This is not an official SDL function, please report this as a bug.\n"); -+ } - - if ( !this || !SDL_Display ) { - return 0; Index: patches/patch-src_video_x11_SDL_x11gl_c =================================================================== RCS file: patches/patch-src_video_x11_SDL_x11gl_c diff -N patches/patch-src_video_x11_SDL_x11gl_c --- patches/patch-src_video_x11_SDL_x11gl_c 11 Mar 2022 18:53:23 -0000 1.15 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,11 +0,0 @@ ---- src/video/x11/SDL_x11gl.c.orig Thu Jan 19 01:30:06 2012 -+++ src/video/x11/SDL_x11gl.c Wed Feb 22 13:39:54 2012 -@@ -34,7 +34,7 @@ - #elif defined(__QNXNTO__) - #define DEFAULT_OPENGL "libGL.so.3" - #elif defined(__OpenBSD__) --#define DEFAULT_OPENGL "libGL.so.4.0" -+#define DEFAULT_OPENGL "libGL.so" - #else - #define DEFAULT_OPENGL "libGL.so.1" - #endif Index: patches/patch-src_video_x11_SDL_x11sym_h =================================================================== RCS file: patches/patch-src_video_x11_SDL_x11sym_h diff -N patches/patch-src_video_x11_SDL_x11sym_h --- patches/patch-src_video_x11_SDL_x11sym_h 11 Mar 2022 18:53:23 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,11 +0,0 @@ ---- src/video/x11/SDL_x11sym.h.orig Tue Apr 30 00:39:44 2013 -+++ src/video/x11/SDL_x11sym.h Tue Apr 30 00:40:30 2013 -@@ -165,7 +165,7 @@ SDL_X11_SYM(Bool,XShmQueryExtension,(Display* a),(a),r - */ - #ifdef LONG64 - SDL_X11_MODULE(IO_32BIT) --SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return) -+SDL_X11_SYM(int,_XData32,(Display *dpy,register const long *data,unsigned len),(dpy,data,len),return) - SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),) - #endif - Index: patches/patch-src_video_x11_SDL_x11video_c =================================================================== RCS file: patches/patch-src_video_x11_SDL_x11video_c diff -N patches/patch-src_video_x11_SDL_x11video_c --- patches/patch-src_video_x11_SDL_x11video_c 11 Mar 2022 18:53:23 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,29 +0,0 @@ -Fixed bug 1427 - integer passed to XChangeProperty() causes crash - ---- src/video/x11/SDL_x11video.c.orig Wed Feb 22 19:34:11 2012 -+++ src/video/x11/SDL_x11video.c Wed Feb 22 19:36:25 2012 -@@ -418,16 +418,21 @@ static void create_aux_windows(_THIS) - } - - { -- pid_t pid = getpid(); -+ union align_pid { -+ pid_t pid; -+ long dummy; -+ } a_pid; - char hostname[256]; - -- if (pid > 0 && gethostname(hostname, sizeof(hostname)) > -1) { -+ a_pid.pid = getpid(); -+ -+ if (a_pid.pid > 0 && gethostname(hostname, sizeof(hostname)) > -1) { - Atom _NET_WM_PID = XInternAtom(SDL_Display, "_NET_WM_PID", False); - Atom WM_CLIENT_MACHINE = XInternAtom(SDL_Display, "WM_CLIENT_MACHINE", False); - - hostname[sizeof(hostname)-1] = '\0'; - XChangeProperty(SDL_Display, WMwindow, _NET_WM_PID, XA_CARDINAL, 32, -- PropModeReplace, (unsigned char *)&pid, 1); -+ PropModeReplace, (unsigned char *)&a_pid.pid, 1); - XChangeProperty(SDL_Display, WMwindow, WM_CLIENT_MACHINE, XA_STRING, 8, - PropModeReplace, (unsigned char *)hostname, SDL_strlen(hostname)); - } Index: patches/patch-src_video_x11_SDL_x11wm_c =================================================================== RCS file: patches/patch-src_video_x11_SDL_x11wm_c diff -N patches/patch-src_video_x11_SDL_x11wm_c --- patches/patch-src_video_x11_SDL_x11wm_c 11 Mar 2022 18:53:23 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,94 +0,0 @@ -Use _NET_WM_ICON if possible for X11's SDL_WM_SetIcon() implementation. - ---- src/video/x11/SDL_x11wm.c.orig Thu Oct 25 21:58:52 2012 -+++ src/video/x11/SDL_x11wm.c Thu Oct 25 22:01:06 2012 -@@ -43,6 +43,7 @@ static Uint8 reverse_byte(Uint8 x) - - void X11_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask) - { -+ Atom _NET_WM_ICON = XInternAtom(SDL_Display, "_NET_WM_ICON", False); - SDL_Surface *sicon; - XWMHints *wmhints; - XImage *icon_image; -@@ -59,6 +60,81 @@ void X11_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask - int masksize; - - SDL_Lock_EventThread(); -+ -+ if (_NET_WM_ICON) { /* better interface for modern systems. */ -+ SDL_PixelFormat format; -+ SDL_Surface *surface; -+ int propsize; -+ long *propdata; -+ -+ /* Convert the icon to ARGB for modern window managers */ -+ SDL_memset(&format, 0, sizeof (format)); -+ format.BitsPerPixel = 32; -+ format.BytesPerPixel = 4; -+ #if SDL_BYTEORDER == SDL_BIG_ENDIAN -+ format.Rshift = 8; -+ format.Gshift = 16; -+ format.Bshift = 24; -+ format.Ashift = 0; -+ #else -+ format.Rshift = 16; -+ format.Gshift = 8; -+ format.Bshift = 0; -+ format.Ashift = 24; -+ #endif -+ format.Rmask = 0xFF << format.Rshift; -+ format.Gmask = 0xFF << format.Gshift; -+ format.Bmask = 0xFF << format.Bshift; -+ format.Amask = 0xFF << format.Ashift; -+ format.alpha = SDL_ALPHA_OPAQUE; -+ -+ surface = SDL_ConvertSurface(icon, &format, 0); -+ if (!surface) { -+ return; -+ } -+ -+ /* Set the _NET_WM_ICON property */ -+ propsize = 2 + (icon->w * icon->h); -+ propdata = SDL_malloc(propsize * sizeof(long)); -+ if (propdata) { -+ const Uint32 alpha = format.Amask; -+ int x, y; -+ Uint32 *src; -+ long *dst; -+ -+ propdata[0] = icon->w; -+ propdata[1] = icon->h; -+ dst = &propdata[2]; -+ -+ size_t maskidx = 0; -+ for (y = 0; y < icon->h; ++y) { -+ src = (Uint32*)((Uint8*)surface->pixels + y * surface->pitch); -+ for (x = 0; x < icon->w; ++x) { -+ const Uint32 pixel = *(src++); -+ if (mask[maskidx / 8] & (1<<(7-(maskidx % 8)))) { -+ *dst++ = pixel | alpha; -+ } else { -+ *dst++ = pixel & ~alpha; -+ } -+ maskidx++; -+ } -+ } -+ -+ XChangeProperty(SDL_Display, WMwindow, _NET_WM_ICON, XA_CARDINAL, -+ 32, PropModeReplace, (unsigned char *) propdata, -+ propsize); -+ } -+ -+ SDL_FreeSurface(surface); -+ SDL_free(propdata); -+ -+ XFlush(SDL_Display); -+ SDL_Unlock_EventThread(); -+ -+ return; -+ } -+ -+ /* Do it the old way... */ - - /* The icon must use the default visual, depth and colormap of the - screen, so it might need a conversion */ Index: pkg/DESCR =================================================================== RCS file: /cvs/ports/devel/sdl/pkg/DESCR,v diff -u -p -r1.11 DESCR --- pkg/DESCR 2 Mar 2012 09:10:38 -0000 1.11 +++ pkg/DESCR 19 Aug 2026 11:05:11 -0000 @@ -1,11 +1,3 @@ -Simple DirectMedia Layer is a cross-platform multimedia -library designed to provide fast access to the graphics -framebuffer and audio device. It is used by MPEG playback -software, emulators, and many popular games. - -Packages can be built with additional FLAVORs: - - aa: SDL built with ASCII art support. - This FLAVOR requires the aalib package. - - no_x11: Built without X11. +sdl12-compat is a compatibility layer; it provides a binary and source +compatible API for programs written against SDL 1.2, but it uses SDL 2.0 +behind the scenes. Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/devel/sdl/pkg/PLIST,v diff -u -p -r1.19 PLIST --- pkg/PLIST 11 Mar 2022 18:53:23 -0000 1.19 +++ pkg/PLIST 19 Aug 2026 11:05:11 -0000 @@ -10,6 +10,7 @@ include/SDL/SDL_audio.h include/SDL/SDL_byteorder.h include/SDL/SDL_cdrom.h include/SDL/SDL_config.h +include/SDL/SDL_copying.h include/SDL/SDL_cpuinfo.h include/SDL/SDL_endian.h include/SDL/SDL_error.h @@ -36,185 +37,7 @@ include/SDL/SDL_version.h include/SDL/SDL_video.h include/SDL/begin_code.h include/SDL/close_code.h -@static-lib lib/libSDL.a -lib/libSDL.la @lib lib/libSDL.so.${LIBSDL_VERSION} @static-lib lib/libSDLmain.a -lib/libSDLmain.la -lib/pkgconfig/sdl.pc -@man man/man3/SDLKey.3 -@man man/man3/SDL_ActiveEvent.3 -@man man/man3/SDL_AddTimer.3 -@man man/man3/SDL_AudioCVT.3 -@man man/man3/SDL_AudioSpec.3 -@man man/man3/SDL_BlitSurface.3 -@man man/man3/SDL_BuildAudioCVT.3 -@man man/man3/SDL_CD.3 -@man man/man3/SDL_CDClose.3 -@man man/man3/SDL_CDEject.3 -@man man/man3/SDL_CDName.3 -@man man/man3/SDL_CDNumDrives.3 -@man man/man3/SDL_CDOpen.3 -@man man/man3/SDL_CDPause.3 -@man man/man3/SDL_CDPlay.3 -@man man/man3/SDL_CDPlayTracks.3 -@man man/man3/SDL_CDResume.3 -@man man/man3/SDL_CDStatus.3 -@man man/man3/SDL_CDStop.3 -@man man/man3/SDL_CDtrack.3 -@man man/man3/SDL_CloseAudio.3 -@man man/man3/SDL_Color.3 -@man man/man3/SDL_CondBroadcast.3 -@man man/man3/SDL_CondSignal.3 -@man man/man3/SDL_CondWait.3 -@man man/man3/SDL_CondWaitTimeout.3 -@man man/man3/SDL_ConvertAudio.3 -@man man/man3/SDL_ConvertSurface.3 -@man man/man3/SDL_CreateCond.3 -@man man/man3/SDL_CreateCursor.3 -@man man/man3/SDL_CreateMutex.3 -@man man/man3/SDL_CreateRGBSurface.3 -@man man/man3/SDL_CreateRGBSurfaceFrom.3 -@man man/man3/SDL_CreateSemaphore.3 -@man man/man3/SDL_CreateThread.3 -@man man/man3/SDL_CreateYUVOverlay.3 -@man man/man3/SDL_Delay.3 -@man man/man3/SDL_DestroyCond.3 -@man man/man3/SDL_DestroyMutex.3 -@man man/man3/SDL_DestroySemaphore.3 -@man man/man3/SDL_DisplayFormat.3 -@man man/man3/SDL_DisplayFormatAlpha.3 -@man man/man3/SDL_DisplayYUVOverlay.3 -@man man/man3/SDL_EnableKeyRepeat.3 -@man man/man3/SDL_EnableUNICODE.3 -@man man/man3/SDL_Event.3 -@man man/man3/SDL_EventState.3 -@man man/man3/SDL_ExposeEvent.3 -@man man/man3/SDL_FillRect.3 -@man man/man3/SDL_Flip.3 -@man man/man3/SDL_FreeCursor.3 -@man man/man3/SDL_FreeSurface.3 -@man man/man3/SDL_FreeWAV.3 -@man man/man3/SDL_FreeYUVOverlay.3 -@man man/man3/SDL_GL_GetAttribute.3 -@man man/man3/SDL_GL_GetProcAddress.3 -@man man/man3/SDL_GL_LoadLibrary.3 -@man man/man3/SDL_GL_SetAttribute.3 -@man man/man3/SDL_GL_SwapBuffers.3 -@man man/man3/SDL_GLattr.3 -@man man/man3/SDL_GetAppState.3 -@man man/man3/SDL_GetAudioStatus.3 -@man man/man3/SDL_GetClipRect.3 -@man man/man3/SDL_GetCursor.3 -@man man/man3/SDL_GetError.3 -@man man/man3/SDL_GetEventFilter.3 -@man man/man3/SDL_GetGamma.3 -@man man/man3/SDL_GetGammaRamp.3 -@man man/man3/SDL_GetKeyName.3 -@man man/man3/SDL_GetKeyState.3 -@man man/man3/SDL_GetModState.3 -@man man/man3/SDL_GetMouseState.3 -@man man/man3/SDL_GetRGB.3 -@man man/man3/SDL_GetRGBA.3 -@man man/man3/SDL_GetRelativeMouseState.3 -@man man/man3/SDL_GetThreadID.3 -@man man/man3/SDL_GetTicks.3 -@man man/man3/SDL_GetVideoInfo.3 -@man man/man3/SDL_GetVideoSurface.3 -@man man/man3/SDL_Init.3 -@man man/man3/SDL_InitSubSystem.3 -@man man/man3/SDL_JoyAxisEvent.3 -@man man/man3/SDL_JoyBallEvent.3 -@man man/man3/SDL_JoyButtonEvent.3 -@man man/man3/SDL_JoyHatEvent.3 -@man man/man3/SDL_JoystickClose.3 -@man man/man3/SDL_JoystickEventState.3 -@man man/man3/SDL_JoystickGetAxis.3 -@man man/man3/SDL_JoystickGetBall.3 -@man man/man3/SDL_JoystickGetButton.3 -@man man/man3/SDL_JoystickGetHat.3 -@man man/man3/SDL_JoystickIndex.3 -@man man/man3/SDL_JoystickName.3 -@man man/man3/SDL_JoystickNumAxes.3 -@man man/man3/SDL_JoystickNumBalls.3 -@man man/man3/SDL_JoystickNumButtons.3 -@man man/man3/SDL_JoystickNumHats.3 -@man man/man3/SDL_JoystickOpen.3 -@man man/man3/SDL_JoystickOpened.3 -@man man/man3/SDL_JoystickUpdate.3 -@man man/man3/SDL_KeyboardEvent.3 -@man man/man3/SDL_KillThread.3 -@man man/man3/SDL_ListModes.3 -@man man/man3/SDL_LoadBMP.3 -@man man/man3/SDL_LoadWAV.3 -@man man/man3/SDL_LockAudio.3 -@man man/man3/SDL_LockSurface.3 -@man man/man3/SDL_LockYUVOverlay.3 -@man man/man3/SDL_MapRGB.3 -@man man/man3/SDL_MapRGBA.3 -@man man/man3/SDL_MixAudio.3 -@man man/man3/SDL_MouseButtonEvent.3 -@man man/man3/SDL_MouseMotionEvent.3 -@man man/man3/SDL_NumJoysticks.3 -@man man/man3/SDL_OpenAudio.3 -@man man/man3/SDL_Overlay.3 -@man man/man3/SDL_Palette.3 -@man man/man3/SDL_PauseAudio.3 -@man man/man3/SDL_PeepEvents.3 -@man man/man3/SDL_PixelFormat.3 -@man man/man3/SDL_PollEvent.3 -@man man/man3/SDL_PumpEvents.3 -@man man/man3/SDL_PushEvent.3 -@man man/man3/SDL_Quit.3 -@man man/man3/SDL_QuitEvent.3 -@man man/man3/SDL_QuitSubSystem.3 -@man man/man3/SDL_RWFromFile.3 -@man man/man3/SDL_Rect.3 -@man man/man3/SDL_RemoveTimer.3 -@man man/man3/SDL_ResizeEvent.3 -@man man/man3/SDL_SaveBMP.3 -@man man/man3/SDL_SemPost.3 -@man man/man3/SDL_SemTryWait.3 -@man man/man3/SDL_SemValue.3 -@man man/man3/SDL_SemWait.3 -@man man/man3/SDL_SemWaitTimeout.3 -@man man/man3/SDL_SetAlpha.3 -@man man/man3/SDL_SetClipRect.3 -@man man/man3/SDL_SetColorKey.3 -@man man/man3/SDL_SetColors.3 -@man man/man3/SDL_SetCursor.3 -@man man/man3/SDL_SetEventFilter.3 -@man man/man3/SDL_SetGamma.3 -@man man/man3/SDL_SetGammaRamp.3 -@man man/man3/SDL_SetModState.3 -@man man/man3/SDL_SetPalette.3 -@man man/man3/SDL_SetTimer.3 -@man man/man3/SDL_SetVideoMode.3 -@man man/man3/SDL_ShowCursor.3 -@man man/man3/SDL_Surface.3 -@man man/man3/SDL_SysWMEvent.3 -@man man/man3/SDL_ThreadID.3 -@man man/man3/SDL_UnlockAudio.3 -@man man/man3/SDL_UnlockSurface.3 -@man man/man3/SDL_UnlockYUVOverlay.3 -@man man/man3/SDL_UpdateRect.3 -@man man/man3/SDL_UpdateRects.3 -@man man/man3/SDL_UserEvent.3 -@man man/man3/SDL_VideoDriverName.3 -@man man/man3/SDL_VideoInfo.3 -@man man/man3/SDL_VideoModeOK.3 -@man man/man3/SDL_WM_GetCaption.3 -@man man/man3/SDL_WM_GrabInput.3 -@man man/man3/SDL_WM_IconifyWindow.3 -@man man/man3/SDL_WM_SetCaption.3 -@man man/man3/SDL_WM_SetIcon.3 -@man man/man3/SDL_WM_ToggleFullScreen.3 -@man man/man3/SDL_WaitEvent.3 -@man man/man3/SDL_WaitThread.3 -@man man/man3/SDL_WarpMouse.3 -@man man/man3/SDL_WasInit.3 -@man man/man3/SDL_keysym.3 -@man man/man3/SDL_mutexP.3 -@man man/man3/SDL_mutexV.3 -share/aclocal/ +lib/pkgconfig/sdl12_compat.pc share/aclocal/sdl.m4