update to sdl2 2.0.10

testing and ok brynet@
This commit is contained in:
thfr 2019-09-22 15:46:25 +00:00
parent 77b70736cf
commit b18d6bf608
7 changed files with 49 additions and 143 deletions

View File

@ -1,15 +1,14 @@
# $OpenBSD: Makefile,v 1.27 2019/07/12 20:46:01 sthen Exp $
# $OpenBSD: Makefile,v 1.28 2019/09/22 15:46:25 thfr Exp $
COMMENT= cross-platform multimedia library
V= 2.0.9
REVISION= 0
V= 2.0.10
DISTNAME= SDL2-${V}
PKGNAME= sdl2-${V}
CATEGORIES= devel
MASTER_SITES= https://www.libsdl.org/release/
SHARED_LIBS= SDL2 0.6 # 0.9
SHARED_LIBS= SDL2 0.7 # 0.10
HOMEPAGE= https://www.libsdl.org/
@ -19,8 +18,9 @@ MAINTAINER= Thomas Frohwein <thfr@openbsd.org>
PERMIT_PACKAGE= Yes
WANTLIB= m pthread sndio usbhid samplerate
# GL/X11/Xext/Xrender/Xrandr are dlopen'd by SDL
WANTLIB+= GL X11 Xau Xdmcp Xext Xrandr Xrender xcb
# GL/Xau/Xdmcp are dlopen'd by SDL
WANTLIB+= GL X11 Xau xcb Xcursor Xdmcp Xext Xfixes Xi Xinerama
WANTLIB+= Xrandr Xrender Xss Xxf86vm
LIB_DEPENDS= audio/libsamplerate
@ -37,10 +37,13 @@ CONFIGURE_ARGS+= --disable-alsa \
--disable-esd \
--disable-ibus \
--disable-jack \
--disable-libsamplerate-shared \
--disable-libudev \
--disable-nas \
--disable-oss \
--disable-pulseaudio
--disable-pulseaudio \
--disable-sndio-shared \
--disable-x11-shared
# 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
@ -49,6 +52,7 @@ CONFIGURE_ENV+= ac_cv_lib_usb_hid_init=no \
CONFIGURE_ARGS+= --disable-atomic
.endif
# tests in test subdir, but interactive and not hooked up to build
NO_TEST= Yes
.include <bsd.port.mk>

View File

@ -1,2 +1,2 @@
SHA256 (SDL2-2.0.9.tar.gz) = JVGG3GduzQwdvxDsiizF1oabUHnYo4GUwq7N/1SzJLE=
SIZE (SDL2-2.0.9.tar.gz) = 5246942
SHA256 (SDL2-2.0.10.tar.gz) = tGVsE6Hw0AI64vSpzwjskv/7Rk4PJCODN3hBWbi5HVc=
SIZE (SDL2-2.0.10.tar.gz) = 5550762

View File

@ -1,14 +1,14 @@
$OpenBSD: patch-Makefile_in,v 1.6 2019/01/03 17:55:08 thfr Exp $
$OpenBSD: patch-Makefile_in,v 1.7 2019/09/22 15:46:26 thfr Exp $
Index: Makefile.in
--- Makefile.in.orig
+++ Makefile.in
@@ -123,7 +123,7 @@ LT_AGE = @LT_AGE@
@@ -125,7 +125,7 @@ LT_AGE = @LT_AGE@
LT_CURRENT = @LT_CURRENT@
LT_RELEASE = @LT_RELEASE@
LT_REVISION = @LT_REVISION@
-LT_LDFLAGS = -no-undefined -rpath $(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) $(objects)/$(SDLTEST_TARGET)
all: $(srcdir)/configure Makefile $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET)

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-src_SDL_c,v 1.2 2019/01/03 17:55:08 thfr Exp $
$OpenBSD: patch-src_SDL_c,v 1.3 2019/09/22 15:46:26 thfr Exp $
disable breaking if no haptic feedback support which disallows gamecontroller API
pretend to be Linux in SDL_GetPlatform to allow compatibility with FNA games
@ -7,7 +7,7 @@ until OpenBSD support has been rolled out (estimated end of 2018)
Index: src/SDL.c
--- src/SDL.c.orig
+++ src/SDL.c
@@ -228,8 +228,6 @@ SDL_InitSubSystem(Uint32 flags)
@@ -227,8 +227,6 @@ SDL_InitSubSystem(Uint32 flags)
}
}
SDL_PrivateSubsystemRefCountIncr(SDL_INIT_HAPTIC);
@ -16,7 +16,7 @@ Index: src/SDL.c
#endif
}
@@ -449,7 +447,7 @@ SDL_GetPlatform()
@@ -453,7 +451,7 @@ SDL_GetPlatform()
#elif __NETBSD__
return "NetBSD";
#elif __OPENBSD__

View File

@ -1,15 +1,26 @@
$OpenBSD: patch-src_joystick_SDL_gamecontroller_c,v 1.3 2019/01/03 17:55:08 thfr Exp $
$OpenBSD: patch-src_joystick_SDL_gamecontroller_c,v 1.4 2019/09/22 15:46:26 thfr Exp $
enable GameController API the Linux fallback way (by posing as Xbox360
controller)
also disable checking string "Xbox 360 Wireless Receiver", so for now
everything will be Xbox360 controller (works with generic joysticks)
map to SDL_GAMECONTROLLERCONFIG envvar if available
Use layout for XBox360 controller to maximize compatibility because
many controllers use this mapping
Index: src/joystick/SDL_gamecontroller.c
--- src/joystick/SDL_gamecontroller.c.orig
+++ src/joystick/SDL_gamecontroller.c
@@ -1008,17 +1008,23 @@ static ControllerMapping_t *SDL_PrivateGetControllerMa
@@ -735,7 +735,7 @@ static char *SDL_PrivateGetControllerGUIDFromMappingSt
SDL_memcpy(&pchGUID[8], &pchGUID[0], 4);
SDL_memcpy(&pchGUID[0], "03000000", 8);
}
-#elif __MACOSX__
+#else if(__MACOSX__) || (__OpenBSD__)
if (SDL_strlen(pchGUID) == 32 &&
SDL_memcmp(&pchGUID[4], "000000000000", 12) == 0 &&
SDL_memcmp(&pchGUID[20], "000000000000", 12) == 0) {
@@ -1022,17 +1022,21 @@ static ControllerMapping_t *SDL_PrivateGetControllerMa
ControllerMapping_t *mapping;
mapping = SDL_PrivateGetControllerMappingForGUID(&guid, SDL_FALSE);
@ -17,21 +28,21 @@ Index: src/joystick/SDL_gamecontroller.c
+#if defined(__LINUX__) || defined(__OpenBSD__)
if (!mapping && name) {
- if (SDL_strstr(name, "Xbox 360 Wireless Receiver")) {
+ //if (SDL_strstr(name, "Xbox 360 Wireless Receiver")) {
/* The Linux driver xpad.c maps the wireless dpad to buttons */
SDL_bool existing;
- mapping = SDL_PrivateAddMappingForGUID(guid,
+ char guid_str[1024];
+ SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str));
+ if (SDL_GetHint(SDL_HINT_GAMECONTROLLERCONFIG) == NULL) {
+ mapping = SDL_PrivateAddMappingForGUID(guid,
"none,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
&existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT);
- }
+ } else {
+ mapping = SDL_PrivateAddMappingForGUID(guid, SDL_GetHint(SDL_HINT_GAMECONTROLLERCONFIG), &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT);
+ }
+ //}
- /* The Linux driver xpad.c maps the wireless dpad to buttons */
- SDL_bool existing;
+ /* The Linux driver xpad.c maps the wireless dpad to buttons */
+ SDL_bool existing;
+ char guid_str[1024];
+ SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str));
+ if (SDL_GetHint(SDL_HINT_GAMECONTROLLERCONFIG) == NULL) {
mapping = SDL_PrivateAddMappingForGUID(guid,
-"none,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3",
- &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT);
+"none,XBox360 Controller,a:b7,b:b8,back:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b2,lefttrigger:a2,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b3,righttrigger:a5,rightx:a3,righty:a4~,start:b0,x:b9,y:b10",
+ &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT);
+ } else {
+ mapping = SDL_PrivateAddMappingForGUID(guid, SDL_GetHint(SDL_HINT_GAMECONTROLLERCONFIG), &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT);
}
}
-#endif /* __LINUX__ */
+#endif /* __LINUX__ || __OpenBSD__ */

View File

@ -1,109 +0,0 @@
$OpenBSD: patch-src_joystick_bsd_SDL_sysjoystick_c,v 1.1 2019/01/03 17:55:08 thfr Exp $
detect D-Pad as hat and turn D-pad input into equivalent hat position
This improves compatibility with Xbox 360 controller and XInput devices
Index: src/joystick/bsd/SDL_sysjoystick.c
--- src/joystick/bsd/SDL_sysjoystick.c.orig
+++ src/joystick/bsd/SDL_sysjoystick.c
@@ -80,7 +80,50 @@
#define MAX_JOY_JOYS 2
#define MAX_JOYS (MAX_UHID_JOYS + MAX_JOY_JOYS)
+#ifdef __OpenBSD__
+#define HUG_DPAD_UP 0x90
+#define HUG_DPAD_DOWN 0x91
+#define HUG_DPAD_RIGHT 0x92
+#define HUG_DPAD_LEFT 0x93
+
+#define HAT_CENTERED 0x00
+#define HAT_UP 0x01
+#define HAT_RIGHT 0x02
+#define HAT_DOWN 0x04
+#define HAT_LEFT 0x08
+#define HAT_RIGHTUP (HAT_RIGHT|HAT_UP)
+#define HAT_RIGHTDOWN (HAT_RIGHT|HAT_DOWN)
+#define HAT_LEFTUP (HAT_LEFT|HAT_UP)
+#define HAT_LEFTDOWN (HAT_LEFT|HAT_DOWN)
+
+/* calculate the value from the state of the dpad */
+int
+dpad_to_sdl(Sint32 *dpad)
+{
+ if (dpad[2]) {
+ if (dpad[0])
+ return HAT_RIGHTUP;
+ else if (dpad[1])
+ return HAT_RIGHTDOWN;
+ else
+ return HAT_RIGHT;
+ } else if (dpad[3]) {
+ if (dpad[0])
+ return HAT_LEFTUP;
+ else if (dpad[1])
+ return HAT_LEFTDOWN;
+ else
+ return HAT_LEFT;
+ } else if (dpad[0]) {
+ return HAT_UP;
+ } else if (dpad[1]) {
+ return HAT_DOWN;
+ }
+ return HAT_CENTERED;
+}
+#endif
+
struct report
{
#if defined(__FREEBSD__) && (__FreeBSD_kernel_version > 900000)
@@ -432,7 +475,11 @@ desc_failed:
int joyaxe = usage_to_joyaxe(usage);
if (joyaxe >= 0) {
hw->axis_map[joyaxe] = 1;
- } else if (usage == HUG_HAT_SWITCH) {
+ } else if (usage == HUG_HAT_SWITCH
+#ifdef __OpenBSD__
+ || usage == HUG_DPAD_UP
+#endif
+ ) {
joy->nhats++;
}
break;
@@ -485,6 +532,9 @@ BSD_JoystickUpdate(SDL_Joystick * joy)
struct report *rep;
int nbutton, naxe = -1;
Sint32 v;
+#ifdef __OpenBSD__
+ Sint32 dpad[4] = {0, 0, 0, 0};
+#endif
#if defined(__FREEBSD__) || SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H || defined(__FreeBSD_kernel__)
struct joystick gameport;
@@ -570,6 +620,16 @@ BSD_JoystickUpdate(SDL_Joystick * joy)
hatval_to_sdl(v) -
hitem.logical_minimum);
}
+#ifdef __OpenBSD__
+ else if (usage == HUG_DPAD_UP)
+ dpad[0] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem);
+ else if (usage == HUG_DPAD_DOWN)
+ dpad[1] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem);
+ else if (usage == HUG_DPAD_RIGHT)
+ dpad[2] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem);
+ else if (usage == HUG_DPAD_LEFT)
+ dpad[3] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem);
+#endif
break;
}
case HUP_BUTTON:
@@ -585,6 +645,9 @@ BSD_JoystickUpdate(SDL_Joystick * joy)
break;
}
}
+#ifdef __OpenBSD__
+ SDL_PrivateJoystickHat(joy, 0, dpad_to_sdl(dpad));
+#endif
hid_end_parse(hdata);
}
}

View File

@ -1,8 +1,8 @@
$OpenBSD: patch-src_video_SDL_egl_c,v 1.3 2018/03/11 22:40:20 sthen Exp $
$OpenBSD: patch-src_video_SDL_egl_c,v 1.4 2019/09/22 15:46:26 thfr Exp $
Index: src/video/SDL_egl.c
--- src/video/SDL_egl.c.orig
+++ src/video/SDL_egl.c
@@ -72,6 +72,13 @@
@@ -73,6 +73,13 @@
#define DEFAULT_OGL_ES_PVR "libGLES_CM.dylib" //???
#define DEFAULT_OGL_ES "libGLESv1_CM.dylib" //???