Date: Saturday, September 27, 2014 @ 23:07:22
  Author: heftig
Revision: 223594

import most of Fedora's patches; FS#39227

Added:
  sdl/trunk/SDL-1.2.10-GrabNotViewable.patch
  sdl/trunk/SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch
  sdl/trunk/SDL-1.2.15-const_XData32.patch
  sdl/trunk/SDL-1.2.15-ignore_insane_joystick_axis.patch
  sdl/trunk/SDL-1.2.15-no-default-backing-store.patch
  sdl/trunk/SDL-1.2.15-x11-Bypass-SetGammaRamp-when-changing-gamma.patch
Modified:
  sdl/trunk/PKGBUILD
Deleted:
  sdl/trunk/fix_joystick_misc_axes.diff
  sdl/trunk/sdl_x11sym.patch

--------------------------------------------------------------+
 PKGBUILD                                                     |   29 +++
 SDL-1.2.10-GrabNotViewable.patch                             |   22 +++
 SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch     |   73 ++++++++++
 SDL-1.2.15-const_XData32.patch                               |   16 ++
 SDL-1.2.15-ignore_insane_joystick_axis.patch                 |   20 ++
 SDL-1.2.15-no-default-backing-store.patch                    |   24 +++
 SDL-1.2.15-x11-Bypass-SetGammaRamp-when-changing-gamma.patch |   44 ++++++
 fix_joystick_misc_axes.diff                                  |   13 -
 sdl_x11sym.patch                                             |   12 -
 9 files changed, 221 insertions(+), 32 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2014-09-27 20:47:56 UTC (rev 223593)
+++ PKGBUILD    2014-09-27 21:07:22 UTC (rev 223594)
@@ -5,7 +5,7 @@
 
 pkgname=sdl
 pkgver=1.2.15
-pkgrel=6
+pkgrel=7
 pkgdesc="A library for portable low-level access to a video framebuffer, audio 
output, mouse, and keyboard"
 arch=('i686' 'x86_64')
 url="http://www.libsdl.org";
@@ -16,27 +16,42 @@
             'libpulse: PulseAudio audio driver')
 options=('staticlibs')
 source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz
+        SDL-1.2.10-GrabNotViewable.patch
+        SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch
+        SDL-1.2.15-const_XData32.patch
+        SDL-1.2.15-ignore_insane_joystick_axis.patch
+        SDL-1.2.15-no-default-backing-store.patch
+        SDL-1.2.15-x11-Bypass-SetGammaRamp-when-changing-gamma.patch
         sdl-1.2.14-fix-mouse-clicking.patch
         sdl-1.2.14-disable-mmx.patch
-        fix_joystick_misc_axes.diff
         libsdl-1.2.15-resizing.patch
-        sdl_x11sym.patch
         X11_KeyToUnicode.patch)
 md5sums=('9d96df8417572a2afb781a7c4c811a85'
+         '37ad001a4d2ff924a5fab356b49f8a78'
+         '8d5a61a0adf1a302695a30141f402712'
+         'd6a1bfa054507f281338626e5f12d74b'
+         'e382e5b7449e95969c5ba4084b0aab39'
+         '1b0578c76453813eb4eaf0125ce242db'
+         '321377e38e2db7f1baf43c392e165dd5'
          '04d8c179f125e04bcd4c9d60e013c2d7'
          'e5c16b7611f62c7cb25f0534eff68852'
-         '687586a108b597a2a6b73070c1d37e51'
          '3dd50347d8856160a9cbd7f80383a1f8'
-         '148b285bccee9d21bb96db807363b962'
          'edea272dff4698470877c016d818918d')
 
 prepare() {
   cd SDL-$pkgver
+  patch -Np1 -i ../SDL-1.2.10-GrabNotViewable.patch
+  patch -Np1 -i ../SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch
+  patch -Np1 -i ../SDL-1.2.15-const_XData32.patch
+  patch -Np1 -i ../SDL-1.2.15-ignore_insane_joystick_axis.patch
+  patch -Np1 -i ../SDL-1.2.15-no-default-backing-store.patch
+
+  # https://bugs.freedesktop.org/show_bug.cgi?id=27222
+  patch -Np1 -i ../SDL-1.2.15-x11-Bypass-SetGammaRamp-when-changing-gamma.patch
+
   patch -Np1 -i ../sdl-1.2.14-fix-mouse-clicking.patch
   patch -Np1 -i ../sdl-1.2.14-disable-mmx.patch
-  patch -Np1 -i ../fix_joystick_misc_axes.diff
   patch -Np1 -i ../libsdl-1.2.15-resizing.patch
-  patch -Np0 -i ../sdl_x11sym.patch
   patch -Np1 -i ../X11_KeyToUnicode.patch
 }
 

Added: SDL-1.2.10-GrabNotViewable.patch
===================================================================
--- SDL-1.2.10-GrabNotViewable.patch                            (rev 0)
+++ SDL-1.2.10-GrabNotViewable.patch    2014-09-27 21:07:22 UTC (rev 223594)
@@ -0,0 +1,22 @@
+Makes SDL-1.2 SDL_WM_GrabInput() non-blocking in case of SDL window is not
+viewable. Patch provided by <[email protected]>.
+See <http://bugzilla.libsdl.org/show_bug.cgi?id=1155>.
+
+--- ./src/video/x11/SDL_x11wm.c        2007-12-31 04:48:13.000000000 +0000
++++ ./src/video/x11/SDL_x11wm.c        2009-01-15 10:27:14.000000000 +0000
+@@ -351,13 +351,14 @@ SDL_GrabMode X11_GrabInputNoLock(_THIS, 
+                       result = XGrabPointer(SDL_Display, SDL_Window, True, 0,
+                                               GrabModeAsync, GrabModeAsync,
+                                               SDL_Window, None, CurrentTime);
+-                      if ( result == GrabSuccess ) {
++                      if ( result == GrabSuccess || result == GrabNotViewable 
) {
+                               break;
+                       }
+                       SDL_Delay(100);
+               }
+               if ( result != GrabSuccess ) {
+                       /* Uh, oh, what do we do here? */ ;
++                      return(SDL_GRAB_OFF);
+               }
+               /* Now grab the keyboard */
+               XGrabKeyboard(SDL_Display, WMwindow, True,

Added: SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch
===================================================================
--- SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch                    
        (rev 0)
+++ SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch    2014-09-27 
21:07:22 UTC (rev 223594)
@@ -0,0 +1,73 @@
+# HG changeset patch
+# User Sam Lantinga <[email protected]>
+# Date 1397799374 25200
+#      Thu Apr 17 22:36:14 2014 -0700
+# Branch SDL-1.2
+# Node ID 0aade9c0203f717fe4b823a176c3c040f1a709f8
+# Parent  22a7f096bb9d4d596f35a93e33608825693462b0
+Fixed bug 2325 - SDL_EnableUNICODE sometimes drops keyboard events completely
+
+Rafał Mużyło
+
+The most annoying part of this bug is that though I've found it in two 
separate apps, I don't have a trivial testcase for it.
+
+The problem seems to be a condition race, as it's triggered quite randomly 
(therefore it will be hard to tell whether it really gets fixed, if a probable 
fix is found).
+
+While it's specific to SDL 1.2, it seems quite similar to the problem 
described and fixed in http://forums.libsdl.org/viewtopic.php?p=40503.
+
+Now, I should start describing the problem.
+
+A game uses Escape to open menu (the exact key might not be important). Upon 
opening, it calls SDL_EnableUNICODE(1). Upon closing it calls 
SDL_EnableUNICODE(0).
+
+I have an IME running.
+
+Game uses SDL_PollEvent to get the events.
+
+If Escape is pressed repeatedly, menu is opened and closed, till it eventually 
freezes in open state.
+"freezes" in this context means "app itself still runs, but no keyboard events 
are getting delivered (though - for example - mouse events still are)". 
"getting delivered" should mean "SDL_PollEvent is not receiving any".
+If it matters, the last delivered keyboard event is a keypress, the release 
never arrives.
+
+It seems (no guarantees, due to random nature of the freeze) that unsetting 
XMODIFIERS (which - AFAIU - will disable IME as far as SDL is concerned) 
prevents the freeze, therefore the reference to that SDL2 thread.
+
+diff -r 22a7f096bb9d -r 0aade9c0203f src/video/x11/SDL_x11events.c
+--- a/src/video/x11/SDL_x11events.c    Sun Dec 01 00:00:17 2013 -0500
++++ b/src/video/x11/SDL_x11events.c    Thu Apr 17 22:36:14 2014 -0700
+@@ -395,6 +395,8 @@
+ {
+       int posted;
+       XEvent xevent;
++      int orig_event_type;
++      KeyCode orig_keycode;
+ 
+       SDL_memset(&xevent, '\0', sizeof (XEvent));  /* valgrind fix. --ryan. */
+       XNextEvent(SDL_Display, &xevent);
+@@ -410,9 +412,29 @@
+ #ifdef X_HAVE_UTF8_STRING
+       /* If we are translating with IM, we need to pass all events
+          to XFilterEvent, and discard those filtered events immediately.  */
++      orig_event_type = xevent.type;
++      if (orig_event_type == KeyPress || orig_event_type == KeyRelease) {
++           orig_keycode = xevent.xkey.keycode;
++      } else {
++           orig_keycode = 0;
++      }
+       if ( SDL_TranslateUNICODE
+            && SDL_IM != NULL
+            && XFilterEvent(&xevent, None) ) {
++              if (orig_keycode) {
++                  SDL_keysym keysym;
++                  static XComposeStatus state;
++                  char keybuf[32];
++
++                  keysym.scancode = xevent.xkey.keycode;
++                  keysym.sym = X11_TranslateKeycode(SDL_Display, 
xevent.xkey.keycode);
++                  keysym.mod = KMOD_NONE;
++                  keysym.unicode = 0;
++                  if (orig_event_type == KeyPress && 
XLookupString(&xevent.xkey, keybuf, sizeof(keybuf), NULL, &state))
++                      keysym.unicode = (Uint8)keybuf[0];
++
++                  SDL_PrivateKeyboard(orig_event_type == KeyPress ? 
SDL_PRESSED : SDL_RELEASED, &keysym);
++              }
+               return 0;
+       }
+ #endif

Added: SDL-1.2.15-const_XData32.patch
===================================================================
--- SDL-1.2.15-const_XData32.patch                              (rev 0)
+++ SDL-1.2.15-const_XData32.patch      2014-09-27 21:07:22 UTC (rev 223594)
@@ -0,0 +1,16 @@
+libX11-1.5.99.901 has changed prototype of _XData32
+
+<http://bugzilla.libsdl.org/show_bug.cgi?id=1769>
+
+diff -r b6b2829cd7ef src/video/x11/SDL_x11sym.h
+--- a/src/video/x11/SDL_x11sym.h       Wed Feb 27 15:20:31 2013 -0800
++++ b/src/video/x11/SDL_x11sym.h       Wed Mar 27 16:07:23 2013 +0100
+@@ -165,7 +165,7 @@
+  */
+ #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 _Xconst long *data,unsigned 
len),(dpy,data,len),return)
+ SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long 
len),(dpy,data,len),)
+ #endif
+ 

Added: SDL-1.2.15-ignore_insane_joystick_axis.patch
===================================================================
--- SDL-1.2.15-ignore_insane_joystick_axis.patch                                
(rev 0)
+++ SDL-1.2.15-ignore_insane_joystick_axis.patch        2014-09-27 21:07:22 UTC 
(rev 223594)
@@ -0,0 +1,20 @@
+changeset:   6324:95abff7adcc2
+branch:      SDL-1.2
+parent:      6306:2b923729fd01
+user:        Ryan C. Gordon <[email protected]>
+date:        Sun Jun 03 04:49:25 2012 -0400
+summary:     Linux evdev: ignore joystick axis events if they aren't in a sane 
range.
+
+diff -r 2b923729fd01 -r 95abff7adcc2 src/joystick/linux/SDL_sysjoystick.c
+--- a/src/joystick/linux/SDL_sysjoystick.c     Sat May 12 23:32:51 2012 -0700
++++ b/src/joystick/linux/SDL_sysjoystick.c     Sun Jun 03 04:49:25 2012 -0400
+@@ -1106,6 +1106,9 @@
+                               }
+                               break;
+                           case EV_ABS:
++                              if (code > ABS_MISC) {
++                                      break;
++                              }
+                               switch (code) {
+                                   case ABS_HAT0X:
+                                   case ABS_HAT0Y:

Added: SDL-1.2.15-no-default-backing-store.patch
===================================================================
--- SDL-1.2.15-no-default-backing-store.patch                           (rev 0)
+++ SDL-1.2.15-no-default-backing-store.patch   2014-09-27 21:07:22 UTC (rev 
223594)
@@ -0,0 +1,24 @@
+Do not harness backing store by default
+
+xorg-server 1.15 enables backing store if composite extension is enabled
+(default settings). Harnessing backing store through compositor leads to
+tearing effect.
+
+This patch reverts default harnessing backing store to conditional use if
+SDL_VIDEO_X11_BACKINGSTORE environment variable exists.
+
+<https://bugzilla.libsdl.org/show_bug.cgi?id=2383>
+<https://bugzilla.redhat.com/show_bug.cgi?id=1073057>
+
+diff -up SDL-1.2.15/src/video/x11/SDL_x11video.c.jx 
SDL-1.2.15/src/video/x11/SDL_x11video.c
+--- SDL-1.2.15/src/video/x11/SDL_x11video.c.jx 2012-01-19 01:30:06.000000000 
-0500
++++ SDL-1.2.15/src/video/x11/SDL_x11video.c    2014-03-04 14:39:34.691545549 
-0500
+@@ -1088,7 +1088,7 @@ static int X11_CreateWindow(_THIS, SDL_S
+               }
+       }
+ 
+-#if 0 /* This is an experiment - are the graphics faster now? - nope. */
++#if 1 /* 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 */

Added: SDL-1.2.15-x11-Bypass-SetGammaRamp-when-changing-gamma.patch
===================================================================
--- SDL-1.2.15-x11-Bypass-SetGammaRamp-when-changing-gamma.patch                
                (rev 0)
+++ SDL-1.2.15-x11-Bypass-SetGammaRamp-when-changing-gamma.patch        
2014-09-27 21:07:22 UTC (rev 223594)
@@ -0,0 +1,44 @@
+From 4b56fa058a45b7c804d1a5fcaf7a70db0bd0581c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]>
+Date: Tue, 1 Jan 2013 21:25:15 +0100
+Subject: [PATCH] x11: Bypass SetGammaRamp when changing gamma
+
+Recent Xorg has broken dynamic colors setting, so calling SDL_SetGamme()
+does not have any effect here. Recent means xorg-server >= 1.7, since 2010.
+See <https://bugs.freedesktop.org/show_bug.cgi?id=27222>.
+---
+ src/video/SDL_gamma.c |   15 ++-------------
+ 1 files changed, 2 insertions(+), 13 deletions(-)
+
+diff --git a/src/video/SDL_gamma.c b/src/video/SDL_gamma.c
+index 4fd0370..464ab88 100644
+--- a/src/video/SDL_gamma.c
++++ b/src/video/SDL_gamma.c
+@@ -92,22 +92,11 @@ static void CalculateGammaFromRamp(float *gamma, Uint16 
*ramp)
+ 
+ int SDL_SetGamma(float red, float green, float blue)
+ {
+-      int succeeded;
++      int succeeded = -1;
+       SDL_VideoDevice *video = current_video;
+       SDL_VideoDevice *this  = current_video; 
+ 
+-      succeeded = -1;
+-      /* Prefer using SetGammaRamp(), as it's more flexible */
+-      {
+-              Uint16 ramp[3][256];
+-
+-              CalculateGammaRamp(red, ramp[0]);
+-              CalculateGammaRamp(green, ramp[1]);
+-              CalculateGammaRamp(blue, ramp[2]);
+-              succeeded = SDL_SetGammaRamp(ramp[0], ramp[1], ramp[2]);
+-      }
+-      if ( (succeeded < 0) && video->SetGamma ) {
+-              SDL_ClearError();
++      if ( video->SetGamma ) {
+               succeeded = video->SetGamma(this, red, green, blue);
+       }
+       return succeeded;
+-- 
+1.7.8.6
+

Deleted: fix_joystick_misc_axes.diff
===================================================================
--- fix_joystick_misc_axes.diff 2014-09-27 20:47:56 UTC (rev 223593)
+++ fix_joystick_misc_axes.diff 2014-09-27 21:07:22 UTC (rev 223594)
@@ -1,13 +0,0 @@
-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;

Deleted: sdl_x11sym.patch
===================================================================
--- sdl_x11sym.patch    2014-09-27 20:47:56 UTC (rev 223593)
+++ sdl_x11sym.patch    2014-09-27 21:07:22 UTC (rev 223594)
@@ -1,12 +0,0 @@
---- src/video/x11/SDL_x11sym.h-orig    2013-07-16 23:56:46.718523385 -0600
-+++ src/video/x11/SDL_x11sym.h 2013-07-16 23:58:27.025186485 -0600
-@@ -165,7 +165,8 @@
-  */
- #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 _Xconst long *data,unsigned 
len),(dpy,data,len),return)
- SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long 
len),(dpy,data,len),)
- #endif
- 

Reply via email to