libsdl2 ver. bump
This commit is contained in:
@@ -1,52 +0,0 @@
|
||||
From 25cd749adba77e1a6f3f31f80f8768c0aaaad5b0 Mon Sep 17 00:00:00 2001
|
||||
From: Simon McVittie <smcv@collabora.com>
|
||||
Date: Thu, 12 Aug 2021 15:12:04 +0100
|
||||
Subject: [PATCH] x11: Don't change mode if we are already in the correct mode
|
||||
|
||||
If we are already in the desired mode, changing it is a no-op at best,
|
||||
and harmful at worst: on Xwayland, it sometimes happens that we disable
|
||||
the crtc and cannot re-enable it.
|
||||
|
||||
Resolves: https://github.com/libsdl-org/SDL/issues/4630
|
||||
Signed-off-by: Simon McVittie <smcv@collabora.com>
|
||||
---
|
||||
src/video/x11/SDL_x11modes.c | 14 ++++++++++++--
|
||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/video/x11/SDL_x11modes.c b/src/video/x11/SDL_x11modes.c
|
||||
index 8a9cf56ed3..da520e3115 100644
|
||||
--- a/src/video/x11/SDL_x11modes.c
|
||||
+++ b/src/video/x11/SDL_x11modes.c
|
||||
@@ -1040,11 +1040,20 @@ X11_SetDisplayMode(_THIS, SDL_VideoDisplay * sdl_display, SDL_DisplayMode * mode
|
||||
return SDL_SetError("Couldn't get XRandR crtc info");
|
||||
}
|
||||
|
||||
+ if (crtc->mode == modedata->xrandr_mode) {
|
||||
+#ifdef X11MODES_DEBUG
|
||||
+ printf("already in desired mode 0x%lx (%ux%u), nothing to do\n",
|
||||
+ crtc->mode, crtc->width, crtc->height);
|
||||
+#endif
|
||||
+ status = Success;
|
||||
+ goto freeInfo;
|
||||
+ }
|
||||
+
|
||||
X11_XGrabServer(display);
|
||||
status = X11_XRRSetCrtcConfig(display, res, output_info->crtc, CurrentTime,
|
||||
0, 0, None, crtc->rotation, NULL, 0);
|
||||
if (status != Success) {
|
||||
- goto setCrtcError;
|
||||
+ goto ungrabServer;
|
||||
}
|
||||
|
||||
mm_width = mode->w * DisplayWidthMM(display, data->screen) / DisplayWidth(display, data->screen);
|
||||
@@ -1067,8 +1076,9 @@ X11_SetDisplayMode(_THIS, SDL_VideoDisplay * sdl_display, SDL_DisplayMode * mode
|
||||
crtc->x, crtc->y, modedata->xrandr_mode, crtc->rotation,
|
||||
&data->xrandr_output, 1);
|
||||
|
||||
-setCrtcError:
|
||||
+ungrabServer:
|
||||
X11_XUngrabServer(display);
|
||||
+freeInfo:
|
||||
X11_XRRFreeCrtcInfo(crtc);
|
||||
X11_XRRFreeOutputInfo(output_info);
|
||||
X11_XRRFreeScreenResources(res);
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
From 3261f7f6ceaaa435a3aca0252b2f7126eeae1bb2 Mon Sep 17 00:00:00 2001
|
||||
From: David Gow <david@ingeniumdigital.com>
|
||||
Date: Thu, 26 Aug 2021 16:15:30 +0800
|
||||
Subject: [PATCH] audio: Support "pulse" as an alias for "pulseaudio"
|
||||
|
||||
Originally, SDL 1.2 used "pulse" as the name for its PulseAudio driver.
|
||||
While it now supports "pulseaudio" as well for compatibility with SDL
|
||||
2.0 [1], there are still scripts and distro packages which set
|
||||
SDL_AUDIODRIVER=pulse [2]. While it's possible to remove this in most
|
||||
circumstances or replace it with "pulseaudio" or a comma-separated list,
|
||||
this may still conflict if the environment variable is set globally and
|
||||
old binary builds of SDL 1.2 (e.g. packaged with older games) are being
|
||||
used.
|
||||
|
||||
To fix this on SDL 2.0, add a hardcoded check for "pulse" as an audio
|
||||
driver name, and replace it with "pulseaudio". This mimics what SDL 1.2
|
||||
does (but in reverse). Note that setting driver_attempt{,_len} is safe
|
||||
here as they're reset correctly based on driver_attempt_end on the next
|
||||
loop.
|
||||
|
||||
[1] https://github.com/libsdl-org/SDL-1.2/commit/d9514097846381cd30fe08df65dbdd48de92a058
|
||||
[2] https://bugzilla.opensuse.org/show_bug.cgi?id=1189778
|
||||
---
|
||||
src/audio/SDL_audio.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c
|
||||
index 69cddd535..972207d36 100644
|
||||
--- a/src/audio/SDL_audio.c
|
||||
+++ b/src/audio/SDL_audio.c
|
||||
@@ -978,6 +978,14 @@ SDL_AudioInit(const char *driver_name)
|
||||
const char *driver_attempt_end = SDL_strchr(driver_attempt, ',');
|
||||
size_t driver_attempt_len = (driver_attempt_end != NULL) ? (driver_attempt_end - driver_attempt)
|
||||
: SDL_strlen(driver_attempt);
|
||||
+#if SDL_AUDIO_DRIVER_PULSEAUDIO
|
||||
+ /* SDL 1.2 uses the name "pulse", so we'll support both. */
|
||||
+ if (driver_attempt_len == SDL_strlen("pulse") &&
|
||||
+ (SDL_strncasecmp(driver_attempt, "pulse", driver_attempt_len) == 0)) {
|
||||
+ driver_attempt = "pulseaudio";
|
||||
+ driver_attempt_len = SDL_strlen("pulseaudio");
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
for (i = 0; bootstrap[i]; ++i) {
|
||||
if ((driver_attempt_len == SDL_strlen(bootstrap[i]->name)) &&
|
||||
--
|
||||
2.32.0
|
||||
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
From 5113fedfa0e8592048a66cf8f852a59441e8bc9c Mon Sep 17 00:00:00 2001
|
||||
From: Eric Engestrom <eric@engestrom.ch>
|
||||
Date: Mon, 2 Aug 2021 23:01:12 +0100
|
||||
Subject: [PATCH] video/wayland: use EGL_EXT_present_opaque when available
|
||||
|
||||
---
|
||||
src/video/SDL_egl.c | 16 ++++++++++++++--
|
||||
1 file changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c
|
||||
index 87d693e8d..41966db45 100644
|
||||
--- a/src/video/SDL_egl.c
|
||||
+++ b/src/video/SDL_egl.c
|
||||
@@ -43,6 +43,11 @@
|
||||
#endif
|
||||
#endif /* EGL_KHR_create_context */
|
||||
|
||||
+#ifndef EGL_EXT_present_opaque
|
||||
+#define EGL_EXT_present_opaque 1
|
||||
+#define EGL_PRESENT_OPAQUE_EXT 0x31DF
|
||||
+#endif /* EGL_EXT_present_opaque */
|
||||
+
|
||||
#if SDL_VIDEO_DRIVER_RPI
|
||||
/* Raspbian places the OpenGL ES/EGL binaries in a non standard path */
|
||||
#define DEFAULT_EGL ( vc4 ? "libEGL.so.1" : "libbrcmEGL.so" )
|
||||
@@ -1182,8 +1187,8 @@ SDL_EGL_CreateSurface(_THIS, NativeWindowType nw)
|
||||
EGLint format_wanted;
|
||||
EGLint format_got;
|
||||
#endif
|
||||
- /* max 2 values plus terminator. */
|
||||
- EGLint attribs[3];
|
||||
+ /* max 2 key+value pairs, plus terminator. */
|
||||
+ EGLint attribs[5];
|
||||
int attr = 0;
|
||||
|
||||
EGLSurface * surface;
|
||||
@@ -1216,6 +1221,13 @@ SDL_EGL_CreateSurface(_THIS, NativeWindowType nw)
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef EGL_EXT_present_opaque
|
||||
+ if (SDL_EGL_HasExtension(_this, SDL_EGL_DISPLAY_EXTENSION, "EGL_EXT_present_opaque")) {
|
||||
+ attribs[attr++] = EGL_PRESENT_OPAQUE_EXT;
|
||||
+ attribs[attr++] = EGL_TRUE;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
attribs[attr++] = EGL_NONE;
|
||||
|
||||
surface = _this->egl_data->eglCreateWindowSurface(
|
||||
--
|
||||
2.32.0
|
||||
|
||||
-393
@@ -1,393 +0,0 @@
|
||||
From 8e54698aa6e3c0cf02d0b628403f047f28ea7fd0 Mon Sep 17 00:00:00 2001
|
||||
From: Ethan Lee <flibitijibibo@gmail.com>
|
||||
Date: Wed, 22 Sep 2021 13:26:44 -0400
|
||||
Subject: [PATCH 1/2] wayland: Add support for high-DPI cursors
|
||||
|
||||
---
|
||||
src/video/wayland/SDL_waylandmouse.c | 230 ++++++++++++++++-----------
|
||||
src/video/wayland/SDL_waylandmouse.h | 2 +-
|
||||
src/video/wayland/SDL_waylandvideo.c | 6 +-
|
||||
src/video/wayland/SDL_waylandvideo.h | 8 +-
|
||||
4 files changed, 147 insertions(+), 99 deletions(-)
|
||||
|
||||
diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c
|
||||
index a0df26bdf..23663ebe1 100644
|
||||
--- a/src/video/wayland/SDL_waylandmouse.c
|
||||
+++ b/src/video/wayland/SDL_waylandmouse.c
|
||||
@@ -47,11 +47,110 @@ typedef struct {
|
||||
int hot_x, hot_y;
|
||||
int w, h;
|
||||
|
||||
- /* Either a preloaded cursor, or one we created ourselves */
|
||||
- struct wl_cursor *cursor;
|
||||
+ /* shm_data is non-NULL for custom cursors.
|
||||
+ * When shm_data is NULL, system_cursor must be valid
|
||||
+ */
|
||||
+ SDL_SystemCursor system_cursor;
|
||||
void *shm_data;
|
||||
} Wayland_CursorData;
|
||||
|
||||
+static SDL_bool
|
||||
+wayland_get_system_cursor(SDL_VideoData *vdata, Wayland_CursorData *cdata, float *scale)
|
||||
+{
|
||||
+ struct wl_cursor_theme *theme = NULL;
|
||||
+ struct wl_cursor *cursor;
|
||||
+
|
||||
+ SDL_Window *focus;
|
||||
+ SDL_WindowData *focusdata;
|
||||
+ int i;
|
||||
+
|
||||
+ /* FIXME: We need to be able to query the cursor size from the desktop at
|
||||
+ * some point! For a while this was 32, but when testing on real desktops it
|
||||
+ * seems like most of them default to 24. We'll need a protocol to get this
|
||||
+ * for real, but for now this is a pretty safe bet.
|
||||
+ * -flibit
|
||||
+ */
|
||||
+ int size = 24;
|
||||
+
|
||||
+ /* First, find the appropriate theme based on the current scale... */
|
||||
+ focus = SDL_GetMouse()->focus;
|
||||
+ if (focus == NULL) {
|
||||
+ /* Nothing to see here, bail. */
|
||||
+ return SDL_FALSE;
|
||||
+ }
|
||||
+ focusdata = focus->driverdata;
|
||||
+ *scale = focusdata->scale_factor;
|
||||
+ size *= focusdata->scale_factor;
|
||||
+ for (i = 0; i < vdata->num_cursor_themes; i += 1) {
|
||||
+ if (vdata->cursor_themes[i].size == size) {
|
||||
+ theme = vdata->cursor_themes[i].theme;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ if (theme == NULL) {
|
||||
+ vdata->cursor_themes = SDL_realloc(vdata->cursor_themes,
|
||||
+ sizeof(SDL_WaylandCursorTheme) * (vdata->num_cursor_themes + 1));
|
||||
+ if (vdata->cursor_themes == NULL) {
|
||||
+ SDL_OutOfMemory();
|
||||
+ return SDL_FALSE;
|
||||
+ }
|
||||
+ theme = WAYLAND_wl_cursor_theme_load(NULL, size, vdata->shm);
|
||||
+ vdata->cursor_themes[vdata->num_cursor_themes++].theme = theme;
|
||||
+ }
|
||||
+
|
||||
+ /* Next, find the cursor from the theme... */
|
||||
+ switch(cdata->system_cursor)
|
||||
+ {
|
||||
+ case SDL_SYSTEM_CURSOR_ARROW:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "left_ptr");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_IBEAM:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "xterm");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_WAIT:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "watch");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_CROSSHAIR:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "hand1");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_WAITARROW:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "watch");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_SIZENWSE:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "hand1");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_SIZENESW:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "hand1");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_SIZEWE:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "hand1");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_SIZENS:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "hand1");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_SIZEALL:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "hand1");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_NO:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "xterm");
|
||||
+ break;
|
||||
+ case SDL_SYSTEM_CURSOR_HAND:
|
||||
+ cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "hand1");
|
||||
+ break;
|
||||
+ default:
|
||||
+ SDL_assert(0);
|
||||
+ return SDL_FALSE;
|
||||
+ }
|
||||
+
|
||||
+ /* ... Set the cursor data, finally. */
|
||||
+ cdata->buffer = WAYLAND_wl_cursor_image_get_buffer(cursor->images[0]);
|
||||
+ cdata->hot_x = cursor->images[0]->hotspot_x;
|
||||
+ cdata->hot_y = cursor->images[0]->hotspot_y;
|
||||
+ cdata->w = cursor->images[0]->width;
|
||||
+ cdata->h = cursor->images[0]->height;
|
||||
+ return SDL_TRUE;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
wayland_create_tmp_file(off_t size)
|
||||
{
|
||||
@@ -192,30 +291,30 @@ Wayland_CreateCursor(SDL_Surface *surface, int hot_x, int hot_y)
|
||||
}
|
||||
|
||||
static SDL_Cursor *
|
||||
-CreateCursorFromWlCursor(SDL_VideoData *d, struct wl_cursor *wlcursor)
|
||||
+Wayland_CreateSystemCursor(SDL_SystemCursor id)
|
||||
{
|
||||
+ SDL_VideoData *data = SDL_GetVideoDevice()->driverdata;
|
||||
SDL_Cursor *cursor;
|
||||
|
||||
cursor = SDL_calloc(1, sizeof (*cursor));
|
||||
if (cursor) {
|
||||
- Wayland_CursorData *data = SDL_calloc (1, sizeof (Wayland_CursorData));
|
||||
- if (!data) {
|
||||
+ Wayland_CursorData *cdata = SDL_calloc (1, sizeof (Wayland_CursorData));
|
||||
+ if (!cdata) {
|
||||
SDL_OutOfMemory();
|
||||
SDL_free(cursor);
|
||||
return NULL;
|
||||
}
|
||||
- cursor->driverdata = (void *) data;
|
||||
+ cursor->driverdata = (void *) cdata;
|
||||
|
||||
- data->buffer = WAYLAND_wl_cursor_image_get_buffer(wlcursor->images[0]);
|
||||
- data->surface = wl_compositor_create_surface(d->compositor);
|
||||
- wl_surface_set_user_data(data->surface, NULL);
|
||||
- data->hot_x = wlcursor->images[0]->hotspot_x;
|
||||
- data->hot_y = wlcursor->images[0]->hotspot_y;
|
||||
- data->w = wlcursor->images[0]->width;
|
||||
- data->h = wlcursor->images[0]->height;
|
||||
- data->cursor= wlcursor;
|
||||
+ cdata->surface = wl_compositor_create_surface(data->compositor);
|
||||
+ wl_surface_set_user_data(cdata->surface, NULL);
|
||||
+
|
||||
+ /* Note that we can't actually set any other cursor properties, as this
|
||||
+ * is output-specific. See wayland_get_system_cursor for the rest!
|
||||
+ */
|
||||
+ cdata->system_cursor = id;
|
||||
} else {
|
||||
- SDL_OutOfMemory ();
|
||||
+ SDL_OutOfMemory();
|
||||
}
|
||||
|
||||
return cursor;
|
||||
@@ -224,66 +323,7 @@ CreateCursorFromWlCursor(SDL_VideoData *d, struct wl_cursor *wlcursor)
|
||||
static SDL_Cursor *
|
||||
Wayland_CreateDefaultCursor()
|
||||
{
|
||||
- SDL_VideoDevice *device = SDL_GetVideoDevice();
|
||||
- SDL_VideoData *data = device->driverdata;
|
||||
-
|
||||
- return CreateCursorFromWlCursor (data,
|
||||
- WAYLAND_wl_cursor_theme_get_cursor(data->cursor_theme,
|
||||
- "left_ptr"));
|
||||
-}
|
||||
-
|
||||
-static SDL_Cursor *
|
||||
-Wayland_CreateSystemCursor(SDL_SystemCursor id)
|
||||
-{
|
||||
- SDL_VideoDevice *vd = SDL_GetVideoDevice();
|
||||
- SDL_VideoData *d = vd->driverdata;
|
||||
-
|
||||
- struct wl_cursor *cursor = NULL;
|
||||
-
|
||||
- switch(id)
|
||||
- {
|
||||
- default:
|
||||
- SDL_assert(0);
|
||||
- return NULL;
|
||||
- case SDL_SYSTEM_CURSOR_ARROW:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_IBEAM:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "xterm");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_WAIT:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "watch");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_CROSSHAIR:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_WAITARROW:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "watch");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_SIZENWSE:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_SIZENESW:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_SIZEWE:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_SIZENS:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_SIZEALL:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_NO:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "xterm");
|
||||
- break;
|
||||
- case SDL_SYSTEM_CURSOR_HAND:
|
||||
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- return CreateCursorFromWlCursor(d, cursor);
|
||||
+ return Wayland_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -300,14 +340,14 @@ Wayland_FreeCursor(SDL_Cursor *cursor)
|
||||
if (!d)
|
||||
return;
|
||||
|
||||
- if (d->buffer && !d->cursor)
|
||||
+ if (d->buffer && d->shm_data)
|
||||
wl_buffer_destroy(d->buffer);
|
||||
|
||||
if (d->surface)
|
||||
wl_surface_destroy(d->surface);
|
||||
|
||||
/* Not sure what's meant to happen to shm_data */
|
||||
- SDL_free (cursor->driverdata);
|
||||
+ SDL_free(cursor->driverdata);
|
||||
SDL_free(cursor);
|
||||
}
|
||||
|
||||
@@ -317,8 +357,8 @@ Wayland_ShowCursor(SDL_Cursor *cursor)
|
||||
SDL_VideoDevice *vd = SDL_GetVideoDevice();
|
||||
SDL_VideoData *d = vd->driverdata;
|
||||
struct SDL_WaylandInput *input = d->input;
|
||||
-
|
||||
struct wl_pointer *pointer = d->pointer;
|
||||
+ float scale = 1.0f;
|
||||
|
||||
if (!pointer)
|
||||
return -1;
|
||||
@@ -327,22 +367,26 @@ Wayland_ShowCursor(SDL_Cursor *cursor)
|
||||
{
|
||||
Wayland_CursorData *data = cursor->driverdata;
|
||||
|
||||
- wl_pointer_set_cursor (pointer,
|
||||
- input->pointer_enter_serial,
|
||||
- data->surface,
|
||||
- data->hot_x,
|
||||
- data->hot_y);
|
||||
+ /* TODO: High-DPI custom cursors? -flibit */
|
||||
+ if (data->shm_data == NULL) {
|
||||
+ if (!wayland_get_system_cursor(d, data, &scale)) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ wl_surface_set_buffer_scale(data->surface, scale);
|
||||
+ wl_pointer_set_cursor(pointer,
|
||||
+ input->pointer_enter_serial,
|
||||
+ data->surface,
|
||||
+ data->hot_x / scale,
|
||||
+ data->hot_y / scale);
|
||||
wl_surface_attach(data->surface, data->buffer, 0, 0);
|
||||
wl_surface_damage(data->surface, 0, 0, data->w, data->h);
|
||||
wl_surface_commit(data->surface);
|
||||
}
|
||||
else
|
||||
{
|
||||
- wl_pointer_set_cursor (pointer,
|
||||
- input->pointer_enter_serial,
|
||||
- NULL,
|
||||
- 0,
|
||||
- 0);
|
||||
+ wl_pointer_set_cursor(pointer, input->pointer_enter_serial, NULL, 0, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -389,10 +433,12 @@ Wayland_InitMouse(void)
|
||||
}
|
||||
|
||||
void
|
||||
-Wayland_FiniMouse(void)
|
||||
+Wayland_FiniMouse(SDL_VideoData *data)
|
||||
{
|
||||
- /* This effectively assumes that nobody else
|
||||
- * touches SDL_Mouse which is effectively
|
||||
- * a singleton */
|
||||
+ int i;
|
||||
+ for (i = 0; i < data->num_cursor_themes; i += 1) {
|
||||
+ WAYLAND_wl_cursor_theme_destroy(data->cursor_themes[i].theme);
|
||||
+ }
|
||||
+ SDL_free(data->cursor_themes);
|
||||
}
|
||||
#endif /* SDL_VIDEO_DRIVER_WAYLAND */
|
||||
diff --git a/src/video/wayland/SDL_waylandmouse.h b/src/video/wayland/SDL_waylandmouse.h
|
||||
index 51bfaf5d0..79efaf7e8 100644
|
||||
--- a/src/video/wayland/SDL_waylandmouse.h
|
||||
+++ b/src/video/wayland/SDL_waylandmouse.h
|
||||
@@ -26,6 +26,6 @@
|
||||
#if SDL_VIDEO_DRIVER_WAYLAND
|
||||
|
||||
extern void Wayland_InitMouse(void);
|
||||
-extern void Wayland_FiniMouse(void);
|
||||
+extern void Wayland_FiniMouse(SDL_VideoData *data);
|
||||
|
||||
#endif
|
||||
diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c
|
||||
index 1cd67aaf4..03464d193 100644
|
||||
--- a/src/video/wayland/SDL_waylandvideo.c
|
||||
+++ b/src/video/wayland/SDL_waylandvideo.c
|
||||
@@ -495,7 +495,6 @@ display_handle_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
xdg_wm_base_add_listener(d->shell.xdg, &shell_listener_xdg, NULL);
|
||||
} else if (SDL_strcmp(interface, "wl_shm") == 0) {
|
||||
d->shm = wl_registry_bind(registry, id, &wl_shm_interface, 1);
|
||||
- d->cursor_theme = WAYLAND_wl_cursor_theme_load(NULL, 32, d->shm);
|
||||
} else if (SDL_strcmp(interface, "zwp_relative_pointer_manager_v1") == 0) {
|
||||
Wayland_display_add_relative_pointer_manager(d, id);
|
||||
} else if (SDL_strcmp(interface, "zwp_pointer_constraints_v1") == 0) {
|
||||
@@ -618,7 +617,7 @@ Wayland_VideoQuit(_THIS)
|
||||
SDL_VideoData *data = _this->driverdata;
|
||||
int i, j;
|
||||
|
||||
- Wayland_FiniMouse ();
|
||||
+ Wayland_FiniMouse(data);
|
||||
|
||||
for (i = 0; i < _this->num_displays; ++i) {
|
||||
SDL_VideoDisplay *display = &_this->displays[i];
|
||||
@@ -671,9 +670,6 @@ Wayland_VideoQuit(_THIS)
|
||||
if (data->shm)
|
||||
wl_shm_destroy(data->shm);
|
||||
|
||||
- if (data->cursor_theme)
|
||||
- WAYLAND_wl_cursor_theme_destroy(data->cursor_theme);
|
||||
-
|
||||
if (data->shell.xdg)
|
||||
xdg_wm_base_destroy(data->shell.xdg);
|
||||
|
||||
diff --git a/src/video/wayland/SDL_waylandvideo.h b/src/video/wayland/SDL_waylandvideo.h
|
||||
index 60336b6cc..2d8b6323a 100644
|
||||
--- a/src/video/wayland/SDL_waylandvideo.h
|
||||
+++ b/src/video/wayland/SDL_waylandvideo.h
|
||||
@@ -41,13 +41,19 @@ struct qt_surface_extension;
|
||||
struct qt_windowmanager;
|
||||
#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
|
||||
|
||||
+typedef struct {
|
||||
+ struct wl_cursor_theme *theme;
|
||||
+ int size;
|
||||
+} SDL_WaylandCursorTheme;
|
||||
+
|
||||
typedef struct {
|
||||
struct wl_display *display;
|
||||
int display_disconnected;
|
||||
struct wl_registry *registry;
|
||||
struct wl_compositor *compositor;
|
||||
struct wl_shm *shm;
|
||||
- struct wl_cursor_theme *cursor_theme;
|
||||
+ SDL_WaylandCursorTheme *cursor_themes;
|
||||
+ int num_cursor_themes;
|
||||
struct wl_pointer *pointer;
|
||||
struct {
|
||||
struct xdg_wm_base *xdg;
|
||||
--
|
||||
2.32.0
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
From b592e78f93b1e698b981ecf5af90e48e52e6387e Mon Sep 17 00:00:00 2001
|
||||
From: Cacodemon345 <wahil1976@outlook.com>
|
||||
Date: Sat, 25 Sep 2021 12:55:41 +0600
|
||||
Subject: [PATCH] wayland: Expose xdg_toplevel to SysWM
|
||||
|
||||
---
|
||||
include/SDL_syswm.h | 1 +
|
||||
src/video/wayland/SDL_waylanddyn.h | 1 +
|
||||
src/video/wayland/SDL_waylandsym.h | 1 +
|
||||
src/video/wayland/SDL_waylandwindow.c | 7 +++++++
|
||||
4 files changed, 10 insertions(+)
|
||||
|
||||
diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h
|
||||
index 046a096ee..0936727b1 100644
|
||||
--- a/include/SDL_syswm.h
|
||||
+++ b/include/SDL_syswm.h
|
||||
@@ -292,6 +292,7 @@ struct SDL_SysWMinfo
|
||||
void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */
|
||||
struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */
|
||||
struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */
|
||||
+ struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */
|
||||
} wl;
|
||||
#endif
|
||||
#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
|
||||
diff --git a/src/video/wayland/SDL_waylanddyn.h b/src/video/wayland/SDL_waylanddyn.h
|
||||
index 6cd527316..13b0884d0 100644
|
||||
--- a/src/video/wayland/SDL_waylanddyn.h
|
||||
+++ b/src/video/wayland/SDL_waylanddyn.h
|
||||
@@ -140,6 +140,7 @@ void SDL_WAYLAND_UnloadSymbols(void);
|
||||
#define libdecor_frame_is_floating (*WAYLAND_libdecor_frame_is_floating)
|
||||
#define libdecor_frame_set_parent (*WAYLAND_libdecor_frame_set_parent)
|
||||
#define libdecor_frame_get_xdg_surface (*WAYLAND_libdecor_frame_get_xdg_surface)
|
||||
+#define libdecor_frame_get_xdg_toplevel (*WAYLAND_libdecor_frame_get_xdg_toplevel)
|
||||
#define libdecor_frame_map (*WAYLAND_libdecor_frame_map)
|
||||
#define libdecor_state_new (*WAYLAND_libdecor_state_new)
|
||||
#define libdecor_state_free (*WAYLAND_libdecor_state_free)
|
||||
diff --git a/src/video/wayland/SDL_waylandsym.h b/src/video/wayland/SDL_waylandsym.h
|
||||
index 10602740b..40e6c99a1 100644
|
||||
--- a/src/video/wayland/SDL_waylandsym.h
|
||||
+++ b/src/video/wayland/SDL_waylandsym.h
|
||||
@@ -182,6 +182,7 @@ SDL_WAYLAND_SYM(bool, libdecor_frame_is_floating, (struct libdecor_frame *))
|
||||
SDL_WAYLAND_SYM(void, libdecor_frame_set_parent, (struct libdecor_frame *,\
|
||||
struct libdecor_frame *))
|
||||
SDL_WAYLAND_SYM(struct xdg_surface *, libdecor_frame_get_xdg_surface, (struct libdecor_frame *))
|
||||
+SDL_WAYLAND_SYM(struct xdg_toplevel *, libdecor_frame_get_xdg_toplevel, (struct libdecor_frame *))
|
||||
SDL_WAYLAND_SYM(void, libdecor_frame_map, (struct libdecor_frame *))
|
||||
SDL_WAYLAND_SYM(struct libdecor_state *, libdecor_state_new, (int, int))
|
||||
SDL_WAYLAND_SYM(void, libdecor_state_free, (struct libdecor_state *))
|
||||
diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c
|
||||
index 451d33b76..2dd251aba 100644
|
||||
--- a/src/video/wayland/SDL_waylandwindow.c
|
||||
+++ b/src/video/wayland/SDL_waylandwindow.c
|
||||
@@ -639,12 +639,19 @@ Wayland_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info)
|
||||
#ifdef HAVE_LIBDECOR_H
|
||||
if (viddata->shell.libdecor && data->shell_surface.libdecor.frame != NULL) {
|
||||
info->info.wl.xdg_surface = libdecor_frame_get_xdg_surface(data->shell_surface.libdecor.frame);
|
||||
+ if (version >= SDL_VERSIONNUM(2, 0, 17)) {
|
||||
+ info->info.wl.xdg_toplevel = libdecor_frame_get_xdg_toplevel(data->shell_surface.libdecor.frame);
|
||||
+ }
|
||||
} else
|
||||
#endif
|
||||
if (viddata->shell.xdg && data->shell_surface.xdg.surface != NULL) {
|
||||
info->info.wl.xdg_surface = data->shell_surface.xdg.surface;
|
||||
+ if (version >= SDL_VERSIONNUM(2, 0, 17)) {
|
||||
+ info->info.wl.xdg_toplevel = data->shell_surface.xdg.roleobj.toplevel;
|
||||
+ }
|
||||
} else {
|
||||
info->info.wl.xdg_surface = NULL;
|
||||
+ info->info.wl.xdg_toplevel = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.32.0
|
||||
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
From 1a4e2e5ef7425d44a0faa4ad5535e69f7c0b962c Mon Sep 17 00:00:00 2001
|
||||
From: Ethan Lee <flibitijibibo@gmail.com>
|
||||
Date: Thu, 23 Sep 2021 14:31:54 -0400
|
||||
Subject: [PATCH] wayland: For text, ignore key events when Ctrl is held
|
||||
|
||||
Fixes #4695
|
||||
---
|
||||
src/video/wayland/SDL_waylandevents.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c
|
||||
index f021c3adc..82df0fb05 100644
|
||||
--- a/src/video/wayland/SDL_waylandevents.c
|
||||
+++ b/src/video/wayland/SDL_waylandevents.c
|
||||
@@ -839,7 +839,7 @@ keyboard_handle_key(void *data, struct wl_keyboard *keyboard,
|
||||
}
|
||||
|
||||
if (state == WL_KEYBOARD_KEY_STATE_PRESSED) {
|
||||
- if (has_text) {
|
||||
+ if (has_text && !(SDL_GetModState() & KMOD_CTRL)) {
|
||||
Wayland_data_device_set_serial(input->data_device, serial);
|
||||
if (!handled_by_ime) {
|
||||
SDL_SendKeyboardText(text);
|
||||
--
|
||||
2.32.0
|
||||
|
||||
-104
@@ -1,104 +0,0 @@
|
||||
From 7ed415d2edfa44e554605a0b5616c836680756ed Mon Sep 17 00:00:00 2001
|
||||
From: Ethan Lee <flibitijibibo@gmail.com>
|
||||
Date: Thu, 23 Sep 2021 14:07:38 -0400
|
||||
Subject: [PATCH] wayland: Reuse KeySymToUcs4 to replicate X11 keymap behavior
|
||||
|
||||
---
|
||||
src/{video/x11 => events}/imKStoUCS.c | 7 +++----
|
||||
src/{video/x11 => events}/imKStoUCS.h | 2 +-
|
||||
src/video/wayland/SDL_waylandevents.c | 3 ++-
|
||||
src/video/x11/SDL_x11keyboard.c | 4 ++--
|
||||
4 files changed, 8 insertions(+), 8 deletions(-)
|
||||
rename src/{video/x11 => events}/imKStoUCS.c (99%)
|
||||
rename src/{video/x11 => events}/imKStoUCS.h (96%)
|
||||
|
||||
diff --git a/src/video/x11/imKStoUCS.c b/src/events/imKStoUCS.c
|
||||
similarity index 99%
|
||||
rename from src/video/x11/imKStoUCS.c
|
||||
rename to src/events/imKStoUCS.c
|
||||
index 40e224243..4aa85d423 100644
|
||||
--- a/src/video/x11/imKStoUCS.c
|
||||
+++ b/src/events/imKStoUCS.c
|
||||
@@ -24,10 +24,9 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
-#include "../../SDL_internal.h"
|
||||
+#include "../SDL_internal.h"
|
||||
|
||||
-#if SDL_VIDEO_DRIVER_X11
|
||||
-#include <X11/X.h>
|
||||
+#if SDL_VIDEO_DRIVER_X11 || SDL_VIDEO_DRIVER_WAYLAND
|
||||
#include "imKStoUCS.h"
|
||||
|
||||
static unsigned short const keysym_to_unicode_1a1_1ff[] = {
|
||||
@@ -294,7 +293,7 @@ static unsigned short const keysym_to_unicode_20a0_20ac[] = {
|
||||
};
|
||||
|
||||
unsigned int
|
||||
-X11_KeySymToUcs4(KeySym keysym)
|
||||
+SDL_KeySymToUcs4(Uint32 keysym)
|
||||
{
|
||||
/* 'Unicode keysym' */
|
||||
if ((keysym & 0xff000000) == 0x01000000)
|
||||
diff --git a/src/video/x11/imKStoUCS.h b/src/events/imKStoUCS.h
|
||||
similarity index 96%
|
||||
rename from src/video/x11/imKStoUCS.h
|
||||
rename to src/events/imKStoUCS.h
|
||||
index fe4381d98..485ace59f 100644
|
||||
--- a/src/video/x11/imKStoUCS.h
|
||||
+++ b/src/events/imKStoUCS.h
|
||||
@@ -27,6 +27,6 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
-extern unsigned int X11_KeySymToUcs4(KeySym keysym);
|
||||
+extern unsigned int SDL_KeySymToUcs4(Uint32 keysym);
|
||||
|
||||
#endif /* _imKStoUCS_h */
|
||||
diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c
|
||||
index 82df0fb05..4cfd0f1cd 100644
|
||||
--- a/src/video/wayland/SDL_waylandevents.c
|
||||
+++ b/src/video/wayland/SDL_waylandevents.c
|
||||
@@ -60,6 +60,7 @@
|
||||
#include <unistd.h>
|
||||
#include <xkbcommon/xkbcommon.h>
|
||||
#include <xkbcommon/xkbcommon-compose.h>
|
||||
+#include "../../events/imKStoUCS.h"
|
||||
|
||||
/* Weston uses a ratio of 10 units per scroll tick */
|
||||
#define WAYLAND_WHEEL_AXIS_UNIT 10
|
||||
@@ -870,7 +871,7 @@ Wayland_keymap_iter(struct xkb_keymap *keymap, xkb_keycode_t key, void *data)
|
||||
}
|
||||
|
||||
if (WAYLAND_xkb_keymap_key_get_syms_by_level(keymap, key, sdlKeymap->layout, 0, &syms) > 0) {
|
||||
- uint32_t keycode = WAYLAND_xkb_keysym_to_utf32(syms[0]);
|
||||
+ uint32_t keycode = SDL_KeySymToUcs4(syms[0]);
|
||||
if (keycode) {
|
||||
sdlKeymap->keymap[scancode] = keycode;
|
||||
} else {
|
||||
diff --git a/src/video/x11/SDL_x11keyboard.c b/src/video/x11/SDL_x11keyboard.c
|
||||
index bcc994f9f..2d8c24ccc 100644
|
||||
--- a/src/video/x11/SDL_x11keyboard.c
|
||||
+++ b/src/video/x11/SDL_x11keyboard.c
|
||||
@@ -31,7 +31,7 @@
|
||||
#include <X11/keysym.h>
|
||||
#include <X11/XKBlib.h>
|
||||
|
||||
-#include "imKStoUCS.h"
|
||||
+#include "../../events/imKStoUCS.h"
|
||||
|
||||
#ifdef X_HAVE_UTF8_STRING
|
||||
#include <locale.h>
|
||||
@@ -205,7 +205,7 @@ X11_KeyCodeToUcs4(_THIS, KeyCode keycode, unsigned char group)
|
||||
return 0;
|
||||
}
|
||||
|
||||
- return X11_KeySymToUcs4(keysym);
|
||||
+ return SDL_KeySymToUcs4(keysym);
|
||||
}
|
||||
|
||||
KeySym
|
||||
--
|
||||
2.32.0
|
||||
|
||||
-24
@@ -1,24 +0,0 @@
|
||||
From 9b74623be9a4dc97bac905c69bea042df6e0b1ac Mon Sep 17 00:00:00 2001
|
||||
From: Ethan Lee <flibitijibibo@gmail.com>
|
||||
Date: Wed, 22 Sep 2021 13:52:36 -0400
|
||||
Subject: [PATCH 2/2] wayland: Woops, forgot to assign cursor theme size...
|
||||
|
||||
---
|
||||
src/video/wayland/SDL_waylandmouse.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c
|
||||
index 23663ebe1..ead346ee2 100644
|
||||
--- a/src/video/wayland/SDL_waylandmouse.c
|
||||
+++ b/src/video/wayland/SDL_waylandmouse.c
|
||||
@@ -95,6 +95,7 @@ wayland_get_system_cursor(SDL_VideoData *vdata, Wayland_CursorData *cdata, float
|
||||
return SDL_FALSE;
|
||||
}
|
||||
theme = WAYLAND_wl_cursor_theme_load(NULL, size, vdata->shm);
|
||||
+ vdata->cursor_themes[vdata->num_cursor_themes].size = size;
|
||||
vdata->cursor_themes[vdata->num_cursor_themes++].theme = theme;
|
||||
}
|
||||
|
||||
--
|
||||
2.32.0
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
From 68d8a2c6b4f732920df40bd79dc3c18b71a4a349 Mon Sep 17 00:00:00 2001
|
||||
From: Neal Gompa <ngompa@fedoraproject.org>
|
||||
Date: Fri, 29 Apr 2022 23:39:39 -0400
|
||||
Subject: [PATCH] Revert "Revert "video: Prefer Wayland over X11""
|
||||
|
||||
For Fedora/RHEL, we want to continue using Wayland by default.
|
||||
|
||||
The majority of issues around Wayland by default seem to center
|
||||
around cases that are issues for the Steam Runtime's bundled
|
||||
copy of SDL and proprietary games that depend on that runtime.
|
||||
|
||||
These issues do not apply to us.
|
||||
|
||||
This reverts commit 254fcc90eb22bb159ab365ad956222a9c5632841.
|
||||
---
|
||||
src/video/SDL_video.c | 24 ++++++++++++------------
|
||||
1 file changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
|
||||
index 2b896c44b..6f31f4c9e 100644
|
||||
--- a/src/video/SDL_video.c
|
||||
+++ b/src/video/SDL_video.c
|
||||
@@ -61,12 +61,12 @@ static VideoBootStrap *bootstrap[] = {
|
||||
#if SDL_VIDEO_DRIVER_COCOA
|
||||
&COCOA_bootstrap,
|
||||
#endif
|
||||
-#if SDL_VIDEO_DRIVER_X11
|
||||
- &X11_bootstrap,
|
||||
-#endif
|
||||
#if SDL_VIDEO_DRIVER_WAYLAND
|
||||
&Wayland_bootstrap,
|
||||
#endif
|
||||
+#if SDL_VIDEO_DRIVER_X11
|
||||
+ &X11_bootstrap,
|
||||
+#endif
|
||||
#if SDL_VIDEO_DRIVER_VIVANTE
|
||||
&VIVANTE_bootstrap,
|
||||
#endif
|
||||
@@ -4275,12 +4275,12 @@ SDL_IsScreenKeyboardShown(SDL_Window *window)
|
||||
#if SDL_VIDEO_DRIVER_UIKIT
|
||||
#include "uikit/SDL_uikitmessagebox.h"
|
||||
#endif
|
||||
-#if SDL_VIDEO_DRIVER_X11
|
||||
-#include "x11/SDL_x11messagebox.h"
|
||||
-#endif
|
||||
#if SDL_VIDEO_DRIVER_WAYLAND
|
||||
#include "wayland/SDL_waylandmessagebox.h"
|
||||
#endif
|
||||
+#if SDL_VIDEO_DRIVER_X11
|
||||
+#include "x11/SDL_x11messagebox.h"
|
||||
+#endif
|
||||
#if SDL_VIDEO_DRIVER_HAIKU
|
||||
#include "haiku/SDL_bmessagebox.h"
|
||||
#endif
|
||||
@@ -4388,17 +4388,17 @@ SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
|
||||
retval = 0;
|
||||
}
|
||||
#endif
|
||||
-#if SDL_VIDEO_DRIVER_X11
|
||||
+#if SDL_VIDEO_DRIVER_WAYLAND
|
||||
if (retval == -1 &&
|
||||
- SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_X11) &&
|
||||
- X11_ShowMessageBox(messageboxdata, buttonid) == 0) {
|
||||
+ SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_WAYLAND) &&
|
||||
+ Wayland_ShowMessageBox(messageboxdata, buttonid) == 0) {
|
||||
retval = 0;
|
||||
}
|
||||
#endif
|
||||
-#if SDL_VIDEO_DRIVER_WAYLAND
|
||||
+#if SDL_VIDEO_DRIVER_X11
|
||||
if (retval == -1 &&
|
||||
- SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_WAYLAND) &&
|
||||
- Wayland_ShowMessageBox(messageboxdata, buttonid) == 0) {
|
||||
+ SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_X11) &&
|
||||
+ X11_ShowMessageBox(messageboxdata, buttonid) == 0) {
|
||||
retval = 0;
|
||||
}
|
||||
#endif
|
||||
--
|
||||
2.35.1
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
diff -up SDL2-2.0.9/include/SDL_opengl_glext.h.khrplatform SDL2-2.0.9/include/SDL_opengl_glext.h
|
||||
--- SDL2-2.0.9/include/SDL_opengl_glext.h.khrplatform 2019-02-15 20:22:39.173773779 -0500
|
||||
+++ SDL2-2.0.9/include/SDL_opengl_glext.h 2019-02-15 20:22:58.176399330 -0500
|
||||
@@ -469,8 +469,9 @@ GLAPI void APIENTRY glBlendEquation (GLe
|
||||
typedef long GLsizeiptr;
|
||||
typedef long GLintptr;
|
||||
#else
|
||||
-typedef ptrdiff_t GLsizeiptr;
|
||||
-typedef ptrdiff_t GLintptr;
|
||||
+#include <KHR/khrplatform.h>
|
||||
+typedef khronos_intptr_t GLintptr;
|
||||
+typedef khronos_ssize_t GLsizeiptr;
|
||||
#endif
|
||||
#define GL_BUFFER_SIZE 0x8764
|
||||
#define GL_BUFFER_USAGE 0x8765
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>Simple Direct Media Layer 2.0 series</Summary>
|
||||
<Description>libsdl is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.</Description>
|
||||
<Archive type="targz" sha1sum="57825428174adb2ac947e4014080c262505aa972">https://www.libsdl.org/release/SDL2-2.0.16.tar.gz</Archive>
|
||||
<Archive type="targz" sha1sum="6d48fa72f8ba46363ef205b005b4d14a69ffeac1">https://www.libsdl.org/release/SDL2-2.24.1.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>DirectFB-devel</Dependency>
|
||||
<Dependency>alsa-lib-devel</Dependency>
|
||||
@@ -37,14 +37,7 @@
|
||||
<Dependency>pulseaudio-libs-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">25cd749.patch</Patch>
|
||||
<Patch level="1">fedora/0001-audio-Support-pulse-as-an-alias-for-pulseaudio.patch</Patch>
|
||||
<Patch level="1">fedora/0001-video-wayland-use-EGL_EXT_present_opaque-when-availa.patch</Patch>
|
||||
<Patch level="1">fedora/0001-wayland-Add-support-for-high-DPI-cursors.patch</Patch>
|
||||
<Patch level="1">fedora/0001-wayland-Expose-xdg_toplevel-to-SysWM.patch</Patch>
|
||||
<Patch level="1">fedora/0001-wayland-For-text-ignore-key-events-when-Ctrl-is-held.patch</Patch>
|
||||
<Patch level="1">fedora/0001-wayland-Reuse-KeySymToUcs4-to-replicate-X11-keymap-b.patch</Patch>
|
||||
<Patch level="1">fedora/0002-wayland-Woops-forgot-to-assign-cursor-theme-size.patch</Patch>
|
||||
<Patch level="1">fedora/SDL2-2.0.9-khrplatform.patch</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -128,6 +121,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="11">
|
||||
<Date>2022-10-10</Date>
|
||||
<Version>2.24.1</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Mustafa Cinasal</Name>
|
||||
<Email>muscnsl@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="10">
|
||||
<Date>2021-10-24</Date>
|
||||
<Version>2.0.16</Version>
|
||||
|
||||
Reference in New Issue
Block a user