diff options
-rw-r--r-- | .SRCINFO | 2 | ||||
-rw-r--r-- | PKGBUILD | 7 | ||||
-rw-r--r-- | git-fixes.diff | 40 |
3 files changed, 45 insertions, 4 deletions
@@ -1,6 +1,6 @@ pkgbase = xorg-server-dev pkgver = 1.19.0 - pkgrel = 4 + pkgrel = 5 url = http://xorg.freedesktop.org arch = i686 arch = x86_64 @@ -4,7 +4,7 @@ _pkgbase=xorg-server pkgname=('xorg-server-dev' 'xorg-server-xephyr-dev' 'xorg-server-xdmx-dev' 'xorg-server-xvfb-dev' 'xorg-server-xnest-dev' 'xorg-server-xwayland-dev' 'xorg-server-common-dev' 'xorg-server-devel-dev') pkgver=1.19.0 # http://lists.x.org/archives/xorg/2016-November/058437.html -pkgrel=4 # https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/xorg-server&id=9364081f4a0d663bc9461d76cc15aedd135ca9e7 +pkgrel=5 # https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/xorg-server&id=09caa03aed32e9d7a8d5322a75b116205ea7affb arch=('i686' 'x86_64') license=('custom') groups=('xorg') @@ -27,7 +27,7 @@ sha256sums=('149a708b50befc2d5a40b98d45ddd2ebe0beec018e6d0c663c43bad6210e4da3' 'SKIP' 'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9' '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776' - '63e37008fdbd0c3630db38b995d3be8891b9c2cabb46cb4dc3596ba988a259cd') + '15ae819f97b16e88974986d71c832b99fa220e8223ccaf171513e9e4c73f84dd') prepare() { cd "${_pkgbase}-${pkgver}" @@ -35,7 +35,8 @@ prepare() { msg2 "Apply upstream fixes: Revert \"damage: Make damageRegionProcessPending take a damage not a drawable\" OS: return 0 from check_timers, if we touched any of them - Glamor: Trust eglGetPlatformDisplayEXT, if it exists" + Glamor: Trust eglGetPlatformDisplayEXT, if it exists + Present: Only call present_flip_notify if vblank->queued == FALSE" patch -Np1 -i ../git-fixes.diff } diff --git a/git-fixes.diff b/git-fixes.diff index fc379fe7c48d..d3b5e17753e7 100644 --- a/git-fixes.diff +++ b/git-fixes.diff @@ -611,4 +611,44 @@ index 6b05f57..2c6d307 100644 -- cgit v0.10.2 +From e473b2bc016adacfe3fa47fdf6a8ce9f8cddff62 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com> +Date: Fri, 25 Nov 2016 17:34:05 +0900 +Subject: present: Only call present_flip_notify if vblank->queued == FALSE + +We are no longer using the present_flip_queue list only for presents +which have already been submitted to the driver for page flipping, but +also for those which we are queueing up to be flipped later, marked +with vblank->queued == TRUE. We were incorrectly calling +present_flip_notify for such entries, failing the assertion in +present_flip_notify (or presumably resulting in other undesirable +behaviour with assertions disabled). + +Reproduction recipe: Run the JavaFX test case referenced by +https://bugs.freedesktop.org/show_bug.cgi?id=98831#c6 and alt-tab out +of it while it's fullscreen. May take a few attempts to hit the +assertion failure. + +Fixes: bab0f450a719 ("present: Fix presentation of flips out of order") +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98854 +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> + +diff --git a/present/present.c b/present/present.c +index a7ca06e..ef89045 100644 +--- a/present/present.c ++++ b/present/present.c +@@ -536,7 +536,10 @@ present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc) + } + xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) { + if (vblank->event_id == event_id) { +- present_flip_notify(vblank, ust, msc); ++ if (vblank->queued) ++ present_execute(vblank, ust, msc); ++ else ++ present_flip_notify(vblank, ust, msc); + return; + } + } +-- +cgit v0.10.2 |