diff --git a/xserver/ChangeLog b/xserver/ChangeLog index 52f3822e2..eb492a455 100644 --- a/xserver/ChangeLog +++ b/xserver/ChangeLog @@ -1,3 +1,108 @@ +commit 4393c7f1ba6140a02232f04fbb434a80d663a99d +Author: Julien Cristau +Date: Mon Nov 10 16:38:52 2014 +0100 + + Bump to 1.16.2 + + Signed-off-by: Julien Cristau + +commit 151ec89574c0d1b4566137d0f2d965ef48f04ec5 +Author: Julien Cristau +Date: Sun Nov 2 11:21:33 2014 +0100 + + Bump to 1.16.1.901 + +commit a4d9637504ea4c97ca22d86c9f2e275f5253470d +Author: Chris Wilson +Date: Thu Oct 16 14:09:08 2014 +0100 + + Xext/shm: Detach SHM segment after Pixmap is released + + The GPU may still have a reference to the SHM segment which would only + be finally released when the Pixmap is destroy. So we can only detach + the SHM segment (and thereby making the memory unaccessible) after the + backend has had a chance to flush any remaining references. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85058 + Signed-off-by: Chris Wilson + Reported-and-tested-by: gedgon@gmail.com + Reviewed-by: Adam Jackson + Signed-off-by: Keith Packard + (cherry picked from commit 9b29fa957a397664463c7c78fbcc2f34d1993271) + Signed-off-by: Julien Cristau + +commit a7c207cc8e713092c51401baddbb3a30de398a34 +Author: Axel Davy +Date: Wed Oct 29 13:31:42 2014 +0100 + + Fix present_notify to return right away when querying current or past msc. + + When the target msc is past or is the current one, we want to get immediate + feedback. This patch fixes this behaviour. + + Signed-off-by: Axel Davy + Reviewed-by: Keith Packard + Signed-off-by: Keith Packard + (cherry picked from commit 882f2d10d99a04a96afc0ce0c8937e16bec3afb5) + Signed-off-by: Julien Cristau + +commit 27600a6b2056b8cf6af8b6b0f078164ef36c0767 +Author: Axel Davy +Date: Sat Sep 27 23:17:13 2014 +0200 + + Fix present_pixmap when using present_notify_msc + + Calling present_notify_msc could cancel a pending pixmap presentation. + + Signed-off-by: Axel Davy + Reviewed-by: Keith Packard + Signed-off-by: Keith Packard + (cherry picked from commit 9bc01dfc7070a40f5948588895b3a11dd1636d0e) + Signed-off-by: Julien Cristau + +commit 0e62f275aa02c5694fd714f3bbd5271836142755 +Author: Peter Hutterer +Date: Mon Aug 4 10:47:03 2014 +1000 + + xkb: ignore floating slave devices when updating from master (#81885) + + Introduced in 45fb3a934dc0db51584aba37c2f9d73deff9191d. When a device is + enabled, the master's locked state is pushed to the slave. If the device is + floating, no master exists and we triggered a NULL-pointer dereference + in XkbPushLockedStateToSlaves. + + X.Org Bug 81885 + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + Signed-off-by: Keith Packard + (cherry picked from commit 1e30fc1b99bda040038e4fd56d1b27c686b44c75) + Signed-off-by: Julien Cristau + +commit f7ca20cacfd4e0304d01f29491ae8363fd482279 +Author: Takashi Iwai +Date: Tue Aug 19 15:57:22 2014 -0500 + + fb: Fix invalid bpp for 24bit depth window + + We have a hack in fb layer for a 24bpp screen to use 32bpp images, and + fbCreateWindow() replaces its drawable.bitsPerPixel field + appropriately. But, the problem is that it always replaces when 32bpp + is passed. If the depth is 32, this results in bpp < depth, which is + actually invalid. + + Meanwhile, fbCreatePixmap() has a more check and it creates with 24bpp + only when the passed depth <= 24 for avoiding such a problem. + + This oneliner patch just adds the similar check in fbCreateWindow(). + This (hopefully) fixes the long-standing broken graphics mess of + cirrus KMS with 24bpp. + + Signed-off-by: Takashi Iwai + Reviewed-by: Keith Packard + (cherry picked from commit fe5018e0564118a7a8198fa286186fdb9ed818c7) + Signed-off-by: Julien Cristau + commit 0e0951ce3eb33242934df9b683f8f5ca4fd501af Author: Julien Cristau Date: Sun Sep 21 10:56:53 2014 +0200 diff --git a/xserver/Makefile.in b/xserver/Makefile.in index cfc4a2b11..ea16d0f89 100644 --- a/xserver/Makefile.in +++ b/xserver/Makefile.in @@ -54,8 +54,8 @@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/xorg-server.pc.in \ $(srcdir)/xserver.ent.in $(top_srcdir)/configure COPYING \ - ChangeLog INSTALL compile config.guess config.sub depcomp \ - install-sh ltmain.sh missing ylwrap + ChangeLog INSTALL config.guess config.sub depcomp install-sh \ + ltmain.sh missing ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ diff --git a/xserver/Xext/shm.c b/xserver/Xext/shm.c index 4dad8b6c6..b78791836 100644 --- a/xserver/Xext/shm.c +++ b/xserver/Xext/shm.c @@ -248,21 +248,20 @@ ShmDestroyPixmap(PixmapPtr pPixmap) { ScreenPtr pScreen = pPixmap->drawable.pScreen; ShmScrPrivateRec *screen_priv = ShmGetScreenPriv(pScreen); + void *shmdesc = NULL; Bool ret; - if (pPixmap->refcnt == 1) { - ShmDescPtr shmdesc; - - shmdesc = (ShmDescPtr) dixLookupPrivate(&pPixmap->devPrivates, - shmPixmapPrivateKey); - if (shmdesc) - ShmDetachSegment((void *) shmdesc, pPixmap->drawable.id); - } + if (pPixmap->refcnt == 1) + shmdesc = dixLookupPrivate(&pPixmap->devPrivates, shmPixmapPrivateKey); pScreen->DestroyPixmap = screen_priv->destroyPixmap; ret = (*pScreen->DestroyPixmap) (pPixmap); screen_priv->destroyPixmap = pScreen->DestroyPixmap; pScreen->DestroyPixmap = ShmDestroyPixmap; + + if (shmdesc) + ShmDetachSegment(shmdesc, pPixmap->drawable.id); + return ret; } diff --git a/xserver/configure b/xserver/configure index 6fb362f3e..b9a5f2e43 100644 --- a/xserver/configure +++ b/xserver/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xorg-server 1.16.1. +# Generated by GNU Autoconf 2.69 for xorg-server 1.16.2. # # Report bugs to . # @@ -651,8 +651,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xorg-server' PACKAGE_TARNAME='xorg-server' -PACKAGE_VERSION='1.16.1' -PACKAGE_STRING='xorg-server 1.16.1' +PACKAGE_VERSION='1.16.2' +PACKAGE_STRING='xorg-server 1.16.2' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' PACKAGE_URL='' @@ -2063,7 +2063,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xorg-server 1.16.1 to adapt to many kinds of systems. +\`configure' configures xorg-server 1.16.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2133,7 +2133,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xorg-server 1.16.1:";; + short | recursive ) echo "Configuration of xorg-server 1.16.2:";; esac cat <<\_ACEOF @@ -2579,7 +2579,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xorg-server configure 1.16.1 +xorg-server configure 1.16.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3288,7 +3288,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xorg-server $as_me 1.16.1, which was +It was created by xorg-server $as_me 1.16.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3636,7 +3636,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -RELEASE_DATE="2014-09-21" +RELEASE_DATE="2014-11-10" RELEASE_NAME="Marionberry Pie" @@ -4116,7 +4116,7 @@ fi # Define the identity of the package. PACKAGE='xorg-server' - VERSION='1.16.1' + VERSION='1.16.2' cat >>confdefs.h <<_ACEOF @@ -26006,7 +26006,7 @@ $as_echo "#define GLXEXT 1" >>confdefs.h GLX_LIBS='$(top_builddir)/glx/libglx.la' GLX_SYS_LIBS="$GLX_SYS_LIBS $GL_LIBS" else - GLX=no + GLX=no fi if test "x$GLX" = xyes; then GLX_TRUE= @@ -26018,7 +26018,7 @@ fi if test "x$GLX" = xno; then - AIGLX=no + AIGLX=no fi if test "x$AIGLX" = xyes -a \( "x$DRI2" = xyes \); then @@ -32693,7 +32693,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xorg-server $as_me 1.16.1, which was +This file was extended by xorg-server $as_me 1.16.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -32759,7 +32759,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xorg-server config.status 1.16.1 +xorg-server config.status 1.16.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/xserver/configure.ac b/xserver/configure.ac index aadfb22db..f3f1a2d49 100644 --- a/xserver/configure.ac +++ b/xserver/configure.ac @@ -26,8 +26,8 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.60) -AC_INIT([xorg-server], 1.16.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2014-09-21" +AC_INIT([xorg-server], 1.16.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2014-11-10" RELEASE_NAME="Marionberry Pie" AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/xserver/dix/devices.c b/xserver/dix/devices.c index 7f079ffa1..9e1c546e8 100644 --- a/xserver/dix/devices.c +++ b/xserver/dix/devices.c @@ -416,7 +416,7 @@ EnableDevice(DeviceIntPtr dev, BOOL sendevent) XISendDeviceHierarchyEvent(flags); } - if (!IsMaster(dev)) + if (!IsMaster(dev) && !IsFloating(dev)) XkbPushLockedStateToSlaves(GetMaster(dev, MASTER_KEYBOARD), 0, 0); RecalculateMasterButtons(dev); diff --git a/xserver/fb/fbwindow.c b/xserver/fb/fbwindow.c index 368c4b883..c90175faa 100644 --- a/xserver/fb/fbwindow.c +++ b/xserver/fb/fbwindow.c @@ -33,7 +33,7 @@ fbCreateWindow(WindowPtr pWin) { dixSetPrivate(&pWin->devPrivates, fbGetWinPrivateKey(pWin), fbGetScreenPixmap(pWin->drawable.pScreen)); - if (pWin->drawable.bitsPerPixel == 32) + if (pWin->drawable.bitsPerPixel == 32 && pWin->drawable.depth <= 24) pWin->drawable.bitsPerPixel = fbGetScreenPrivate(pWin->drawable.pScreen)->win32bpp; return TRUE; diff --git a/xserver/present/present.c b/xserver/present/present.c index 3aea0d7c6..cf283f476 100644 --- a/xserver/present/present.c +++ b/xserver/present/present.c @@ -762,7 +762,7 @@ present_pixmap(WindowPtr window, * in the same frame */ - if (!update) { + if (!update && pixmap) { xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->vblank, window_list) { if (!vblank->pixmap) @@ -858,7 +858,7 @@ present_pixmap(WindowPtr window, xorg_list_add(&vblank->event_queue, &present_exec_queue); vblank->queued = TRUE; - if (target_msc >= crtc_msc) { + if ((pixmap && target_msc >= crtc_msc) || (!pixmap && target_msc > crtc_msc)) { ret = present_queue_vblank(screen, target_crtc, vblank->event_id, target_msc); if (ret != Success) { xorg_list_del(&vblank->event_queue); @@ -921,7 +921,7 @@ present_notify_msc(WindowPtr window, 0, 0, NULL, NULL, NULL, - 0, + PresentOptionAsync, target_msc, divisor, remainder, NULL, 0); }