Fix logspam when trying to free a non-existant grab.
- Update touch patch to upstream version (from fdo #66720) - re-add xephyr resizable patch, got lost in rebase (#976995)
This commit is contained in:
parent
9dc0b02a88
commit
0e1e01a399
@ -0,0 +1,49 @@
|
|||||||
|
From af07795a384943723de5c6207d07d5af9fb883db Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Fri, 12 Jul 2013 14:10:10 +1000
|
||||||
|
Subject: [PATCH] dix: UpdateTouchesForGrab must only free the listener grab if
|
||||||
|
it is non-NULL
|
||||||
|
|
||||||
|
If a client calls XIGrabDevice in response to a ButtonPress event (regular
|
||||||
|
event selection), the device will have a grab, but listener->grab is NULL.
|
||||||
|
|
||||||
|
Check for that, to avoid logspam.
|
||||||
|
|
||||||
|
[ 26293.863] (EE) BUG: triggered 'if (!pGrab)'
|
||||||
|
[ 26293.863] (EE) BUG: grabs.c:256 in FreeGrab()
|
||||||
|
[ 26293.863] (EE)
|
||||||
|
[ 26293.863] (EE) Backtrace:
|
||||||
|
[ 26293.864] (EE) 0: /usr/bin/Xorg (FreeGrab+0x54) [0x45d3fc]
|
||||||
|
[ 26293.864] (EE) 1: /usr/bin/Xorg (UpdateTouchesForGrab+0x135) [0x447d4e]
|
||||||
|
[ 26293.864] (EE) 2: /usr/bin/Xorg (ActivatePointerGrab+0x1ba) [0x447f3d]
|
||||||
|
[ 26293.864] (EE) 3: /usr/bin/Xorg (GrabDevice+0x3e6) [0x4503bc]
|
||||||
|
[ 26293.864] (EE) 4: /usr/bin/Xorg (ProcXIGrabDevice+0x1f9) [0x5981b1]
|
||||||
|
[ 26293.865] (EE) 5: /usr/bin/Xorg (ProcIDispatch+0x78) [0x58aa17]
|
||||||
|
[ 26293.865] (EE) 6: /usr/bin/Xorg (Dispatch+0x30d) [0x43347e]
|
||||||
|
[ 26293.865] (EE) 7: /usr/bin/Xorg (main+0x61d) [0x498175]
|
||||||
|
[ 26293.865] (EE) 8: /lib64/libc.so.6 (__libc_start_main+0xf5) [0x3df5621b75]
|
||||||
|
[ 26293.865] (EE) 9: /usr/bin/Xorg (_start+0x29) [0x423a19]
|
||||||
|
[ 26293.866] (EE) 10: ? (?+0x29) [0x29]
|
||||||
|
[ 26293.866] (EE)
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
---
|
||||||
|
dix/events.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/dix/events.c b/dix/events.c
|
||||||
|
index 03b2d2e..ed3138d 100644
|
||||||
|
--- a/dix/events.c
|
||||||
|
+++ b/dix/events.c
|
||||||
|
@@ -1441,7 +1441,8 @@ UpdateTouchesForGrab(DeviceIntPtr mouse)
|
||||||
|
listener->type = LISTENER_POINTER_GRAB;
|
||||||
|
else
|
||||||
|
listener->type = LISTENER_GRAB;
|
||||||
|
- FreeGrab(listener->grab);
|
||||||
|
+ if (listener->grab)
|
||||||
|
+ FreeGrab(listener->grab);
|
||||||
|
listener->grab = AllocGrab(grab);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.8.2.1
|
@ -1,4 +1,4 @@
|
|||||||
From 43f732478606e952fe728a109adeb8edbb63fc13 Mon Sep 17 00:00:00 2001
|
From 8eeaa74bc241acb41f1d3ed64971e0b01e794776 Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
Date: Tue, 9 Jul 2013 13:27:19 +1000
|
Date: Tue, 9 Jul 2013 13:27:19 +1000
|
||||||
Subject: [PATCH] dix: when ungrabbing an active grab, accept pointer grabs
|
Subject: [PATCH] dix: when ungrabbing an active grab, accept pointer grabs
|
||||||
@ -14,15 +14,70 @@ UngrabDevice. That is against the core grab behaviour.
|
|||||||
X.Org Bug 66720 <http://bugs.freedesktop.org/show_bug.cgi?id=66720>
|
X.Org Bug 66720 <http://bugs.freedesktop.org/show_bug.cgi?id=66720>
|
||||||
|
|
||||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
|
||||||
---
|
---
|
||||||
dix/events.c | 7 +++++--
|
Xi/exevents.c | 33 ++++++++++++++++++++++-----------
|
||||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
dix/events.c | 11 +++++++++--
|
||||||
|
2 files changed, 31 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Xi/exevents.c b/Xi/exevents.c
|
||||||
|
index 2bbc6f0..fd4b80c 100644
|
||||||
|
--- a/Xi/exevents.c
|
||||||
|
+++ b/Xi/exevents.c
|
||||||
|
@@ -1223,9 +1223,13 @@ ProcessTouchOwnershipEvent(TouchOwnershipEvent *ev,
|
||||||
|
else if (ev->reason == XIAcceptTouch) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
- /* Go through the motions of ending the touch if the listener has
|
||||||
|
+
|
||||||
|
+ /* For pointer-emulated listeners that ungrabbed the active grab,
|
||||||
|
+ * the state was forced to LISTENER_HAS_END. Still go
|
||||||
|
+ * through the motions of ending the touch if the listener has
|
||||||
|
* already seen the end. This ensures that the touch record is ended in
|
||||||
|
- * the server. */
|
||||||
|
+ * the server.
|
||||||
|
+ */
|
||||||
|
if (ti->listeners[0].state == LISTENER_HAS_END)
|
||||||
|
TouchEmitTouchEnd(dev, ti, TOUCH_ACCEPT, ti->listeners[0].listener);
|
||||||
|
|
||||||
|
@@ -1883,16 +1887,23 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev,
|
||||||
|
|
||||||
|
if (listener->type == LISTENER_POINTER_REGULAR ||
|
||||||
|
listener->type == LISTENER_POINTER_GRAB) {
|
||||||
|
- rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win,
|
||||||
|
- grab, xi2mask);
|
||||||
|
+ /* Note: If the active grab was ungrabbed, we already changed the
|
||||||
|
+ * state to LISTENER_HAS_END but still get here. So we mustn't
|
||||||
|
+ * actually send the event.
|
||||||
|
+ * This is part two of the hack in DeactivatePointerGrab
|
||||||
|
+ */
|
||||||
|
+ if (listener->state != LISTENER_HAS_END) {
|
||||||
|
+ rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win,
|
||||||
|
+ grab, xi2mask);
|
||||||
|
|
||||||
|
- /* Once we send a TouchEnd to a legacy listener, we're already well
|
||||||
|
- * past the accepting/rejecting stage (can only happen on
|
||||||
|
- * GrabModeSync + replay. This listener now gets the end event,
|
||||||
|
- * and we can continue.
|
||||||
|
- */
|
||||||
|
- if (rc == Success)
|
||||||
|
- listener->state = LISTENER_HAS_END;
|
||||||
|
+ /* Once we send a TouchEnd to a legacy listener, we're already well
|
||||||
|
+ * past the accepting/rejecting stage (can only happen on
|
||||||
|
+ * GrabModeSync + replay. This listener now gets the end event,
|
||||||
|
+ * and we can continue.
|
||||||
|
+ */
|
||||||
|
+ if (rc == Success)
|
||||||
|
+ listener->state = LISTENER_HAS_END;
|
||||||
|
+ }
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
diff --git a/dix/events.c b/dix/events.c
|
diff --git a/dix/events.c b/dix/events.c
|
||||||
index e5db348..de41d6f 100644
|
index e5db348..03b2d2e 100644
|
||||||
--- a/dix/events.c
|
--- a/dix/events.c
|
||||||
+++ b/dix/events.c
|
+++ b/dix/events.c
|
||||||
@@ -1522,13 +1522,16 @@ DeactivatePointerGrab(DeviceIntPtr mouse)
|
@@ -1522,13 +1522,20 @@ DeactivatePointerGrab(DeviceIntPtr mouse)
|
||||||
for (i = 0; !wasPassive && mouse->touch && i < mouse->touch->num_touches; i++) {
|
for (i = 0; !wasPassive && mouse->touch && i < mouse->touch->num_touches; i++) {
|
||||||
TouchPointInfoPtr ti = mouse->touch->touches + i;
|
TouchPointInfoPtr ti = mouse->touch->touches + i;
|
||||||
if (ti->active && TouchResourceIsOwner(ti, grab_resource)) {
|
if (ti->active && TouchResourceIsOwner(ti, grab_resource)) {
|
||||||
@ -34,6 +89,10 @@ index e5db348..de41d6f 100644
|
|||||||
- !xi2mask_isset(mouse->deviceGrab.grab->xi2mask, mouse, XI_TouchBegin))
|
- !xi2mask_isset(mouse->deviceGrab.grab->xi2mask, mouse, XI_TouchBegin))
|
||||||
+ !xi2mask_isset(mouse->deviceGrab.grab->xi2mask, mouse, XI_TouchBegin)) {
|
+ !xi2mask_isset(mouse->deviceGrab.grab->xi2mask, mouse, XI_TouchBegin)) {
|
||||||
+ mode = XIAcceptTouch;
|
+ mode = XIAcceptTouch;
|
||||||
|
+ /* NOTE: we set the state here, but
|
||||||
|
+ * ProcessTouchOwnershipEvent() will still call
|
||||||
|
+ * TouchEmitTouchEnd for this listener. The other half of
|
||||||
|
+ * this hack is in DeliverTouchEndEvent */
|
||||||
ti->listeners[0].state = LISTENER_HAS_END;
|
ti->listeners[0].state = LISTENER_HAS_END;
|
||||||
- TouchListenerAcceptReject(mouse, ti, 0, XIRejectTouch);
|
- TouchListenerAcceptReject(mouse, ti, 0, XIRejectTouch);
|
||||||
+ }
|
+ }
|
||||||
|
151
0001-ephyr-Add-resizeable-option.patch
Normal file
151
0001-ephyr-Add-resizeable-option.patch
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
From 3aac7a59dc6ef2d8bbf46ba5d37acdf6013e9450 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Martin <daniel.martin@secunet.com>
|
||||||
|
Date: Tue, 11 Dec 2012 17:23:55 +0100
|
||||||
|
Subject: [PATCH] ephyr: Add -resizeable option
|
||||||
|
|
||||||
|
With this option passed, ephyr windows can be resized like normal
|
||||||
|
windows on the fly, without the need of an explicit parent window.
|
||||||
|
|
||||||
|
Signed-off-by: Daniel Martin <daniel.martin@secunet.com>
|
||||||
|
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
---
|
||||||
|
hw/kdrive/ephyr/ephyr.c | 1 +
|
||||||
|
hw/kdrive/ephyr/ephyrinit.c | 6 ++++++
|
||||||
|
hw/kdrive/ephyr/hostx.c | 32 +++++++++++++++++++++-----------
|
||||||
|
3 files changed, 28 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
|
||||||
|
index e6520d0..f32e432 100644
|
||||||
|
--- a/hw/kdrive/ephyr/ephyr.c
|
||||||
|
+++ b/hw/kdrive/ephyr/ephyr.c
|
||||||
|
@@ -56,6 +56,7 @@ typedef struct _EphyrInputPrivate {
|
||||||
|
} EphyrKbdPrivate, EphyrPointerPrivate;
|
||||||
|
|
||||||
|
Bool EphyrWantGrayScale = 0;
|
||||||
|
+Bool EphyrWantResize = 0;
|
||||||
|
|
||||||
|
Bool
|
||||||
|
ephyrInitialize(KdCardInfo * card, EphyrPriv * priv)
|
||||||
|
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
|
||||||
|
index 5e2eb67..adacac9 100644
|
||||||
|
--- a/hw/kdrive/ephyr/ephyrinit.c
|
||||||
|
+++ b/hw/kdrive/ephyr/ephyrinit.c
|
||||||
|
@@ -31,6 +31,7 @@
|
||||||
|
|
||||||
|
extern Window EphyrPreExistingHostWin;
|
||||||
|
extern Bool EphyrWantGrayScale;
|
||||||
|
+extern Bool EphyrWantResize;
|
||||||
|
extern Bool kdHasPointer;
|
||||||
|
extern Bool kdHasKbd;
|
||||||
|
|
||||||
|
@@ -116,6 +117,7 @@ ddxUseMsg(void)
|
||||||
|
ErrorF("-host-cursor Re-use exisiting X host server cursor\n");
|
||||||
|
ErrorF("-fullscreen Attempt to run Xephyr fullscreen\n");
|
||||||
|
ErrorF("-grayscale Simulate 8bit grayscale\n");
|
||||||
|
+ ErrorF("-resizeable Make Xephyr windows resizeable\n");
|
||||||
|
ErrorF
|
||||||
|
("-fakexa Simulate acceleration using software rendering\n");
|
||||||
|
ErrorF("-verbosity <level> Set log verbosity level\n");
|
||||||
|
@@ -210,6 +212,10 @@ ddxProcessArgument(int argc, char **argv, int i)
|
||||||
|
EphyrWantGrayScale = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
+ else if (!strcmp(argv[i], "-resizeable")) {
|
||||||
|
+ EphyrWantResize = 1;
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
else if (!strcmp(argv[i], "-fakexa")) {
|
||||||
|
ephyrFuncs.initAccel = ephyrDrawInit;
|
||||||
|
ephyrFuncs.enableAccel = ephyrDrawEnable;
|
||||||
|
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
|
||||||
|
index aed0285..c8642cb 100644
|
||||||
|
--- a/hw/kdrive/ephyr/hostx.c
|
||||||
|
+++ b/hw/kdrive/ephyr/hostx.c
|
||||||
|
@@ -117,6 +117,8 @@ extern EphyrKeySyms ephyrKeySyms;
|
||||||
|
|
||||||
|
extern int monitorResolution;
|
||||||
|
|
||||||
|
+extern Bool EphyrWantResize;
|
||||||
|
+
|
||||||
|
char *ephyrResName = NULL;
|
||||||
|
int ephyrResNameFromCmd = 0;
|
||||||
|
char *ephyrTitle = NULL;
|
||||||
|
@@ -697,7 +699,7 @@ hostx_screen_init(EphyrScreenInfo screen,
|
||||||
|
XResizeWindow(HostX.dpy, host_screen->win, width, height);
|
||||||
|
|
||||||
|
/* Ask the WM to keep our size static */
|
||||||
|
- if (host_screen->win_pre_existing == None) {
|
||||||
|
+ if (host_screen->win_pre_existing == None && !EphyrWantResize) {
|
||||||
|
size_hints = XAllocSizeHints();
|
||||||
|
size_hints->max_width = size_hints->min_width = width;
|
||||||
|
size_hints->max_height = size_hints->min_height = height;
|
||||||
|
@@ -1012,19 +1014,27 @@ hostx_get_event(EphyrHostXEvent * ev)
|
||||||
|
|
||||||
|
case ConfigureNotify:
|
||||||
|
{
|
||||||
|
- struct EphyrHostScreen *host_screen =
|
||||||
|
- host_screen_from_window(xev.xconfigure.window);
|
||||||
|
+ struct EphyrHostScreen *host_screen;
|
||||||
|
|
||||||
|
- if (host_screen && host_screen->win_pre_existing != None) {
|
||||||
|
- ev->type = EPHYR_EV_CONFIGURE;
|
||||||
|
- ev->data.configure.width = xev.xconfigure.width;
|
||||||
|
- ev->data.configure.height = xev.xconfigure.height;
|
||||||
|
- ev->data.configure.window = xev.xconfigure.window;
|
||||||
|
- ev->data.configure.screen = host_screen->mynum;
|
||||||
|
- return 1;
|
||||||
|
+ /* event compression as for Expose events, cause
|
||||||
|
+ * we don't want to resize the framebuffer for
|
||||||
|
+ * every single change */
|
||||||
|
+ while (XCheckTypedWindowEvent(HostX.dpy, xev.xconfigure.window,
|
||||||
|
+ ConfigureNotify, &xev));
|
||||||
|
+ host_screen = host_screen_from_window(xev.xconfigure.window);
|
||||||
|
+
|
||||||
|
+ if (!host_screen ||
|
||||||
|
+ (host_screen->win_pre_existing == None && !EphyrWantResize)) {
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return 0;
|
||||||
|
+ ev->type = EPHYR_EV_CONFIGURE;
|
||||||
|
+ ev->data.configure.width = xev.xconfigure.width;
|
||||||
|
+ ev->data.configure.height = xev.xconfigure.height;
|
||||||
|
+ ev->data.configure.window = xev.xconfigure.window;
|
||||||
|
+ ev->data.configure.screen = host_screen->mynum;
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
--
|
||||||
|
1.8.2.1
|
||||||
|
|
||||||
|
From 49521edaf8930b335afac2185209e26e7000820b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Wed, 15 May 2013 08:51:51 +1000
|
||||||
|
Subject: [PATCH] ephyr: add -resizeable to the man page
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
---
|
||||||
|
hw/kdrive/ephyr/man/Xephyr.man | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/hw/kdrive/ephyr/man/Xephyr.man b/hw/kdrive/ephyr/man/Xephyr.man
|
||||||
|
index 792511b..f14f6c8 100644
|
||||||
|
--- a/hw/kdrive/ephyr/man/Xephyr.man
|
||||||
|
+++ b/hw/kdrive/ephyr/man/Xephyr.man
|
||||||
|
@@ -59,6 +59,10 @@ set 'cursor acceleration':
|
||||||
|
The host's cursor is reused. This is only really there to aid
|
||||||
|
debugging by avoiding server paints for the cursor. Performance
|
||||||
|
improvement is negligible.
|
||||||
|
+.TP 8
|
||||||
|
+.B -resizeable
|
||||||
|
+Allow the Xephyr window to be resized, even if not embedded into a parent
|
||||||
|
+window. By default, the Xephyr window has a fixed size.
|
||||||
|
.SH "SIGNALS"
|
||||||
|
Send a SIGUSR1 to the server (e.g. pkill -USR1 Xephyr) to
|
||||||
|
toggle the debugging mode.
|
||||||
|
--
|
||||||
|
1.8.2.1
|
@ -42,7 +42,7 @@
|
|||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.14.2
|
Version: 1.14.2
|
||||||
Release: 4%{?gitdate:.%{gitdate}}%{dist}
|
Release: 5%{?gitdate:.%{gitdate}}%{dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -142,11 +142,15 @@ Patch8034: 0035-dix-remove-logspam-in-RefCursor.patch
|
|||||||
# Bug 66720 - Server crash when ungrabbing a touch device on the second touch
|
# Bug 66720 - Server crash when ungrabbing a touch device on the second touch
|
||||||
# https://bugs.freedesktop.org/show_bug.cgi?id=66720
|
# https://bugs.freedesktop.org/show_bug.cgi?id=66720
|
||||||
Patch8035: 0001-dix-when-ungrabbing-an-active-grab-accept-pointer-gr.patch
|
Patch8035: 0001-dix-when-ungrabbing-an-active-grab-accept-pointer-gr.patch
|
||||||
|
Patch8037: 0001-dix-UpdateTouchesForGrab-must-only-free-the-listener.patch
|
||||||
|
|
||||||
# Bug 972095 - X server fails on 32-bit Fedora 19 with VirtualBox Guest Additions installed
|
# Bug 972095 - X server fails on 32-bit Fedora 19 with VirtualBox Guest Additions installed
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=972095
|
# https://bugzilla.redhat.com/show_bug.cgi?id=972095
|
||||||
Patch8036: 0001-glx-fix-uninitialized-var-in-__glXDRIscreenProbe.patch
|
Patch8036: 0001-glx-fix-uninitialized-var-in-__glXDRIscreenProbe.patch
|
||||||
|
|
||||||
|
# Bug 962572 - X-sandboxes are not resizeable
|
||||||
|
Patch8038: 0001-ephyr-Add-resizeable-option.patch
|
||||||
|
|
||||||
# upstream in -next for 1.15, e21e183059df5975e7086850d1931edb2c1bbd06
|
# upstream in -next for 1.15, e21e183059df5975e7086850d1931edb2c1bbd06
|
||||||
%if !0%{?rhel}
|
%if !0%{?rhel}
|
||||||
Patch7071: 0001-os-use-libunwind-to-generate-backtraces.patch
|
Patch7071: 0001-os-use-libunwind-to-generate-backtraces.patch
|
||||||
@ -624,6 +628,11 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{xserver_source_dir}
|
%{xserver_source_dir}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jul 15 2013 Peter Hutterer <peter.hutterer@redhat.com> 1.14.2-5
|
||||||
|
- Fix logspam when trying to free a non-existant grab.
|
||||||
|
- Update touch patch to upstream version (from fdo #66720)
|
||||||
|
- re-add xephyr resizable patch, got lost in rebase (#976995)
|
||||||
|
|
||||||
* Fri Jul 12 2013 Dave Airlie <airlied@redhat.com> 1.14.2-4
|
* Fri Jul 12 2013 Dave Airlie <airlied@redhat.com> 1.14.2-4
|
||||||
- reapply dropped patch to fix regression (#981953)
|
- reapply dropped patch to fix regression (#981953)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user