[PATCH 1/1] Autoload nouveau on NetBSD as well
It has added support for it --- hw/xfree86/common/xf86pciBus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c index bed4434..15bd59e 100644 --- a/hw/xfree86/common/xf86pciBus.c +++ b/hw/xfree86/common/xf86pciBus.c @@ -1189,7 +1189,7 @@ xf86VideoPtrToDriverList(struct pci_device *dev, { int idx = 0; -#ifdef __linux__ +#if defined(__linux__) || defined(__NetBSD__) driverList[idx++] = "nouveau"; #endif driverList[idx++] = "nv"; -- 2.10.1 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH v4] Compose: add rouble currency
v4: - Fix typo in description - Use just 'dead_currency Er' instead of 'dead_currency Er Equals' - Use also 'Compose/dead_currency Equals Pe' >From ae1bf2fbd2c3893366198a80aed8743af656ee88 Mon Sep 17 00:00:00 2001 From: Victor KustovDate: Mon, 17 Oct 2016 19:44:36 + Subject: [PATCH 1/5] Compose: add rouble currency sequence Signed-off-by: Victor Kustov Reviewed-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 4 1 file changed, 4 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index adc24fb5b5c2..d7dc74140989 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -190,6 +190,10 @@ XCOMM "₪" U20aa NEW SHEQEL SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN XCOMM "₭" U20ad KIP SIGN XCOMM "₮" U20ae TUGRIK SIGN XCOMM "₯" U20af DRACHMA SIGN -- 2.9.2 >From dae875f5ac0664035e7f4dab724b307245d842b6 Mon Sep 17 00:00:00 2001 From: Mihail Konev Date: Mon, 17 Oct 2016 20:17:31 + Subject: [PATCH 2/5] Compose: cyrillic rouble sequence Signed-off-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 4 1 file changed, 4 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index d7dc74140989..e71903702d57 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -194,6 +194,10 @@ XCOMM "₪" U20aa NEW SHEQEL SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN XCOMM "₭" U20ad KIP SIGN XCOMM "₮" U20ae TUGRIK SIGN XCOMM "₯" U20af DRACHMA SIGN -- 2.9.2 >From 76e28b8cd84449f25b7e45e96afbc997cfe83878 Mon Sep 17 00:00:00 2001 From: Mihail Konev Date: Fri, 4 Nov 2016 05:48:31 +0500 Subject: [PATCH 3/5] Compose: add dead_currency rouble sequences Signed-off-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 8 1 file changed, 8 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index e71903702d57..2c0b3582b2db 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -5323,6 +5323,14 @@ XCOMM : "₩" WonSign # WON SIGN : "円" U5186 # YEN : "¥" yen # YEN SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN : "¤" currency# CURRENCY SIGN : "¤" currency# CURRENCY SIGN : "¤" currency# CURRENCY SIGN -- 2.9.2 >From f680fc24736a3051a85a7fde099720c286070879 Mon Sep 17 00:00:00 2001 From: Mihail Konev Date: Fri, 4 Nov 2016 05:49:24 +0500 Subject: [PATCH 4/5] Compose: peseta sign consistency with rouble Signed-off-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 4 1 file changed, 4 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index 2c0b3582b2db..1272385936ae 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -5323,6 +5323,10 @@ XCOMM : "₩" WonSign # WON SIGN : "円" U5186 # YEN : "¥" yen # YEN SIGN +: "₧" PesetaSign # PESETA SIGN +: "₧" PesetaSign # PESETA SIGN +: "₧" PesetaSign # PESETA SIGN +: "₧" PesetaSign # PESETA SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN -- 2.9.2 >From 7bc05c72bbd4cf7c4b8c9179ce4e2acfa4395796 Mon Sep 17 00:00:00 2001 From: Mihail Konev Date: Fri, 4 Nov 2016 06:41:01 +0500 Subject: [PATCH 5/5] Compose: cyrillic ruble sign consistency with latin Signed-off-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 8 1 file changed, 8 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index 1272385936ae..64de8d251008 100644 --- a/nls/en_US.UTF-8/Compose.pre +++
Re: [PATCH v3] Compose: add rouble currency
v2 was assigning 'Compose Equals p/P' to rouble currency sign "₽". Currencies also have a "canonical" form 'dead_currency ...'; in particular 'dead_currency P' results in pesetta sign "₧". Assign the 'dead_currency Minus p/P' to pesetta, and 'dead_currency Equals p/P' to rouble. >From ae1bf2fbd2c3893366198a80aed8743af656ee88 Mon Sep 17 00:00:00 2001 From: Victor KustovDate: Mon, 17 Oct 2016 19:44:36 + Subject: [PATCH 1/4] Compose: add rouble currency sequence Signed-off-by: Victor Kustov Reviewed-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 4 1 file changed, 4 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index adc24fb5b5c2..d7dc74140989 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -190,6 +190,10 @@ XCOMM "₪" U20aa NEW SHEQEL SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN : "€" EuroSign # EURO SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN XCOMM "₭" U20ad KIP SIGN XCOMM "₮" U20ae TUGRIK SIGN XCOMM "₯" U20af DRACHMA SIGN -- 2.9.2 >From 88e2d4489be56bfb828cf18c56629ef1b9c1f415 Mon Sep 17 00:00:00 2001 From: Mihail Konev Date: Mon, 17 Oct 2016 20:17:31 + Subject: [PATCH 2/4] Compose: cyrillic rouble sequence Signed-off-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 4 1 file changed, 4 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index d7dc74140989..a25d40446162 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -194,6 +194,10 @@ XCOMM "₪" U20aa NEW SHEQEL SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN XCOMM "₭" U20ad KIP SIGN XCOMM "₮" U20ae TUGRIK SIGN XCOMM "₯" U20af DRACHMA SIGN -- 2.9.2 >From 4ada138513a537e830e48cefe7d688b3eda02694 Mon Sep 17 00:00:00 2001 From: Mihail Konev Date: Fri, 4 Nov 2016 05:48:31 +0500 Subject: [PATCH 3/4] Compose: add dead_currency rouble sequences Signed-off-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 8 1 file changed, 8 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index a25d40446162..9b28d6f4375b 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -5323,6 +5323,14 @@ XCOMM : "₩" WonSign # WON SIGN : "円" U5186 # YEN : "¥" yen # YEN SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN +: "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN + : "₽" U20bd # ROUBLE SIGN : "¤" currency# CURRENCY SIGN : "¤" currency# CURRENCY SIGN : "¤" currency# CURRENCY SIGN -- 2.9.2 >From 014d553d9a4c9243c0056af62ded9aedefe7a7ab Mon Sep 17 00:00:00 2001 From: Mihail Konev Date: Fri, 4 Nov 2016 05:49:24 +0500 Subject: [PATCH 4/4] Compose: pesetta sign consistency with rouble Signed-off-by: Mihail Konev --- nls/en_US.UTF-8/Compose.pre | 4 1 file changed, 4 insertions(+) diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index 9b28d6f4375b..c7f3f221aef9 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -5323,6 +5323,10 @@ XCOMM : "₩" WonSign # WON SIGN : "円" U5186 # YEN : "¥" yen # YEN SIGN +: "₧" PesetaSign # PESETA SIGN +: "₧" PesetaSign # PESETA SIGN +: "₧" PesetaSign # PESETA SIGN +: "₧" PesetaSign # PESETA SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN : "₽" U20bd # ROUBLE SIGN -- 2.9.2 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: Debugging keyboard overlay+xbindkeys
On Thu, Nov 03, 2016 at 01:22:03PM +0100, Mariusz Mazur wrote: > What I did: > 1. Switched the overlay key to act as a modifier. > interpret Overlay1_Enable+AnyOfOrNone(all) { > -action= LockControls(controls=Overlay1); > +action= SetControls(controls=Overlay1); > > 2. Bound it to caps lock. > 3. Defined caps+hjkl to act as arrow keys. > 4. Defined caps+f to send XF86LaunchA to start a new terminal window > (among other similar shortcuts, like ones for switching virtual > desktops, but caps+f is the worst offender, so I'll focus on that). Nice hack. > It would seem using the overlay mechanism the way I do messes with > whatever mechanism xbindkeys/lxde use for intercepting keyboard > shortcuts. Does anybody have any suggestions on any tools/approaches I > could use to try to debug this further? Or is this mechanism something > so ancient that there's hope of getting it to work correctly? Just a guess, but maybe you are hitting this? https://cgit.freedesktop.org/xorg/xserver/tree/xkb/xkbPrKeyEv.c?id=xorg-server-1.18.99.902#n134 Try running `xbindkeys --verbose` and see its output on key press/relase? The problem is in one of xserver, libX11 or xbindkeys, this would help narrow it down. xbindkeys, for some reason, matches keysym bindings strangely; instead of converting keycodes to keysyms and comparing the keysyms, it converts the keysyms to keycodes and compares keycodes. This is lossy and can cause the wrong binding to match. However, I don't think this is the issue in the scenario you describe, unless you have some other keys which map to XF86LaunchA. Ran ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Bug in randr/rrtransform.c : RRTrasnformCompute()
I've noticed that the transformation matrices that this function builds for rotated screens is not quite correct. In particular, it consistently builds maps from 0 to width or height instead of from 0 to width-1 or height-1. This means that an inverted screen maps (0,0) to (width,height) instead of (width-1,height-1). This causes out-of-boundary errors when mapping screens. -- Stirling Westrup Programmer, Entrepreneur. https://www.linkedin.com/e/fpf/77228 http://www.linkedin.com/in/swestrup http://technaut.livejournal.com http://sourceforge.net/users/stirlingwestrup ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Debugging keyboard overlay+xbindkeys
Short version: using keyboard overlay to send e.g. XF86LaunchA, then intercepting that with something like xbindkeys and launching an app often triggers a bug which messes up the 'keycombo intercept' mechanism in xorg. Long version: inspired by fully programmable keyboards like the ergodox or UHK, I've attempted to get the same functionality from xorg. And almost succeeded. What I did: 1. Switched the overlay key to act as a modifier. interpret Overlay1_Enable+AnyOfOrNone(all) { -action= LockControls(controls=Overlay1); +action= SetControls(controls=Overlay1); 2. Bound it to caps lock. 3. Defined caps+hjkl to act as arrow keys. 4. Defined caps+f to send XF86LaunchA to start a new terminal window (among other similar shortcuts, like ones for switching virtual desktops, but caps+f is the worst offender, so I'll focus on that). The arrow keys thing works fine. The "launch app X" part doesn't. I've tried various combinations of : kde4+konsole+xbindkeys and lxde+lxterminal and it just doesn't work properly. The issues I've seen: - caps+f doesn't register some times; I need to mash it twice or thrice for it to actually start a terminal - xev says that sometimes the XF86LaunchA is not intercepted by xbindkeys/lxde and actually arrives in xev; I'm guessing that might have something to do with the previous issue - sometimes a terminal starts in a weird zombie state, in which it does not respond to keyboard and seems 'unfocused' (the cmd prompt rectangle is not filled, even though the window is focused) - The worst offender is my old kde4+xbindkeys combination (with up to date xorg and kernel mind you) which very often (not always though) blocks all keyboard input to all windows (xev shows nothing when I press keys) until I either enter the exact key combination that caused the issue (so usually caps+f) once or twice at which point it unlocks the keyboard or I switch to some other tty and back again, which also resets the problem (along with my xkb_keymap, which I then need to reload). Ah, just figured it out. When in this 'locked' state *all* of the keys I press end up intercepted by xbindkeys, which is why they don't arrive in any apps. It would seem using the overlay mechanism the way I do messes with whatever mechanism xbindkeys/lxde use for intercepting keyboard shortcuts. Does anybody have any suggestions on any tools/approaches I could use to try to debug this further? Or is this mechanism something so ancient that there's hope of getting it to work correctly? ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH xserver] glamor: restore vfunc handlers on init failure
Hi, On 03-11-16 09:59, Olivier Fourdan wrote: In glamor_init(), if the minimum requirements are not met, glamor may fail after setting up its own CloseScreen() and DestroyPixmap() routines, leading to a crash when either of the two routines is called if glamor failed to complete its initialization, e.g: (EE) Backtrace: (EE) 0: Xwayland (OsSigHandler+0x29) (EE) 1: /lib64/libpthread.so.0 (__restore_rt+0x0) (EE) 2: Xwayland (glamor_sync_close+0x2a) (EE) 3: Xwayland (glamor_close_screen+0x52) (EE) 4: Xwayland (CursorCloseScreen+0x88) (EE) 5: Xwayland (AnimCurCloseScreen+0xa4) (EE) 6: Xwayland (present_close_screen+0x42) (EE) 7: Xwayland (dix_main+0x4f9) (EE) 8: /lib64/libc.so.6 (__libc_start_main+0xf1) (EE) 9: Xwayland (_start+0x2a) Restore the previous CloseScreen() and DestroyPixmap() vfunc handlers in case of failure when checking for the minimum requirements, so that if any of the requirement is not met we don't leave the CloseScreen() and DestroyPixmap() from glamor handlers in place. Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1390018 Signed-off-by: Olivier FourdanPatch looks good to me: Reviewed-by: Hans de Goede Regards, Hans --- glamor/glamor.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/glamor/glamor.c b/glamor/glamor.c index b771832..c54cf3b 100644 --- a/glamor/glamor.c +++ b/glamor/glamor.c @@ -470,7 +470,7 @@ glamor_init(ScreenPtr screen, unsigned int flags) LogMessage(X_WARNING, "glamor%d: Failed to allocate screen private\n", screen->myNum); -goto fail; +goto free_glamor_private; } glamor_set_screen_private(screen, glamor_priv); @@ -480,7 +480,7 @@ glamor_init(ScreenPtr screen, unsigned int flags) LogMessage(X_WARNING, "glamor%d: Failed to allocate pixmap private\n", screen->myNum); -goto fail; +goto free_glamor_private; } if (!dixRegisterPrivateKey(_gc_private_key, PRIVATE_GC, @@ -488,7 +488,7 @@ glamor_init(ScreenPtr screen, unsigned int flags) LogMessage(X_WARNING, "glamor%d: Failed to allocate gc private\n", screen->myNum); -goto fail; +goto free_glamor_private; } glamor_priv->saved_procs.close_screen = screen->CloseScreen; @@ -731,6 +731,11 @@ glamor_init(ScreenPtr screen, unsigned int flags) return TRUE; fail: +/* Restore default CloseScreen and DestroyPixmap handlers */ +screen->CloseScreen = glamor_priv->saved_procs.close_screen; +screen->DestroyPixmap = glamor_priv->saved_procs.destroy_pixmap; + + free_glamor_private: free(glamor_priv); glamor_set_screen_private(screen, NULL); return FALSE; ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH xserver] dix: Make sure client is not in output_pending chain after closed (RH 1382444)
Hi, On 02-11-16 21:39, Keith Packard wrote: I think it is possible that output could get queued to a client during CloseDownClient. After it is removed from the pending queue, active grabs are released, the client is awoken if sleeping and any work queue entries related to the client are processed. To fix this, move the call removing it from the output_pending chain until after clientGone has been set and then check clientGone in output_pending_mark. Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1382444 Signed-off-by: Keith PackardPatch looks good to me: Reviewed-by: Hans de Goede Regards, Hans --- dix/dispatch.c | 2 +- include/dixstruct.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dix/dispatch.c b/dix/dispatch.c index e111377..3d0fe26 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -3406,7 +3406,6 @@ CloseDownClient(ClientPtr client) UngrabServer(client); } mark_client_not_ready(client); -xorg_list_del(>output_pending); BITCLEAR(grabWaiters, client->index); DeleteClientFromAnySelections(client); ReleaseActiveGrabs(client); @@ -3435,6 +3434,7 @@ CloseDownClient(ClientPtr client) if (ClientIsAsleep(client)) ClientSignal(client); ProcessWorkQueueZombies(); +output_pending_clear(client); CloseDownConnection(client); /* If the client made it to the Running stage, nClients has diff --git a/include/dixstruct.h b/include/dixstruct.h index 3b578f8..d71b0ac 100644 --- a/include/dixstruct.h +++ b/include/dixstruct.h @@ -159,7 +159,7 @@ extern struct xorg_list output_pending_clients; static inline void output_pending_mark(ClientPtr client) { -if (xorg_list_is_empty(>output_pending)) +if (!client->clientGone && xorg_list_is_empty(>output_pending)) xorg_list_append(>output_pending, _pending_clients); } ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
[PATCH xserver] glamor: restore vfunc handlers on init failure
In glamor_init(), if the minimum requirements are not met, glamor may fail after setting up its own CloseScreen() and DestroyPixmap() routines, leading to a crash when either of the two routines is called if glamor failed to complete its initialization, e.g: (EE) Backtrace: (EE) 0: Xwayland (OsSigHandler+0x29) (EE) 1: /lib64/libpthread.so.0 (__restore_rt+0x0) (EE) 2: Xwayland (glamor_sync_close+0x2a) (EE) 3: Xwayland (glamor_close_screen+0x52) (EE) 4: Xwayland (CursorCloseScreen+0x88) (EE) 5: Xwayland (AnimCurCloseScreen+0xa4) (EE) 6: Xwayland (present_close_screen+0x42) (EE) 7: Xwayland (dix_main+0x4f9) (EE) 8: /lib64/libc.so.6 (__libc_start_main+0xf1) (EE) 9: Xwayland (_start+0x2a) Restore the previous CloseScreen() and DestroyPixmap() vfunc handlers in case of failure when checking for the minimum requirements, so that if any of the requirement is not met we don't leave the CloseScreen() and DestroyPixmap() from glamor handlers in place. Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1390018 Signed-off-by: Olivier Fourdan--- glamor/glamor.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/glamor/glamor.c b/glamor/glamor.c index b771832..c54cf3b 100644 --- a/glamor/glamor.c +++ b/glamor/glamor.c @@ -470,7 +470,7 @@ glamor_init(ScreenPtr screen, unsigned int flags) LogMessage(X_WARNING, "glamor%d: Failed to allocate screen private\n", screen->myNum); -goto fail; +goto free_glamor_private; } glamor_set_screen_private(screen, glamor_priv); @@ -480,7 +480,7 @@ glamor_init(ScreenPtr screen, unsigned int flags) LogMessage(X_WARNING, "glamor%d: Failed to allocate pixmap private\n", screen->myNum); -goto fail; +goto free_glamor_private; } if (!dixRegisterPrivateKey(_gc_private_key, PRIVATE_GC, @@ -488,7 +488,7 @@ glamor_init(ScreenPtr screen, unsigned int flags) LogMessage(X_WARNING, "glamor%d: Failed to allocate gc private\n", screen->myNum); -goto fail; +goto free_glamor_private; } glamor_priv->saved_procs.close_screen = screen->CloseScreen; @@ -731,6 +731,11 @@ glamor_init(ScreenPtr screen, unsigned int flags) return TRUE; fail: +/* Restore default CloseScreen and DestroyPixmap handlers */ +screen->CloseScreen = glamor_priv->saved_procs.close_screen; +screen->DestroyPixmap = glamor_priv->saved_procs.destroy_pixmap; + + free_glamor_private: free(glamor_priv); glamor_set_screen_private(screen, NULL); return FALSE; -- 2.9.3 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel