summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntonio Orefice2015-06-09 08:37:09 +0200
committerAntonio Orefice2015-06-09 08:37:09 +0200
commit5ab1604b30251761801e35f086086019add0ab5a (patch)
treea9dbb884ea32a495799c4273623a8f1984c3aa15
downloadaur-lib32-sdl-nobackingstore.tar.gz
Initial import
-rw-r--r--.SRCINFO39
-rw-r--r--PKGBUILD63
-rw-r--r--X11_KeyToUnicode.patch52
-rw-r--r--backingstore_on_demand.diff16
-rw-r--r--fix_joystick_misc_axes.diff13
-rw-r--r--libsdl-1.2.15-resizing.patch63
-rw-r--r--message.install24
-rw-r--r--sdl-1.2.14-disable-mmx.patch13
-rw-r--r--sdl-1.2.14-fix-mouse-clicking.patch23
9 files changed, 306 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 00000000000..5742715a757
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,39 @@
+pkgbase = lib32-sdl-nobackingstore
+ pkgdesc = sdl library that does not use backing store by default (prevent tearing due to a bug in Xserver)
+ pkgver = 1.2.15
+ pkgrel = 4
+ url = http://www.libsdl.org
+ install = message.install
+ arch = x86_64
+ license = LGPL
+ makedepends = lib32-alsa-lib
+ makedepends = lib32-mesa
+ makedepends = lib32-libpulse
+ makedepends = gcc-multilib
+ depends = lib32-libxext
+ depends = lib32-libxrender
+ depends = lib32-libx11
+ depends = sdl
+ optdepends = lib32-alsa-lib: ALSA audio driver
+ optdepends = lib32-libpulse: PulseAudio audio driver
+ provides = lib32-sdl=1.2.15
+ conflicts = lib32-sdl
+ replaces = lib32-sdl
+ options = !libtool
+ source = http://www.libsdl.org/release/SDL-1.2.15.tar.gz
+ source = sdl-1.2.14-fix-mouse-clicking.patch
+ source = sdl-1.2.14-disable-mmx.patch
+ source = fix_joystick_misc_axes.diff
+ source = backingstore_on_demand.diff
+ source = libsdl-1.2.15-resizing.patch
+ source = X11_KeyToUnicode.patch
+ md5sums = 9d96df8417572a2afb781a7c4c811a85
+ md5sums = 04d8c179f125e04bcd4c9d60e013c2d7
+ md5sums = e5c16b7611f62c7cb25f0534eff68852
+ md5sums = 687586a108b597a2a6b73070c1d37e51
+ md5sums = 5f81abefba5713c2ebfc21b2a1e6e044
+ md5sums = 3dd50347d8856160a9cbd7f80383a1f8
+ md5sums = edea272dff4698470877c016d818918d
+
+pkgname = lib32-sdl-nobackingstore
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 00000000000..6b41a631a51
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,63 @@
+# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+_pkgbasename=sdl
+pkgname=lib32-$_pkgbasename-nobackingstore
+pkgver=1.2.15
+pkgrel=4
+pkgdesc="sdl library that does not use backing store by default (prevent tearing due to a bug in Xserver)"
+arch=('x86_64')
+url="http://www.libsdl.org"
+license=('LGPL')
+depends=('lib32-libxext' 'lib32-libxrender' 'lib32-libx11' $_pkgbasename)
+makedepends=('lib32-alsa-lib' 'lib32-mesa' 'lib32-libpulse' gcc-multilib)
+optdepends=('lib32-alsa-lib: ALSA audio driver'
+ 'lib32-libpulse: PulseAudio audio driver')
+provides=("lib32-sdl=$pkgver")
+replaces=('lib32-sdl')
+conflicts=('lib32-sdl')
+options=('!libtool')
+install="message.install"
+source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz
+ sdl-1.2.14-fix-mouse-clicking.patch
+ sdl-1.2.14-disable-mmx.patch
+ fix_joystick_misc_axes.diff
+ backingstore_on_demand.diff
+ libsdl-1.2.15-resizing.patch
+ X11_KeyToUnicode.patch)
+
+md5sums=('9d96df8417572a2afb781a7c4c811a85'
+ '04d8c179f125e04bcd4c9d60e013c2d7'
+ 'e5c16b7611f62c7cb25f0534eff68852'
+ '687586a108b597a2a6b73070c1d37e51'
+ '5f81abefba5713c2ebfc21b2a1e6e044'
+ '3dd50347d8856160a9cbd7f80383a1f8'
+ 'edea272dff4698470877c016d818918d')
+build() {
+ export CC="gcc -m32"
+ export CXX="g++ -m32"
+ export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
+
+ cd SDL-$pkgver
+ patch -Np1 -i ../sdl-1.2.14-fix-mouse-clicking.patch
+ patch -Np1 -i ../sdl-1.2.14-disable-mmx.patch
+ patch -Np1 -i ../backingstore_on_demand.diff
+ patch -Np1 -i ../fix_joystick_misc_axes.diff
+ patch -Np1 -i ../libsdl-1.2.15-resizing.patch
+ patch -Np1 -i ../X11_KeyToUnicode.patch
+ ./configure --prefix=/usr --disable-nasm --enable-alsa \
+ --with-x --disable-rpath --disable-static --libdir=/usr/lib32
+ make
+}
+
+package() {
+ cd SDL-$pkgver
+ make DESTDIR="$pkgdir" install
+
+ rm -rf "$pkgdir"/usr/{include,share}
+
+ cd "$pkgdir/usr/bin"
+ mv sdl-config sdl-config-32
+}
diff --git a/X11_KeyToUnicode.patch b/X11_KeyToUnicode.patch
new file mode 100644
index 00000000000..5f0f325b1a0
--- /dev/null
+++ b/X11_KeyToUnicode.patch
@@ -0,0 +1,52 @@
+
+# HG changeset patch
+# User Sam Lantinga <slouken@libsdl.org>
+# Date 1327258041 18000
+# Node ID 900a0fae90ca65cff55a70a17b9ec39d2ddccbcf
+# Parent 5273dfd19a5e8c5736a0d417bd441f704c5355f8
+Fixed bug 1390 - X11_KeyToUnicode
+
+manuel.montezelo 2012-01-22 08:56:18 PST
+
+We had the following bug report at Debian:
+http://bugs.debian.org/376560
+
+Same one in Ubuntu:
+https://bugs.launchpad.net/ubuntu/+source/libsdl1.2/+bug/66217
+
+We've been including a patch since then (attached) to actually export the
+symbol, since 2006. In the last release the function seems to be there, alive
+and kicking.
+
+It's affecting other people too:
+http://www.garagegames.com/community/forums/viewthread/52287
+
+diff -r 5273dfd19a5e -r 900a0fae90ca src/video/x11/SDL_x11events.c
+--- a/src/video/x11/SDL_x11events.c Sat Jan 21 12:06:51 2012 -0500
++++ b/src/video/x11/SDL_x11events.c Sun Jan 22 13:47:21 2012 -0500
+@@ -1246,8 +1246,11 @@
+ * 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;
+@@ -1255,6 +1258,12 @@
+ 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;
+ }
+
diff --git a/backingstore_on_demand.diff b/backingstore_on_demand.diff
new file mode 100644
index 00000000000..dc3066fc31f
--- /dev/null
+++ b/backingstore_on_demand.diff
@@ -0,0 +1,16 @@
+--- a/src/video/x11/SDL_x11video.c 2014-02-03 09:19:06.152761230 +0100
++++ b/src/video/x11/SDL_x11video.c 2014-02-03 09:14:40.062762569 +0100
+@@ -1088,11 +1088,10 @@
+ }
+ }
+
+-#if 0 /* This is an experiment - are the graphics faster now? - nope. */
+ if ( SDL_getenv("SDL_VIDEO_X11_BACKINGSTORE") )
+-#endif
+- /* Cache the window in the server, when possible */
++ /* Cache the window in the server, on request */
+ {
++ printf("Backingstore is on.\n");
+ Screen *xscreen;
+ XSetWindowAttributes a;
+
diff --git a/fix_joystick_misc_axes.diff b/fix_joystick_misc_axes.diff
new file mode 100644
index 00000000000..75e3755c93c
--- /dev/null
+++ b/fix_joystick_misc_axes.diff
@@ -0,0 +1,13 @@
+diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c
+index ee43974..80e46e4 100644
+--- a/src/joystick/linux/SDL_sysjoystick.c
++++ b/src/joystick/linux/SDL_sysjoystick.c
+@@ -702,7 +702,7 @@ static SDL_bool EV_ConfigJoystick(SDL_Joystick *joystick, int fd)
+ ++joystick->nbuttons;
+ }
+ }
+- for ( i=0; i<ABS_MISC; ++i ) {
++ for ( i=0; i<ABS_MAX; ++i ) {
+ /* Skip hats */
+ if ( i == ABS_HAT0X ) {
+ i = ABS_HAT3Y;
diff --git a/libsdl-1.2.15-resizing.patch b/libsdl-1.2.15-resizing.patch
new file mode 100644
index 00000000000..0655a13e137
--- /dev/null
+++ b/libsdl-1.2.15-resizing.patch
@@ -0,0 +1,63 @@
+Description: Revert change that breaks window corner resizing
+ http://bugzilla.libsdl.org/show_bug.cgi?id=1430
+Author: Andrew Caudwell <acaudwell@gmail.com>
+Last-Update: 2012-04-10
+Bug-Debian: http://bugs.debian.org/665779
+
+diff -r c787fb1b5699 src/video/x11/SDL_x11events.c
+--- a/src/video/x11/SDL_x11events.c Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11events.c Mon Mar 26 12:26:52 2012 +1300
+@@ -57,12 +57,6 @@
+ static SDLKey MISC_keymap[256];
+ SDLKey X11_TranslateKeycode(Display *display, KeyCode kc);
+
+-/*
+- Pending resize target for ConfigureNotify (so outdated events don't
+- cause inappropriate resize events)
+-*/
+-int X11_PendingConfigureNotifyWidth = -1;
+-int X11_PendingConfigureNotifyHeight = -1;
+
+ #ifdef X_HAVE_UTF8_STRING
+ Uint32 Utf8ToUcs4(const Uint8 *utf8)
+@@ -825,16 +819,6 @@
+ #ifdef DEBUG_XEVENTS
+ printf("ConfigureNotify! (resize: %dx%d)\n", xevent.xconfigure.width, xevent.xconfigure.height);
+ #endif
+- if ((X11_PendingConfigureNotifyWidth != -1) &&
+- (X11_PendingConfigureNotifyHeight != -1)) {
+- if ((xevent.xconfigure.width != X11_PendingConfigureNotifyWidth) &&
+- (xevent.xconfigure.height != X11_PendingConfigureNotifyHeight)) {
+- /* Event is from before the resize, so ignore. */
+- break;
+- }
+- X11_PendingConfigureNotifyWidth = -1;
+- X11_PendingConfigureNotifyHeight = -1;
+- }
+ if ( SDL_VideoSurface ) {
+ if ((xevent.xconfigure.width != SDL_VideoSurface->w) ||
+ (xevent.xconfigure.height != SDL_VideoSurface->h)) {
+diff -r c787fb1b5699 src/video/x11/SDL_x11events_c.h
+--- a/src/video/x11/SDL_x11events_c.h Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11events_c.h Mon Mar 26 12:26:52 2012 +1300
+@@ -27,8 +27,3 @@
+ extern void X11_InitOSKeymap(_THIS);
+ extern void X11_PumpEvents(_THIS);
+ extern void X11_SetKeyboardState(Display *display, const char *key_vec);
+-
+-/* Variables to be exported */
+-extern int X11_PendingConfigureNotifyWidth;
+-extern int X11_PendingConfigureNotifyHeight;
+-
+diff -r c787fb1b5699 src/video/x11/SDL_x11video.c
+--- a/src/video/x11/SDL_x11video.c Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11video.c Mon Mar 26 12:26:52 2012 +1300
+@@ -1182,8 +1182,6 @@
+ current = NULL;
+ goto done;
+ }
+- X11_PendingConfigureNotifyWidth = width;
+- X11_PendingConfigureNotifyHeight = height;
+ } else {
+ if (X11_CreateWindow(this,current,width,height,bpp,flags) < 0) {
+ current = NULL;
diff --git a/message.install b/message.install
new file mode 100644
index 00000000000..4ce5d7949f6
--- /dev/null
+++ b/message.install
@@ -0,0 +1,24 @@
+post_install() {
+ echo
+ echo
+ echo 'https://bugs.freedesktop.org/show_bug.cgi?id=74158'
+ echo
+ echo 'To enable backing store, please export SDL_VIDEO_X11_BACKINGSTORE=1'
+ echo 'To disable backing store, please unset SDL_VIDEO_X11_BACKINGSTORE'
+ echo 'if backing store is enabled, a message in the terminal will say it.'
+ echo
+ echo
+}
+
+post_upgrade() {
+ echo
+ echo
+ echo 'https://bugs.freedesktop.org/show_bug.cgi?id=74158'
+ echo
+ echo 'To enable backing store, please export SDL_VIDEO_X11_BACKINGSTORE=1'
+ echo 'To disable backing store, please unset SDL_VIDEO_X11_BACKINGSTORE'
+ echo 'if backing store is enabled, a message in the terminal will say it.'
+ echo
+ echo
+}
+
diff --git a/sdl-1.2.14-disable-mmx.patch b/sdl-1.2.14-disable-mmx.patch
new file mode 100644
index 00000000000..1bb6e0e47e0
--- /dev/null
+++ b/sdl-1.2.14-disable-mmx.patch
@@ -0,0 +1,13 @@
+# and another one from FS#26020
+
+--- a/src/video/SDL_yuv_sw.c 2009-10-13 06:07:15.000000000 +0700
++++ b/src/video/SDL_yuv_sw.c 2011-09-20 19:26:30.247742620 +0700
+@@ -89,6 +89,8 @@
+ #include "SDL_yuvfuncs.h"
+ #include "SDL_yuv_sw_c.h"
+
++#undef __OPTIMIZE__
++
+ /* The functions used to manipulate software video overlays */
+ static struct private_yuvhwfuncs sw_yuvfuncs = {
+ SDL_LockYUV_SW,
diff --git a/sdl-1.2.14-fix-mouse-clicking.patch b/sdl-1.2.14-fix-mouse-clicking.patch
new file mode 100644
index 00000000000..7d3e5acfc14
--- /dev/null
+++ b/sdl-1.2.14-fix-mouse-clicking.patch
@@ -0,0 +1,23 @@
+--- SDL-1.2.14/src/video/x11/SDL_x11events.c.orig 2010-04-08 11:57:05.003169834 -0700
++++ SDL-1.2.14/src/video/x11/SDL_x11events.c 2010-04-08 12:33:51.690926340 -0700
+@@ -423,12 +423,15 @@
+ if ( xevent.xcrossing.mode == NotifyUngrab )
+ printf("Mode: NotifyUngrab\n");
+ #endif
+- if ( this->input_grab == SDL_GRAB_OFF ) {
+- posted = SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS);
++ if ( (xevent.xcrossing.mode != NotifyGrab) &&
++ (xevent.xcrossing.mode != NotifyUngrab) ) {
++ if ( this->input_grab == SDL_GRAB_OFF ) {
++ posted = SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS);
++ }
++ posted = SDL_PrivateMouseMotion(0, 0,
++ xevent.xcrossing.x,
++ xevent.xcrossing.y);
+ }
+- posted = SDL_PrivateMouseMotion(0, 0,
+- xevent.xcrossing.x,
+- xevent.xcrossing.y);
+ }
+ break;
+