debian/changelog | 22 debian/patches/glamor-swizzle-red-to-0-for-alpha-textures.diff | 31 debian/patches/make-sure-hw-cursor-is-hidden-when-it-should.diff | 36 debian/patches/os-treat-ssh-as-a-non-local-client.diff | 97 ++ debian/patches/present-only-requeue-for-next-msc-after-flip-fail.diff | 35 debian/patches/series | 8 debian/patches/vidmode-reduce-verbosity-of-getmodeline.diff | 372 ++++++++++ 7 files changed, 600 insertions(+), 1 deletion(-)
New commits: commit f490b1a14ae0b562fcce67b2daac7656a906ff83 Author: Timo Aaltonen <tjaal...@debian.org> Date: Tue Mar 29 10:46:07 2016 +0300 update changelog diff --git a/debian/changelog b/debian/changelog index 0e160a0..7615660 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,15 +1,4 @@ -xorg-server (2:1.18.2-3) unstable; urgency=medium - - * regression fixes part2: - - replace revert-eb5108b870.diff with patch from upstream - - make-sure-hw-cursor-is-hidden-when-it-should.diff: Don't show an - extra cursor in some cases - * os-treat-ssh-as-a-non-local-client.diff: Allow remote clients to work - with DRI3. - - -- Timo Aaltonen <tjaal...@debian.org> Tue, 29 Mar 2016 10:38:47 +0300 - -xorg-server (2:1.18.2-2ubuntu1) UNRELEASED; urgency=medium +xorg-server (2:1.18.2-3ubuntu1) UNRELEASED; urgency=medium * Merge from Debian. * fix-xineramaqueryscreens-for-reverse-prime.diff, @@ -22,6 +11,17 @@ xorg-server (2:1.18.2-2ubuntu1) UNRELEASED; urgency=medium -- Timo Aaltonen <tjaal...@debian.org> Sat, 12 Mar 2016 08:59:43 +0200 +xorg-server (2:1.18.2-3) unstable; urgency=medium + + * regression fixes part2: + - replace revert-eb5108b870.diff with patch from upstream + - make-sure-hw-cursor-is-hidden-when-it-should.diff: Don't show an + extra cursor in some cases + * os-treat-ssh-as-a-non-local-client.diff: Allow remote clients to work + with DRI3. + + -- Timo Aaltonen <tjaal...@debian.org> Tue, 29 Mar 2016 10:38:47 +0300 + xorg-server (2:1.18.2-2) unstable; urgency=medium * regression fixes/workarounds: commit fe1d88778d3940550f30b85a7323fc1e3935eaaa Author: Timo Aaltonen <tjaal...@debian.org> Date: Tue Mar 29 10:39:02 2016 +0300 release to unstable diff --git a/debian/changelog b/debian/changelog index 2374ba2..9169531 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xorg-server (2:1.18.2-3) UNRELEASED; urgency=medium +xorg-server (2:1.18.2-3) unstable; urgency=medium * regression fixes part2: - replace revert-eb5108b870.diff with patch from upstream @@ -7,7 +7,7 @@ xorg-server (2:1.18.2-3) UNRELEASED; urgency=medium * os-treat-ssh-as-a-non-local-client.diff: Allow remote clients to work with DRI3. - -- Timo Aaltonen <tjaal...@debian.org> Tue, 29 Mar 2016 10:16:23 +0300 + -- Timo Aaltonen <tjaal...@debian.org> Tue, 29 Mar 2016 10:38:47 +0300 xorg-server (2:1.18.2-2) unstable; urgency=medium commit 99ea495eaeacfcbe5defa412d6922a0966c27c3a Author: Timo Aaltonen <tjaal...@debian.org> Date: Tue Mar 29 10:34:50 2016 +0300 more regression fixes, plus fix remote clients with DRI3 diff --git a/debian/changelog b/debian/changelog index 24902b1..2374ba2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +xorg-server (2:1.18.2-3) UNRELEASED; urgency=medium + + * regression fixes part2: + - replace revert-eb5108b870.diff with patch from upstream + - make-sure-hw-cursor-is-hidden-when-it-should.diff: Don't show an + extra cursor in some cases + * os-treat-ssh-as-a-non-local-client.diff: Allow remote clients to work + with DRI3. + + -- Timo Aaltonen <tjaal...@debian.org> Tue, 29 Mar 2016 10:16:23 +0300 + xorg-server (2:1.18.2-2) unstable; urgency=medium * regression fixes/workarounds: diff --git a/debian/patches/make-sure-hw-cursor-is-hidden-when-it-should.diff b/debian/patches/make-sure-hw-cursor-is-hidden-when-it-should.diff new file mode 100644 index 0000000..4e1b26b --- /dev/null +++ b/debian/patches/make-sure-hw-cursor-is-hidden-when-it-should.diff @@ -0,0 +1,36 @@ +commit 418fe365b45a143680d3b4143dc60f7cdc5a3507 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Mar 24 17:34:23 2016 +0900 + + xfree86/modes: Make sure the HW cursor is hidden when it should be + + When the HW cursor is hidden (e.g. because xf86CursorResetCursor + triggers a switch from HW cursor to SW cursor), the driver isn't + notified of this for disabled CRTCs. If the HW cursor was shown when the + CRTC was disabled, it may still be displayed when the CRTC is enabled + again. + + Prevent this by explicitly hiding the HW cursor again after setting a + mode if it's currently supposed to be hidden. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94560 + Reviewed-by: Adam Jackson <a...@redhat.com> + Signed-off-by: Michel Dänzer <michel.daen...@amd.com> + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 2639a30..6091b5e 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -368,6 +368,12 @@ xf86CrtcSetModeTransform(xf86CrtcPtr crtc, DisplayModePtr mode, + xf86CrtcSetScreenSubpixelOrder(scrn->pScreen); + if (scrn->ModeSet) + scrn->ModeSet(scrn); ++ ++ /* Make sure the HW cursor is hidden if it's supposed to be, in case ++ * it was hidden while the CRTC was disabled ++ */ ++ if (!xf86_config->cursor_on) ++ xf86_hide_cursors(scrn); + } + else { + crtc->x = saved_x; diff --git a/debian/patches/os-treat-ssh-as-a-non-local-client.diff b/debian/patches/os-treat-ssh-as-a-non-local-client.diff new file mode 100644 index 0000000..0b879bf --- /dev/null +++ b/debian/patches/os-treat-ssh-as-a-non-local-client.diff @@ -0,0 +1,97 @@ +commit adefbaee499b9679c6cac21f52ec6545af2b36b5 +Author: Adam Jackson <a...@redhat.com> +Date: Mon Mar 28 18:11:09 2016 +0900 + + os: Treat ssh as a non-local client (v4) + + By the time we get to ComputeLocalClient, we've already done + NextAvailableClient → ReserveClientIds → DetermineClientCmd (assuming + we're built with #define CLIENTIDS), so we can look up the name of the + client process and refuse to treat ssh's X forwarding as if it were + local. + + v2: (Michel Dänzer) + * Only match "ssh" itself, not other executable names starting with + that prefix. + * Ignore executable path for the match. + v3: (Michel Dänzer) + * Use GetClientCmdName (Mark Kettenis) + * Perform check on Windows as well, but only ignore path on Cygwin + (Martin Peres, Emil Velikov, Jon Turney) + v4: (Michel Dänzer) + * Cut of any colon and whatever comes after it. (Adam Jackson) + * Add bugzilla reference. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93261 + + Signed-off-by: Adam Jackson <a...@redhat.com> + Signed-off-by: Michel Dänzer <michel.daen...@amd.com> + +diff --git a/os/access.c b/os/access.c +index 8b2177f..58f95a9 100644 +--- a/os/access.c ++++ b/os/access.c +@@ -173,6 +173,10 @@ SOFTWARE. + + #endif /* WIN32 */ + ++#if !defined(WIN32) || defined(__CYGWIN__) ++#include <libgen.h> ++#endif ++ + #define X_INCLUDE_NETDB_H + #include <X11/Xos_r.h> + +@@ -1080,9 +1084,8 @@ ResetHosts(const char *display) + } + } + +-/* Is client on the local host */ +-Bool +-ComputeLocalClient(ClientPtr client) ++static Bool ++xtransLocalClient(ClientPtr client) + { + int alen, family, notused; + Xtransaddr *from = NULL; +@@ -1115,6 +1118,40 @@ ComputeLocalClient(ClientPtr client) + return FALSE; + } + ++/* Is client on the local host */ ++Bool ++ComputeLocalClient(ClientPtr client) ++{ ++ const char *cmdname = GetClientCmdName(client); ++ ++ if (!xtransLocalClient(client)) ++ return FALSE; ++ ++ /* If the executable name is "ssh", assume that this client connection ++ * is forwarded from another host via SSH ++ */ ++ if (cmdname) { ++ char **cmd; ++ Bool ret; ++ ++ /* Cut off any colon and whatever comes after it, see ++ * https://lists.freedesktop.org/archives/xorg-devel/2015-December/048164.html ++ */ ++ cmd = xstrtokenize(cmdname, ":"); ++ ++#if !defined(WIN32) || defined(__CYGWIN__) ++ cmd[0] = basename(cmd[0]); ++#endif ++ ++ ret = strcmp(cmd[0], "ssh") != 0; ++ free(cmd); ++ ++ return ret; ++ } ++ ++ return TRUE; ++} ++ + /* + * Return the uid and all gids of a connected local client + * Allocates a LocalClientCredRec - caller must call FreeLocalClientCreds diff --git a/debian/patches/present-only-requeue-for-next-msc-after-flip-fail.diff b/debian/patches/present-only-requeue-for-next-msc-after-flip-fail.diff new file mode 100644 index 0000000..6794fc7 --- /dev/null +++ b/debian/patches/present-only-requeue-for-next-msc-after-flip-fail.diff @@ -0,0 +1,35 @@ +commit 3b385105b2d19a1c55e9779ae88d775185eea231 +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Thu Mar 24 17:42:47 2016 +0900 + + present: Only requeue for next MSC after flip failure + + This code was added to deal with the driver present hook failing, in + which case we need to wait for the next MSC before executing the + presentation. + + However, it could also take effect in cases where the driver incorrectly + thinks the current MSC matches the target one (e.g. due to the kernel + interface only supporting 32-bit MSC values), in which case it could + result in the presentation getting requeued over and over. + + To prevent such issues, check specifically for the target MSC + immediately following the current MSC. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94596 + Signed-off-by: Michel Dänzer <michel.daen...@amd.com> + Reviewed-by: Keith Packard <kei...@keithp.com> + +diff --git a/present/present.c b/present/present.c +index 55f6aa7..105e2bf 100644 +--- a/present/present.c ++++ b/present/present.c +@@ -726,7 +726,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc) + } + + /* If present_flip failed, we may have to requeue for the target MSC */ +- if (msc_is_after(vblank->target_msc, crtc_msc) && ++ if (vblank->target_msc == crtc_msc + 1 && + Success == present_queue_vblank(screen, + vblank->crtc, + vblank->event_id, diff --git a/debian/patches/revert-eb5108b870.diff b/debian/patches/revert-eb5108b870.diff deleted file mode 100644 index 0b4e59d..0000000 --- a/debian/patches/revert-eb5108b870.diff +++ /dev/null @@ -1,35 +0,0 @@ -this reverts: - -commit eb5108b87017128f394ae31b5b7cd85dd8819bca -Author: Michel Dänzer <michel.daen...@amd.com> -Date: Wed Feb 24 16:52:58 2016 +0900 - - present: Requeue if flip driver hook fails and target MSC not reached - -some intel users suffer from frozen X because of it - -diff --git b/present/present.c a/present/present.c -index 7f9fc17..17ec526 100644 ---- b/present/present.c -+++ a/present/present.c -@@ -712,20 +712,6 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc) - if (window == screen_priv->flip_window) - present_unflip(screen); - } -- -- /* If present_flip failed, we may have to requeue for the target MSC */ -- if (msc_is_after(vblank->target_msc, crtc_msc) && -- Success == present_queue_vblank(screen, -- vblank->crtc, -- vblank->event_id, -- vblank->target_msc)) { -- xorg_list_add(&vblank->event_queue, &present_exec_queue); -- xorg_list_append(&vblank->window_list, -- &present_get_window_priv(window, TRUE)->vblank); -- vblank->queued = TRUE; -- return; -- } -- - present_copy_region(&window->drawable, vblank->pixmap, vblank->update, vblank->x_off, vblank->y_off); - - /* present_copy_region sticks the region into a scratch GC, diff --git a/debian/patches/series b/debian/patches/series index 5440ad0..4429400 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -9,4 +9,7 @@ # 1.18.2 regression fixes/workarounds vidmode-reduce-verbosity-of-getmodeline.diff glamor-swizzle-red-to-0-for-alpha-textures.diff -revert-eb5108b870.diff +present-only-requeue-for-next-msc-after-flip-fail.diff +make-sure-hw-cursor-is-hidden-when-it-should.diff + +os-treat-ssh-as-a-non-local-client.diff commit 481e6de95910ffbe9794c004bde956003ace50d1 Author: Timo Aaltonen <tjaal...@debian.org> Date: Tue Mar 22 09:47:36 2016 +0200 release to unstable diff --git a/debian/changelog b/debian/changelog index 01b83b0..24902b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -xorg-server (2:1.18.2-2) UNRELEASED; urgency=medium +xorg-server (2:1.18.2-2) unstable; urgency=medium * regression fixes/workarounds: vidmode-reduce-verbosity-of-getmodeline.diff (Closes: #818634) glamor-swizzle-red-to-0-for-alpha-textures.diff revert-eb5108b870.diff (Closes: #818172) - -- Timo Aaltonen <tjaal...@debian.org> Tue, 22 Mar 2016 09:37:39 +0200 + -- Timo Aaltonen <tjaal...@debian.org> Tue, 22 Mar 2016 09:47:25 +0200 xorg-server (2:1.18.2-1) unstable; urgency=medium commit 31f5363b11f4e39e04639616315c8e722ff89b38 Author: Timo Aaltonen <tjaal...@debian.org> Date: Tue Mar 22 09:42:30 2016 +0200 add some regression fixes from upstream, and one revert diff --git a/debian/changelog b/debian/changelog index f3d2dbc..01b83b0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +xorg-server (2:1.18.2-2) UNRELEASED; urgency=medium + + * regression fixes/workarounds: + vidmode-reduce-verbosity-of-getmodeline.diff (Closes: #818634) + glamor-swizzle-red-to-0-for-alpha-textures.diff + revert-eb5108b870.diff (Closes: #818172) + + -- Timo Aaltonen <tjaal...@debian.org> Tue, 22 Mar 2016 09:37:39 +0200 + xorg-server (2:1.18.2-1) unstable; urgency=medium * New upstream release. (Closes: #814982) diff --git a/debian/patches/glamor-swizzle-red-to-0-for-alpha-textures.diff b/debian/patches/glamor-swizzle-red-to-0-for-alpha-textures.diff new file mode 100644 index 0000000..e7220a9 --- /dev/null +++ b/debian/patches/glamor-swizzle-red-to-0-for-alpha-textures.diff @@ -0,0 +1,31 @@ +commit a288cf58a0dc0f965a6f964c76bb86bb1989d797 +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Mar 16 10:45:54 2016 +1000 + + glamor: swizzle RED to 0 for alpha textures + + I'm pretty sure Eric suspected this could cause a problem, and we + couldn't find a test. Well loading feedly in firefox seems to trigger + badness that this solves. + + bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94554 + Reviewed-by: Adam Jackson <a...@redhat.com> + Signed-off-by: Dave Airlie <airl...@redhat.com> + Tested-by: Timo Aaltonen <tjaal...@ubuntu.com> + +diff --git a/glamor/glamor_fbo.c b/glamor/glamor_fbo.c +index a531f60..f4f8749 100644 +--- a/glamor/glamor_fbo.c ++++ b/glamor/glamor_fbo.c +@@ -352,8 +352,10 @@ _glamor_create_tex(glamor_screen_private *glamor_priv, + glBindTexture(GL_TEXTURE_2D, tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); +- if (format == glamor_priv->one_channel_format && format == GL_RED) ++ if (format == glamor_priv->one_channel_format && format == GL_RED) { ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_ZERO); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_RED); ++ } + glamor_priv->suppress_gl_out_of_memory_logging = true; + glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, + format, GL_UNSIGNED_BYTE, NULL); diff --git a/debian/patches/revert-eb5108b870.diff b/debian/patches/revert-eb5108b870.diff new file mode 100644 index 0000000..0b4e59d --- /dev/null +++ b/debian/patches/revert-eb5108b870.diff @@ -0,0 +1,35 @@ +this reverts: + +commit eb5108b87017128f394ae31b5b7cd85dd8819bca +Author: Michel Dänzer <michel.daen...@amd.com> +Date: Wed Feb 24 16:52:58 2016 +0900 + + present: Requeue if flip driver hook fails and target MSC not reached + +some intel users suffer from frozen X because of it + +diff --git b/present/present.c a/present/present.c +index 7f9fc17..17ec526 100644 +--- b/present/present.c ++++ a/present/present.c +@@ -712,20 +712,6 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc) + if (window == screen_priv->flip_window) + present_unflip(screen); + } +- +- /* If present_flip failed, we may have to requeue for the target MSC */ +- if (msc_is_after(vblank->target_msc, crtc_msc) && +- Success == present_queue_vblank(screen, +- vblank->crtc, +- vblank->event_id, +- vblank->target_msc)) { +- xorg_list_add(&vblank->event_queue, &present_exec_queue); +- xorg_list_append(&vblank->window_list, +- &present_get_window_priv(window, TRUE)->vblank); +- vblank->queued = TRUE; +- return; +- } +- + present_copy_region(&window->drawable, vblank->pixmap, vblank->update, vblank->x_off, vblank->y_off); + + /* present_copy_region sticks the region into a scratch GC, diff --git a/debian/patches/series b/debian/patches/series index 2c8af94..5440ad0 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -5,3 +5,8 @@ 03_static-nettle.diff 05_Revert-Unload-submodules.diff #08_xfree86_fix_ia64_inx_outx.diff + +# 1.18.2 regression fixes/workarounds +vidmode-reduce-verbosity-of-getmodeline.diff +glamor-swizzle-red-to-0-for-alpha-textures.diff +revert-eb5108b870.diff diff --git a/debian/patches/vidmode-reduce-verbosity-of-getmodeline.diff b/debian/patches/vidmode-reduce-verbosity-of-getmodeline.diff new file mode 100644 index 0000000..2568262 --- /dev/null +++ b/debian/patches/vidmode-reduce-verbosity-of-getmodeline.diff @@ -0,0 +1,372 @@ +commit 75eecf28ae3709181a51571132b0accd9cae316e +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Sun Mar 13 13:54:01 2016 +0000 + + Xext/vidmode: Reduce verbosity of GetModeLine debug messages + + In commit f175cf45aebcdda53f3ae49c0eaf27da1f194e92 + Author: Olivier Fourdan <ofour...@redhat.com> + Date: Wed Feb 10 09:34:34 2016 +0100 + + vidmode: move to a separate library of its own + + the verbosity of some old debug messages (which print the reply to every + GetModeLine client request and others) was increased leading to lots of + log spam. Downgrade the logging back to DebugF. + + [ajax: Fix a typo so it compiles.] + + Reviewed-by: Adam Jackson <a...@redhat.com> + References: https://bugs.freedesktop.org/show_bug.cgi?id=94515 + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + Cc: Olivier Fourdan <ofour...@redhat.com> + +diff --git a/Xext/vidmode.c b/Xext/vidmode.c +index 7c838f4..0cbbdc3 100644 +--- a/Xext/vidmode.c ++++ b/Xext/vidmode.c +@@ -69,7 +69,7 @@ typedef struct { + dixSetPrivate(&(c)->devPrivates, VidModeClientPrivateKey, p) + + #ifdef DEBUG +-#define DEBUG_P(x) LogMessage(X_INFO, x"\n"); ++#define DEBUG_P(x) DebugF(x"\n") + #else + #define DEBUG_P(x) /**/ + #endif +@@ -267,13 +267,13 @@ ProcVidModeGetModeLine(ClientPtr client) + rep.vtotal = VidModeGetModeValue(mode, VIDMODE_V_TOTAL); + rep.flags = VidModeGetModeValue(mode, VIDMODE_FLAGS); + +- LogMessage(X_INFO, "GetModeLine - scrn: %d clock: %ld\n", +- stuff->screen, (unsigned long) rep.dotclock); +- LogMessage(X_INFO, "GetModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", +- rep.hdisplay, rep.hsyncstart, rep.hsyncend, rep.htotal); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", +- rep.vdisplay, rep.vsyncstart, rep.vsyncend, +- rep.vtotal, (unsigned long) rep.flags); ++ DebugF("GetModeLine - scrn: %d clock: %ld\n", ++ stuff->screen, (unsigned long) rep.dotclock); ++ DebugF("GetModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ rep.hdisplay, rep.hsyncstart, rep.hsyncend, rep.htotal); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", ++ rep.vdisplay, rep.vsyncstart, rep.vsyncend, ++ rep.vtotal, (unsigned long) rep.flags); + + /* + * Older servers sometimes had server privates that the VidMode +@@ -483,23 +483,23 @@ ProcVidModeAddModeLine(ClientPtr client) + stuff->after_vtotal = oldstuff->after_vtotal; + stuff->after_flags = oldstuff->after_flags; + } +- LogMessage(X_INFO, "AddModeLine - scrn: %d clock: %ld\n", +- (int) stuff->screen, (unsigned long) stuff->dotclock); +- LogMessage(X_INFO, "AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", +- stuff->hdisplay, stuff->hsyncstart, +- stuff->hsyncend, stuff->htotal); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", +- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, +- stuff->vtotal, (unsigned long) stuff->flags); +- LogMessage(X_INFO, " after - scrn: %d clock: %ld\n", +- (int) stuff->screen, (unsigned long) stuff->after_dotclock); +- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n", +- stuff->after_hdisplay, stuff->after_hsyncstart, +- stuff->after_hsyncend, stuff->after_htotal); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", +- stuff->after_vdisplay, stuff->after_vsyncstart, +- stuff->after_vsyncend, stuff->after_vtotal, +- (unsigned long) stuff->after_flags); ++ DebugF("AddModeLine - scrn: %d clock: %ld\n", ++ (int) stuff->screen, (unsigned long) stuff->dotclock); ++ DebugF("AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ stuff->hdisplay, stuff->hsyncstart, ++ stuff->hsyncend, stuff->htotal); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", ++ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, ++ stuff->vtotal, (unsigned long) stuff->flags); ++ DebugF(" after - scrn: %d clock: %ld\n", ++ (int) stuff->screen, (unsigned long) stuff->after_dotclock); ++ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ stuff->after_hdisplay, stuff->after_hsyncstart, ++ stuff->after_hsyncend, stuff->after_htotal); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", ++ stuff->after_vdisplay, stuff->after_vsyncstart, ++ stuff->after_vsyncend, stuff->after_vtotal, ++ (unsigned long) stuff->after_flags); + + if (ver < 2) { + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq); +@@ -572,7 +572,7 @@ ProcVidModeAddModeLine(ClientPtr client) + VidModeSetModeValue(mode, VIDMODE_FLAGS, stuff->flags); + + if (stuff->privsize) +- LogMessage(X_INFO, "AddModeLine - Privates in request have been ignored\n"); ++ DebugF("AddModeLine - Privates in request have been ignored\n"); + + /* Check that the mode is consistent with the monitor specs */ + switch (pVidMode->CheckModeForMonitor(pScreen, mode)) { +@@ -601,7 +601,7 @@ ProcVidModeAddModeLine(ClientPtr client) + + pVidMode->AddModeline(pScreen, mode); + +- LogMessage(X_INFO, "AddModeLine - Succeeded\n"); ++ DebugF("AddModeLine - Succeeded\n"); + + return Success; + } +@@ -640,14 +640,14 @@ ProcVidModeDeleteModeLine(ClientPtr client) + stuff->flags = oldstuff->flags; + stuff->privsize = oldstuff->privsize; + } +- LogMessage(X_INFO, "DeleteModeLine - scrn: %d clock: %ld\n", +- (int) stuff->screen, (unsigned long) stuff->dotclock); +- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n", +- stuff->hdisplay, stuff->hsyncstart, +- stuff->hsyncend, stuff->htotal); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", +- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, +- (unsigned long) stuff->flags); ++ DebugF("DeleteModeLine - scrn: %d clock: %ld\n", ++ (int) stuff->screen, (unsigned long) stuff->dotclock); ++ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ stuff->hdisplay, stuff->hsyncstart, ++ stuff->hsyncend, stuff->htotal); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", ++ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, ++ (unsigned long) stuff->flags); + + if (ver < 2) { + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq); +@@ -662,11 +662,11 @@ ProcVidModeDeleteModeLine(ClientPtr client) + bytes_to_int32(sizeof(xXF86VidModeDeleteModeLineReq)); + } + if (len != stuff->privsize) { +- LogMessage(X_INFO, "req_len = %ld, sizeof(Req) = %d, privsize = %ld, " +- "len = %d, length = %d\n", +- (unsigned long) client->req_len, +- (int) sizeof(xXF86VidModeDeleteModeLineReq) >> 2, +- (unsigned long) stuff->privsize, len, stuff->length); ++ DebugF("req_len = %ld, sizeof(Req) = %d, privsize = %ld, " ++ "len = %d, length = %d\n", ++ (unsigned long) client->req_len, ++ (int) sizeof(xXF86VidModeDeleteModeLineReq) >> 2, ++ (unsigned long) stuff->privsize, len, stuff->length); + return BadLength; + } + +@@ -681,46 +681,46 @@ ProcVidModeDeleteModeLine(ClientPtr client) + if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) + return BadValue; + +- LogMessage(X_INFO, "Checking against clock: %d (%d)\n", ++ DebugF("Checking against clock: %d (%d)\n", ++ VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); ++ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), ++ VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), ++ VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), ++ VidModeGetModeValue(mode, VIDMODE_H_TOTAL)); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", ++ VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), ++ VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), ++ VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), ++ VidModeGetModeValue(mode, VIDMODE_V_TOTAL), ++ VidModeGetModeValue(mode, VIDMODE_FLAGS)); ++ ++ if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) && ++ MODEMATCH(mode, stuff)) ++ return BadValue; ++ ++ if (!pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) ++ return BadValue; ++ ++ do { ++ DebugF("Checking against clock: %d (%d)\n", + VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); +- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", + VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), + VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), + VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), + VidModeGetModeValue(mode, VIDMODE_H_TOTAL)); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", + VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), + VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), + VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), + VidModeGetModeValue(mode, VIDMODE_V_TOTAL), + VidModeGetModeValue(mode, VIDMODE_FLAGS)); + +- if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) && +- MODEMATCH(mode, stuff)) +- return BadValue; +- +- if (!pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) +- return BadValue; +- +- do { +- LogMessage(X_INFO, "Checking against clock: %d (%d)\n", +- VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); +- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n", +- VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), +- VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), +- VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), +- VidModeGetModeValue(mode, VIDMODE_H_TOTAL)); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", +- VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), +- VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), +- VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), +- VidModeGetModeValue(mode, VIDMODE_V_TOTAL), +- VidModeGetModeValue(mode, VIDMODE_FLAGS)); +- + if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) && + MODEMATCH(mode, stuff)) { + pVidMode->DeleteModeline(pScreen, mode); +- LogMessage(X_INFO, "DeleteModeLine - Succeeded\n"); ++ DebugF("DeleteModeLine - Succeeded\n"); + return Success; + } + } while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock)); +@@ -761,12 +761,12 @@ ProcVidModeModModeLine(ClientPtr client) + stuff->flags = oldstuff->flags; + stuff->privsize = oldstuff->privsize; + } +- LogMessage(X_INFO, "ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n", +- (int) stuff->screen, stuff->hdisplay, stuff->hsyncstart, +- stuff->hsyncend, stuff->htotal); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", +- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, +- stuff->vtotal, (unsigned long) stuff->flags); ++ DebugF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ (int) stuff->screen, stuff->hdisplay, stuff->hsyncstart, ++ stuff->hsyncend, stuff->htotal); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", ++ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, ++ stuff->vtotal, (unsigned long) stuff->flags); + + if (ver < 2) { + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq); +@@ -816,7 +816,7 @@ ProcVidModeModModeLine(ClientPtr client) + VidModeSetModeValue(modetmp, VIDMODE_FLAGS, stuff->flags); + + if (stuff->privsize) +- LogMessage(X_INFO, "ModModeLine - Privates in request have been ignored\n"); ++ DebugF("ModModeLine - Privates in request have been ignored\n"); + + /* Check that the mode is consistent with the monitor specs */ + switch (pVidMode->CheckModeForMonitor(pScreen, modetmp)) { +@@ -856,7 +856,7 @@ ProcVidModeModModeLine(ClientPtr client) + pVidMode->SetCrtcForMode(pScreen, mode); + pVidMode->SwitchMode(pScreen, mode); + +- LogMessage(X_INFO, "ModModeLine - Succeeded\n"); ++ DebugF("ModModeLine - Succeeded\n"); + return Success; + } + +@@ -896,14 +896,14 @@ ProcVidModeValidateModeLine(ClientPtr client) + stuff->privsize = oldstuff->privsize; + } + +- LogMessage(X_INFO, "ValidateModeLine - scrn: %d clock: %ld\n", +- (int) stuff->screen, (unsigned long) stuff->dotclock); +- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n", +- stuff->hdisplay, stuff->hsyncstart, +- stuff->hsyncend, stuff->htotal); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", +- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, +- (unsigned long) stuff->flags); ++ DebugF("ValidateModeLine - scrn: %d clock: %ld\n", ++ (int) stuff->screen, (unsigned long) stuff->dotclock); ++ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ stuff->hdisplay, stuff->hsyncstart, ++ stuff->hsyncend, stuff->htotal); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", ++ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, ++ (unsigned long) stuff->flags); + + if (ver < 2) { + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq); +@@ -956,7 +956,7 @@ ProcVidModeValidateModeLine(ClientPtr client) + VidModeSetModeValue(modetmp, VIDMODE_V_TOTAL, stuff->vtotal); + VidModeSetModeValue(modetmp, VIDMODE_FLAGS, stuff->flags); + if (stuff->privsize) +- LogMessage(X_INFO, "ValidateModeLine - Privates in request have been ignored\n"); ++ DebugF("ValidateModeLine - Privates in request have been ignored\n"); + + /* Check that the mode is consistent with the monitor specs */ + if ((status = +@@ -982,7 +982,7 @@ ProcVidModeValidateModeLine(ClientPtr client) + swapl(&rep.status); + } + WriteToClient(client, sizeof(xXF86VidModeValidateModeLineReply), &rep); +- LogMessage(X_INFO, "ValidateModeLine - Succeeded (status = %d)\n", status); ++ DebugF("ValidateModeLine - Succeeded (status = %d)\n", status); + + return Success; + } +@@ -1046,14 +1046,14 @@ ProcVidModeSwitchToMode(ClientPtr client) + stuff->privsize = oldstuff->privsize; + } + +- LogMessage(X_INFO, "SwitchToMode - scrn: %d clock: %ld\n", +- (int) stuff->screen, (unsigned long) stuff->dotclock); +- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n", +- stuff->hdisplay, stuff->hsyncstart, +- stuff->hsyncend, stuff->htotal); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", +- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, +- (unsigned long) stuff->flags); ++ DebugF("SwitchToMode - scrn: %d clock: %ld\n", ++ (int) stuff->screen, (unsigned long) stuff->dotclock); ++ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ stuff->hdisplay, stuff->hsyncstart, ++ stuff->hsyncend, stuff->htotal); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", ++ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, ++ (unsigned long) stuff->flags); + + if (ver < 2) { + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeSwitchToModeReq); +@@ -1089,19 +1089,19 @@ ProcVidModeSwitchToMode(ClientPtr client) + return BadValue; + + do { +- LogMessage(X_INFO, "Checking against clock: %d (%d)\n", +- VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); +- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n", +- VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), +- VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), +- VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), +- VidModeGetModeValue(mode, VIDMODE_H_TOTAL)); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", +- VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), +- VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), +- VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), +- VidModeGetModeValue(mode, VIDMODE_V_TOTAL), +- VidModeGetModeValue(mode, VIDMODE_FLAGS)); ++ DebugF("Checking against clock: %d (%d)\n", ++ VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); ++ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), ++ VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), ++ VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), ++ VidModeGetModeValue(mode, VIDMODE_H_TOTAL)); ++ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", ++ VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), ++ VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), ++ VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), ++ VidModeGetModeValue(mode, VIDMODE_V_TOTAL), ++ VidModeGetModeValue(mode, VIDMODE_FLAGS)); + + if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) && + MODEMATCH(mode, stuff)) { +@@ -1109,7 +1109,7 @@ ProcVidModeSwitchToMode(ClientPtr client) + if (!pVidMode->SwitchMode(pScreen, mode)) + return BadValue; + +- LogMessage(X_INFO, "SwitchToMode - Succeeded\n"); ++ DebugF("SwitchToMode - Succeeded\n"); + return Success; + } + } while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock));