<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/6746eecb6c3bbc2de9b553de097feefa3696f1f9">https://github.com/macports/macports-ports/commit/6746eecb6c3bbc2de9b553de097feefa3696f1f9</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 6746eecb6c3bbc2de9b553de097feefa3696f1f9
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Thu Apr 4 17:31:27 2019 +0100
<span style='display:block; white-space:pre;color:#404040;'> xorg-server-1.18: New port, legacy version of X11 server
</span>---
x11/xorg-server-1.18/Portfile | 150 +++
...-the-issue-where-the-h-key-could-be-come-.patch | 42 +
...anup-CPPFLAGS-that-are-no-longer-necessar.patch | 28 +
...on-Improve-abstraction-for-launchd-secure.patch | 73 +
...k-around-an-issue-that-can-occur-on-macOS.patch | 59 +
.../5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch | 41 +
...evert-dix-Restore-PaintWindow-screen-hook.patch | 348 +++++
...the-GC-clipping-problem-in-miPaintWindow-.patch | 158 +++
...old-miTrapezoids-and-miTriangles-routines.patch | 289 ++++
...4-fb-Revert-fb-changes-that-broke-XQuartz.patch | 320 +++++
...5-fb-Revert-fb-changes-that-broke-XQuartz.patch | 243 ++++
.../files/dri/GL/internal/dri_interface.h | 1409 ++++++++++++++++++++
x11/xorg-server-1.18/files/include/Xplugin.h | 592 ++++++++
13 files changed, 3752 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/Portfile b/x11/xorg-server-1.18/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..f9303ac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,150 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup compiler_blacklist_versions 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name xorg-server-1.18
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts xorg-server xorg-server-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set my_name xorg-server
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 1.18.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories x11 devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license X11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description The X.org / Xquartz X server.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://www.x.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms darwin macosx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description The X.org X server allows you to run X11 applications on your computer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#master_sites http://xquartz.macosforge.org/downloads/src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites http://xorg.freedesktop.org/archive/individual/xserver/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#master_sites xorg:individual/xserver/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dist_subdir ${my_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname ${my_name}-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 6f58d84d3bbc59a773e6a2e1eafc208827a5923f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 278459b2c31d61a15655d95a72fb79930c480a6bb8cf9226e48a07df8b1d31c8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 6009508
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_bzip2 yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_parallel_build yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Yes, mesa is a *BUILD* dependency
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:pkgconfig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:mesa \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-xorgproto \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-xtrans
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This xinit dependency needs to be port: not bin: because we specifically run ${prefix}/bin/startx from bundle-main.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xinit \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:quartz-wm \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-fonts \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xkeyboard-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path:lib/pkgconfig/pixman-1.pc:libpixman \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-libxkbfile \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-libXfont \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-libXt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-libAppleWM \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-libXfixes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/ticket/36055
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://llvm.org/bugs/show_bug.cgi?id=30346
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/ticket/53910
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist gcc-4.0 macports-clang-3.9 macports-clang-devel {clang >= 802 < 900}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} >= 16} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Remove this once a version of base is released that contains macports-clang-4.0 in the default fallback list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.blacklist-append macports-clang-3.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.fallback-append macports-clang-4.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args --with-apple-applications-dir=${applications_dir} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-bundle-id-prefix=org.macports \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --without-dtrace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --without-doxygen \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --without-fop \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --without-xmlto \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --disable-devel-docs \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-sha1=CommonCrypto \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --disable-dri2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --disable-dri3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# GL/internal/dri_interface.h is missing in prefix (provided by libdrm for the xorg DDX... not helpful for us)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cppflags-append -I/usr/include -I${filespath}/dri -F${configure.sdkroot}/System/Library/Frameworks/ApplicationServices.framework/Frameworks
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RAWCPP=${configure.cpp}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0001-XQuartz-Fix-the-issue-where-the-h-key-could-be-come-.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0002-XQuartz-Cleanup-CPPFLAGS-that-are-no-longer-necessar.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0003-os-connection-Improve-abstraction-for-launchd-secure.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1001-XQuartz-Hack-around-an-issue-that-can-occur-on-macOS.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5001-Revert-dix-Restore-PaintWindow-screen-hook.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5002-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5003-Use-old-miTrapezoids-and-miTriangles-routines.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5004-fb-Revert-fb-changes-that-broke-XQuartz.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5005-fb-Revert-fb-changes-that-broke-XQuartz.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoreconf yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoreconf.args -fvi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.args V=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-util-macros \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-font-util
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s Xquartz ${destroot}${prefix}/bin/X
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform macosx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if { ${os.major} < 10 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Xplugin.h is missing on Tiger and incorrect on Leopard
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cppflags-append -I${filespath}/include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant docs description "Install extra documentation" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:doxygen \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:fop \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xmlto \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xorg-sgml-doctools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_skip_archcheck-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ doxygen \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xmlto
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --without-doxygen \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --without-fop \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --without-xmlto \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --disable-devel-docs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-doxygen \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-fop \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-xmlto \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --enable-devel-docs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DOXYGEN=${prefix}/bin/doxygen \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FOP=${prefix}/bin/fop \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XMLTO=${prefix}/bin/xmlto
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url http://xorg.freedesktop.org/archive/individual/xserver/?C=M&O=D
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex ${name}-(\\d+\\.\\d+\\.\\d+)\\.tar
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/0001-XQuartz-Fix-the-issue-where-the-h-key-could-be-come-.patch b/x11/xorg-server-1.18/files/0001-XQuartz-Fix-the-issue-where-the-h-key-could-be-come-.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..3998375
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/0001-XQuartz-Fix-the-issue-where-the-h-key-could-be-come-.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,42 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b1ee5cc0015e702c8e13c3895f4b2344ab2aeacb Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 29 May 2016 14:01:38 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/3] XQuartz: Fix the issue where the h key could be come
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "stuck" after hiding XQuartz with cmd-h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The issue was that we set a flag to ignore the k key's up event when sent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the cmd-h down event, but because the cmd-h keycode hides XQuartz, we
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+became !_x_active by the time the event is delivered which caused us to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+go down a differnet codepath rather than getting a chance to ignore it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+We then incorrectly ignored the next h up key.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://bugs.freedesktop.org/show_bug.cgi?id=92648
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hw/xquartz/X11Application.m | 9 +++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 9 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d2c5d30..9a22909 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/hw/xquartz/X11Application.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/hw/xquartz/X11Application.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -366,6 +366,15 @@ message_kit_thread(SEL selector, NSObject *arg)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* No kit window is focused, so send it to X. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for_appkit = NO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Reset our swallow state if we're seeing the same keyCode again.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * This can happen if we become !_x_active when the keyCode we
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * intended to swallow is delivered. See:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * https://bugs.freedesktop.org/show_bug.cgi?id=92648
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ([e keyCode] == swallow_keycode) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ do_swallow = NO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else { /* KeyUp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.9.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/0002-XQuartz-Cleanup-CPPFLAGS-that-are-no-longer-necessar.patch b/x11/xorg-server-1.18/files/0002-XQuartz-Cleanup-CPPFLAGS-that-are-no-longer-necessar.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..28bee8a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/0002-XQuartz-Cleanup-CPPFLAGS-that-are-no-longer-necessar.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,28 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b863c6cc90f9e0d3db361fbc3210c34ed5298203 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 10 Sep 2016 22:16:11 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/3] XQuartz: Cleanup CPPFLAGS that are no longer necessary on
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hw/xquartz/pbproxy/Makefile.am | 5 ++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/hw/xquartz/pbproxy/Makefile.am b/hw/xquartz/pbproxy/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1b14dff..9429ea2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/hw/xquartz/pbproxy/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/hw/xquartz/pbproxy/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AM_CPPFLAGS=-F/System/Library/Frameworks/ApplicationServices.framework/Frameworks \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- -DBUNDLE_ID_PREFIX=\"$(BUNDLE_ID_PREFIX)\"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS=-DBUNDLE_ID_PREFIX=\"$(BUNDLE_ID_PREFIX)\"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AM_CFLAGS=$(XPBPROXY_CFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CFLAGS=$(XPBPROXY_CFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AM_OBJCFLAGS=$(XPBPROXY_CFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ noinst_LTLIBRARIES = libxpbproxy.la
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.9.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/0003-os-connection-Improve-abstraction-for-launchd-secure.patch b/x11/xorg-server-1.18/files/0003-os-connection-Improve-abstraction-for-launchd-secure.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..4ff551a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/0003-os-connection-Improve-abstraction-for-launchd-secure.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,73 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 455d862774b791f4ca93f9885e1e899208a5080c Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 10 Sep 2016 22:32:56 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3/3] os/connection: Improve abstraction for launchd secure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sockets
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This changes away from hard-coding the /tmp/launch-* path to now
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supporting a generic <path to unix socket>[.<screen>] format for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$DISPLAY.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cf-libxcb: d978a4f69b30b630f28d07f1003cf290284d24d8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ os/connection.c | 31 ++++++++++++++++++++++++++-----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 26 insertions(+), 5 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/os/connection.c b/os/connection.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a901ebf..ac7d12b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/os/connection.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/os/connection.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -79,6 +79,8 @@ SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef WIN32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/socket.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1112,15 +1114,34 @@ MakeClientGrabPervious(ClientPtr client)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ListenOnOpenFD(int fd, int noxauth)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- char port[256];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char port[PATH_MAX];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XtransConnInfo ciptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char *display_env = getenv("DISPLAY");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (display_env && (strncmp(display_env, "/tmp/launch", 11) == 0)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Make the path the launchd socket if our DISPLAY is set right */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- strcpy(port, display_env);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* First check if display_env matches a <path to unix socket>[.<screen number>] scheme (eg: launchd) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (display_env) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct stat sbuf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ strlcpy(port, display_env, sizeof(port));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* If the path exists, we don't have do do anything else.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * If it doesn't, we need to check for a .<screen number> to strip off and recheck.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (0 != stat(port, &sbuf)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *dot = strrchr(port, '.');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dot) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dot = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (0 != stat(port, &sbuf)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ display_env = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ display_env = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!display_env) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Just some default so things don't break and die. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ snprintf(port, sizeof(port), ":%d", atoi(display));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.9.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/1001-XQuartz-Hack-around-an-issue-that-can-occur-on-macOS.patch b/x11/xorg-server-1.18/files/1001-XQuartz-Hack-around-an-issue-that-can-occur-on-macOS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..16d0ea6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/1001-XQuartz-Hack-around-an-issue-that-can-occur-on-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,59 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 7c2f104ace0bfdc033145db478f17111fedaa432 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 18 Jul 2017 21:35:49 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] XQuartz: Hack around an issue that can occur on macOS due to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ background apps incorrectly stealing focus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Works around <rdar://problem/7150340>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Tested-by: Tom Lane <tgl@sss.pgh.pa.us>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hw/xquartz/X11Application.m | 29 ++++++++++++++++++++++++-----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 24 insertions(+), 5 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 768eecf68..821e1c5a1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/hw/xquartz/X11Application.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/hw/xquartz/X11Application.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -275,13 +275,32 @@ message_kit_thread(SEL selector, NSObject *arg)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (_x_active) [self activateX:NO];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if ([self modalWindow] == nil) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Must be an X window. Tell appkit it doesn't have focus. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Must be an X window. Tell appkit windows to resign main/key */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for_appkit = NO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if ([self isActive]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- [self deactivate];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!_x_active && quartzProcs->IsX11Window([e windowNumber]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- [self activateX:YES];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!_x_active && quartzProcs->IsX11Window([e windowNumber])) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ([self respondsToSelector:@selector(_setKeyWindow:)] && [self respondsToSelector:@selector(_setMainWindow:)]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSWindow *keyWindow = [self keyWindow];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (keyWindow) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ [self _setKeyWindow:nil];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ [keyWindow resignKeyWindow];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSWindow *mainWindow = [self mainWindow];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (mainWindow) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ [self _setMainWindow:nil];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ [mainWindow resignMainWindow];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* This has a side effect of causing background apps to steal focus from XQuartz.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Unfortunately, there is no public and stable API to do what we want, but this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * is a decent fallback in the off chance that the above selectors get dropped
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * in the future.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ [self deactivate];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ [self activateX:YES];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.13.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch b/x11/xorg-server-1.18/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..1d8bf8b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,41 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From da0dc81ea081657dba3ba492359593ba40d7245a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 13 Jan 2012 12:00:57 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5000/5005] sdksyms.sh: Use CPPFLAGS, not CFLAGS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CFLAGS can include flags which are not useful to the preprocessor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+or can even cause it to fail. This fixes a build issue on darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+when building for more than one architecture.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Keith Packard <keithp@keithp.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hw/xfree86/Makefile.am | 5 ++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 85bd0be..6de7c10 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/hw/xfree86/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/hw/xfree86/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -48,8 +48,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bin_PROGRAMS = Xorg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ nodist_Xorg_SOURCES = sdksyms.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AM_CPPFLAGS = $(XORG_INCS) -I$(srcdir)/parser \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ $(XORG_INCS) -I$(srcdir)/parser \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -I$(srcdir)/dri -I$(srcdir)/dri2 -I$(top_srcdir)/dri3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -137,7 +136,7 @@ CLEANFILES = sdksyms.c sdksyms.dep Xorg.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ EXTRA_DIST += sdksyms.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sdksyms.dep sdksyms.c: sdksyms.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- $(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CFLAGS) $(AM_CFLAGS) $(AM_CPPFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CPPFLAGS) $(AM_CPPFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SDKSYMS_DEP = sdksyms.dep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -include $(SDKSYMS_DEP)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.8.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/5001-Revert-dix-Restore-PaintWindow-screen-hook.patch b/x11/xorg-server-1.18/files/5001-Revert-dix-Restore-PaintWindow-screen-hook.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..f944366
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/5001-Revert-dix-Restore-PaintWindow-screen-hook.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,348 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 1d3dba846a7e51608b71797e7510d114555bfcd3 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 26 Dec 2015 10:56:52 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5001/5005] Revert "dix: Restore PaintWindow screen hook"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit cbd3cfbad3f07b20e90ea9498110f255813eb441.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ composite/compwindow.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dix/window.c | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hw/xquartz/quartz.c | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hw/xwin/winrandr.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include/scrnintstr.h | 5 -----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mi/miexpose.c | 32 +++++++++++++++++++++++++++-----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mi/mioverlay.c | 11 +++++------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mi/miscrinit.c | 1 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mi/miwindow.c | 6 ++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miext/rootless/rootlessCommon.h | 1 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miext/rootless/rootlessScreen.c | 3 +--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miext/rootless/rootlessWindow.c | 23 +----------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miext/rootless/rootlessWindow.h | 1 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 13 files changed, 42 insertions(+), 53 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/composite/compwindow.c b/composite/compwindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 344138a..77bdfa2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/composite/compwindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/composite/compwindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -104,7 +104,7 @@ compRepaintBorder(ClientPtr pClient, void *closure)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionNull(&exposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionSubtract(&exposed, &pWindow->borderClip, &pWindow->winSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pWindow->drawable.pScreen->PaintWindow(pWindow, &exposed, PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pWindow, &exposed, PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionUninit(&exposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dix/window.c b/dix/window.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ead4dc2..6f31396 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dix/window.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dix/window.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1592,7 +1592,7 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionNull(&exposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionSubtract(&exposed, &pWin->borderClip, &pWin->winSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pWin->drawable.pScreen->PaintWindow(pWin, &exposed, PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pWin, &exposed, PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionUninit(&exposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3159,7 +3159,7 @@ dixSaveScreens(ClientPtr client, int on, int mode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* make it look like screen saver is off, so that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * NotClippedByChildren will compute a clip list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * for the root window, so PaintWindow works
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * for the root window, so miPaintWindow works
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ screenIsSaved = SCREEN_SAVER_OFF;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (*pWin->drawable.pScreen->MoveWindow) (pWin,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c8b6f96..2def8e3 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/hw/xquartz/quartz.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/hw/xquartz/quartz.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -300,8 +300,8 @@ QuartzUpdateScreens(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ quartzProcs->UpdateScreen(pScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* PaintWindow needs to be called after RootlessUpdateScreenPixmap (from xprUpdateScreen) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pScreen->PaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* miPaintWindow needs to be called after RootlessUpdateScreenPixmap (from xprUpdateScreen) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Tell RandR about the new size, so new connections get the correct info */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RRScreenSizeNotify(pScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/hw/xwin/winrandr.c b/hw/xwin/winrandr.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1560199..73bbc9d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/hw/xwin/winrandr.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/hw/xwin/winrandr.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -134,7 +134,7 @@ winDoRandRScreenSetSize(ScreenPtr pScreen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SetRootClip(pScreen, ROOT_CLIP_FULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // and arrange for it to be repainted
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pScreen->PaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Indicate that a screen size change took place */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RRScreenSizeNotify(pScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/include/scrnintstr.h b/include/scrnintstr.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2e617c4..a627fe7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/include/scrnintstr.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/include/scrnintstr.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -158,10 +158,6 @@ typedef void (*PostValidateTreeProcPtr) (WindowPtr /*pParent */ ,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef void (*WindowExposuresProcPtr) (WindowPtr /*pWindow */ ,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionPtr /*prgn */);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-typedef void (*PaintWindowProcPtr) (WindowPtr /*pWindow*/,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- RegionPtr /*pRegion*/,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int /*what*/);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef void (*CopyWindowProcPtr) (WindowPtr /*pWindow */ ,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DDXPointRec /*ptOldOrg */ ,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionPtr /*prgnSrc */ );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -502,7 +498,6 @@ typedef struct _Screen {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ClearToBackgroundProcPtr ClearToBackground;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ClipNotifyProcPtr ClipNotify;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RestackWindowProcPtr RestackWindow;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PaintWindowProcPtr PaintWindow;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Pixmap procedures */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/mi/miexpose.c b/mi/miexpose.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 148d1a6..f4c6e89 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/mi/miexpose.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/mi/miexpose.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -268,11 +268,10 @@ miHandleExposures(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionTranslate(&rgnExposed, pDstDrawable->x, pDstDrawable->y);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (extents) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* PaintWindow doesn't clip, so we have to */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* miPaintWindow doesn't clip, so we have to */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionIntersect(&rgnExposed, &rgnExposed, &pWin->clipList);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pDstDrawable->pScreen->PaintWindow((WindowPtr) pDstDrawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- &rgnExposed, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow((WindowPtr) pDstDrawable, &rgnExposed, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (extents) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionReset(&rgnExposed, &expBox);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -384,14 +383,16 @@ miWindowExposures(WindowPtr pWin, RegionPtr prgn)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * work overall, on both client and server. This is cheating, but
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * isn't prohibited by the protocol ("spontaneous combustion" :-).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- BoxRec box = *RegionExtents(prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BoxRec box;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ box = *RegionExtents(prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exposures = &expRec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionInit(exposures, &box, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionReset(prgn, &box);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* miPaintWindow doesn't clip, so we have to */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionIntersect(prgn, prgn, &pWin->clipList);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pWin->drawable.pScreen->PaintWindow(pWin, prgn, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pWin, prgn, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (clientInterested)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miSendExposures(pWin, exposures,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pWin->drawable.x, pWin->drawable.y);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -401,6 +402,14 @@ miWindowExposures(WindowPtr pWin, RegionPtr prgn)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef ROOTLESS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Ugly, ugly, but we lost our hooks into miPaintWindow... =/ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void RootlessSetPixmapOfAncestors(WindowPtr pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void RootlessStartDrawing(WindowPtr pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Bool IsFramedWindow(WindowPtr pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -428,6 +437,19 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Bool solid = TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DrawablePtr drawable = &pWin->drawable;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef ROOTLESS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (IsFramedWindow(pWin)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ RootlessStartDrawing(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ RootlessDamageRegion(pWin, prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pWin->backgroundState == ParentRelative) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((what == PW_BACKGROUND) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (what == PW_BORDER && !pWin->borderIsPixel))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ RootlessSetPixmapOfAncestors(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (what == PW_BACKGROUND) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while (pWin->backgroundState == ParentRelative)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pWin = pWin->parent;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/mi/mioverlay.c b/mi/mioverlay.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b8b7a5b..a2715e9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/mi/mioverlay.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/mi/mioverlay.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -844,8 +844,8 @@ miOverlayHandleExposures(WindowPtr pWin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ((mival = pTree->valdata)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!((*pPriv->InOverlay) (pTree->pWin))) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (RegionNotEmpty(&mival->borderExposed)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pScreen->PaintWindow(pTree->pWin, &mival->borderExposed,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pTree->pWin, &mival->borderExposed,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionUninit(&mival->borderExposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -883,8 +883,7 @@ miOverlayHandleExposures(WindowPtr pWin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (RegionNotEmpty(&val->after.borderExposed)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pScreen->PaintWindow(pChild, &val->after.borderExposed,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pChild, &val->after.borderExposed, PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (*WindowExposures) (pChild, &val->after.exposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1008,7 +1007,7 @@ miOverlayWindowExposures(WindowPtr pWin, RegionPtr prgn)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionIntersect(prgn, prgn, &pWin->clipList);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pScreen->PaintWindow(pWin, prgn, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pWin, prgn, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (clientInterested)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miSendExposures(pWin, exposures,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pWin->drawable.x, pWin->drawable.y);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1607,7 +1606,7 @@ miOverlayClearToBackground(WindowPtr pWin,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (generateExposures)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (*pScreen->WindowExposures) (pWin, ®);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (pWin->backgroundState != None)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pScreen->PaintWindow(pWin, ®, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pWin, ®, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionUninit(®);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/mi/miscrinit.c b/mi/miscrinit.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9c6af0d..b53c7e4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/mi/miscrinit.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/mi/miscrinit.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -253,7 +253,6 @@ miScreenInit(ScreenPtr pScreen, void *pbits, /* pointer to screen bits */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pScreen->ClearToBackground = miClearToBackground;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pScreen->ClipNotify = (ClipNotifyProcPtr) 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pScreen->RestackWindow = (RestackWindowProcPtr) 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pScreen->PaintWindow = miPaintWindow;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* CreatePixmap, DestroyPixmap */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* RealizeFont, UnrealizeFont */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* CreateGC */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/mi/miwindow.c b/mi/miwindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 39c279e..2fc7cfb 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/mi/miwindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/mi/miwindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -113,7 +113,7 @@ miClearToBackground(WindowPtr pWin,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (generateExposures)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (*pWin->drawable.pScreen->WindowExposures) (pWin, ®);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (pWin->backgroundState != None)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pWin->drawable.pScreen->PaintWindow(pWin, ®, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pWin, ®, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionUninit(®);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -219,9 +219,7 @@ miHandleValidateExposures(WindowPtr pWin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while (1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ((val = pChild->valdata)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (RegionNotEmpty(&val->after.borderExposed))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pWin->drawable.pScreen->PaintWindow(pChild,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- &val->after.borderExposed,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pChild, &val->after.borderExposed, PW_BORDER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionUninit(&val->after.borderExposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (*WindowExposures) (pChild, &val->after.exposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionUninit(&val->after.exposed);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c3fa2a2..7fdea22 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/miext/rootless/rootlessCommon.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/miext/rootless/rootlessCommon.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -94,7 +94,6 @@ typedef struct _RootlessScreenRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ChangeBorderWidthProcPtr ChangeBorderWidth;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PositionWindowProcPtr PositionWindow;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ChangeWindowAttributesProcPtr ChangeWindowAttributes;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PaintWindowProcPtr PaintWindow;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CreateGCProcPtr CreateGC;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CopyWindowProcPtr CopyWindow;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4716564..6226ee8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/miext/rootless/rootlessScreen.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/miext/rootless/rootlessScreen.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -473,7 +473,7 @@ expose_1(WindowPtr pWin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!pWin->realized)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pWin->drawable.pScreen->PaintWindow(pWin, &pWin->borderClip, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miPaintWindow(pWin, &pWin->borderClip, PW_BACKGROUND);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* FIXME: comments in windowstr.h indicate that borderClip doesn't
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include subwindow visibility. But I'm not so sure.. so we may
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -669,7 +669,6 @@ RootlessWrap(ScreenPtr pScreen)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WRAP(CloseScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WRAP(CreateGC);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WRAP(CopyWindow);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- WRAP(PaintWindow);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WRAP(GetImage);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WRAP(SourceValidate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WRAP(CreateWindow);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e304299..3240acc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/miext/rootless/rootlessWindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/miext/rootless/rootlessWindow.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -720,7 +720,7 @@ RootlessResizeCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * RootlessCopyWindow
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Update *new* location of window. Old location is redrawn with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * PaintWindow. Cloned from fbCopyWindow.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * miPaintWindow. Cloned from fbCopyWindow.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The original always draws on the root pixmap, which we don't have.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Instead, draw on the parent window's pixmap.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -794,27 +794,6 @@ RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RL_DEBUG_MSG("copywindowFB end\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-RootlessPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ScreenPtr pScreen = pWin->drawable.pScreen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (IsFramedWindow(pWin)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- RootlessStartDrawing(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- RootlessDamageRegion(pWin, prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pWin->backgroundState == ParentRelative) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if ((what == PW_BACKGROUND) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (what == PW_BORDER && !pWin->borderIsPixel))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- RootlessSetPixmapOfAncestors(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- SCREEN_UNWRAP(pScreen, PaintWindow);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pScreen->PaintWindow(pWin, prgn, what);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- SCREEN_WRAP(pScreen, PaintWindow);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Window resize procedures
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/miext/rootless/rootlessWindow.h b/miext/rootless/rootlessWindow.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4fd34d5..d3955fc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/miext/rootless/rootlessWindow.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/miext/rootless/rootlessWindow.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -48,7 +48,6 @@ Bool RootlessUnrealizeWindow(WindowPtr pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void RootlessRestackWindow(WindowPtr pWin, WindowPtr pOldNextSib);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionPtr prgnSrc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void RootlessPaintWindow(WindowPtr pWin, RegionPtr prgn, int what);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void RootlessMoveWindow(WindowPtr pWin, int x, int y, WindowPtr pSib,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VTKind kind);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void RootlessResizeWindow(WindowPtr pWin, int x, int y, unsigned int w,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.8.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/5002-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch b/x11/xorg-server-1.18/files/5002-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..7c1ae87
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/5002-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,158 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From d6058fa4f68b68dff95c5ce826f9b9b498df3951 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 30 Apr 2010 13:08:25 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5002/5005] Workaround the GC clipping problem in miPaintWindow
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ and add some debugging output.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mi/miexpose.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 90 insertions(+), 9 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/mi/miexpose.c b/mi/miexpose.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f4c6e89..fe3bcb1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/mi/miexpose.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/mi/miexpose.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -408,7 +408,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void RootlessStartDrawing(WindowPtr pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Bool IsFramedWindow(WindowPtr pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "../fb/fb.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -437,20 +438,32 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Bool solid = TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DrawablePtr drawable = &pWin->drawable;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef XQUARTZ_CLIP_DEBUG
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ErrorF("START %d BS %d (pR = %ld)\n", what, pWin->backgroundState, ParentRelative);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ErrorF(" Rgn: %d %d %d %d\n", prgn->extents.x1, prgn->extents.y1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ prgn->extents.x2 - prgn->extents.x1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ prgn->extents.y2 - prgn->extents.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ErrorF(" Win: %d %d (%d %d) %d %d\n", pWin->origin.x, pWin->origin.y,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pWin->winSize.extents.x1, pWin->winSize.extents.y1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pWin->winSize.extents.x2 - pWin->winSize.extents.x1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pWin->winSize.extents.y2 - pWin->winSize.extents.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ErrorF(" Draw: %d %d %d %d\n", pWin->drawable.x, pWin->drawable.y,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pWin->drawable.width, pWin->drawable.height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (what == PW_BACKGROUND)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef ROOTLESS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (IsFramedWindow(pWin)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- RootlessStartDrawing(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- RootlessDamageRegion(pWin, prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(IsFramedWindow(pWin)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ RootlessStartDrawing(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ RootlessDamageRegion(pWin, prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pWin->backgroundState == ParentRelative) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if ((what == PW_BACKGROUND) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (what == PW_BORDER && !pWin->borderIsPixel))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(pWin->backgroundState == ParentRelative) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RootlessSetPixmapOfAncestors(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (what == PW_BACKGROUND) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while (pWin->backgroundState == ParentRelative)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pWin = pWin->parent;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -475,6 +488,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PixmapPtr pixmap;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef ROOTLESS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(IsFramedWindow(pWin)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ RootlessStartDrawing(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ RootlessDamageRegion(pWin, prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(!pWin->borderIsPixel &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pWin->backgroundState == ParentRelative) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ RootlessSetPixmapOfAncestors(pWin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fill = pWin->border;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ solid = pWin->borderIsPixel;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -484,6 +509,11 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ drawable = &pixmap->drawable;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef XQUARTZ_CLIP_DEBUG
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ErrorF(" Draw: %d %d %d %d\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ drawable->x, drawable->y, drawable->width, drawable->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while (pWin->backgroundState == ParentRelative)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pWin = pWin->parent;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -550,6 +580,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ChangeGC(NullClient, pGC, gcmask, gcval);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ValidateGC(drawable, pGC);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef XQUARTZ_CLIP_DEBUG
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ErrorF(" GC: %d %d %d %d\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef XQUARTZ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Looks like our clipping isn't set right for some reason:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * http://xquartz.macosforge.org/trac/ticket/290
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(what == PW_BORDER) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(solid) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fbFillRegionSolid(&pWin->drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ prgn,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fbReplicatePixel(fill.pixel,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pWin->drawable.bitsPerPixel));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fbFillRegionSolid(drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ prgn,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fbReplicatePixel(fill.pixel,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ drawable->bitsPerPixel));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.x1 += prgn->extents.x1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.y1 += prgn->extents.y1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.x2 += prgn->extents.x1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.y2 += prgn->extents.y1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(pGC->pCompositeClip->extents.x2 > drawable->pScreen->width)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.x2 = drawable->pScreen->width;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(pGC->pCompositeClip->extents.y2 > drawable->pScreen->height)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.y2 = drawable->pScreen->height;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef XQUARTZ_CLIP_DEBUG
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ErrorF(" GC: %d %d %d %d\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ numRects = RegionNumRects(prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pbox = RegionRects(prgn);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i = numRects; --i >= 0; pbox++, prect++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.8.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/5003-Use-old-miTrapezoids-and-miTriangles-routines.patch b/x11/xorg-server-1.18/files/5003-Use-old-miTrapezoids-and-miTriangles-routines.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..8423ce12
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/5003-Use-old-miTrapezoids-and-miTriangles-routines.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,289 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 2850855f560451bb64dd5af3f005c6988961336e Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 2 Nov 2013 11:00:23 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5003/5005] Use old miTrapezoids and miTriangles routines
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reverts commits:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 788ccb9a8bcf6a4fb4054c507111eec3338fb969
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 566f1931ee2916269e164e114bffaf2da1d039d1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+http://xquartz.macosforge.org/trac/ticket/525
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb/fbpict.c | 2 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ render/mipict.c | 4 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ render/mipict.h | 27 ++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ render/mitrap.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ render/mitri.c | 61 +++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5 files changed, 201 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fb/fbpict.c b/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7ea0b66..434d890 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -508,10 +508,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->UnrealizeGlyph = fbUnrealizeGlyph;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->CompositeRects = miCompositeRects;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ps->Trapezoids = fbTrapezoids;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->AddTraps = fbAddTraps;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->AddTriangles = fbAddTriangles;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ps->Triangles = fbTriangles;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/render/mipict.c b/render/mipict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4b85512..a39eb2c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/render/mipict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/render/mipict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -575,8 +575,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->Composite = 0; /* requires DDX support */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->Glyphs = miGlyphs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->CompositeRects = miCompositeRects;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ps->Trapezoids = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ps->Triangles = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ps->Trapezoids = miTrapezoids;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ps->Triangles = miTriangles;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->RasterizeTrapezoid = 0; /* requires DDX support */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->AddTraps = 0; /* requires DDX support */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/render/mipict.h b/render/mipict.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3241be4..8ee7a8a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/render/mipict.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/render/mipict.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -102,9 +102,36 @@ miCompositeRects(CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xRenderColor * color, int nRect, xRectangle *rects);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++miTriangles (CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PictFormatPtr maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 xSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 ySrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int ntri,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xTriangle *tris);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern _X_EXPORT PicturePtr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++miCreateAlphaPicture (ScreenPtr pScreen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PictFormatPtr pPictFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CARD16 width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CARD16 height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++miTrapezoids (CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PictFormatPtr maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 xSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 ySrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int ntrap,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xTrapezoid *traps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miPointFixedBounds(int npoint, xPointFixed * points, BoxPtr bounds);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/render/mitrap.c b/render/mitrap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 17b6dcd..71c1857 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/render/mitrap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/render/mitrap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,6 +34,55 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "picturestr.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "mipict.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++PicturePtr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++miCreateAlphaPicture (ScreenPtr pScreen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PictFormatPtr pPictFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CARD16 width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CARD16 height)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PixmapPtr pPixmap;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pPicture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ GCPtr pGC;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xRectangle rect;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (width > 32767 || height > 32767)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!pPictFormat)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pDst->polyEdge == PolyEdgeSharp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!pPictFormat)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pPictFormat->depth, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!pPixmap)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pGC = GetScratchGC (pPixmap->drawable.depth, pScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!pGC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (*pScreen->DestroyPixmap) (pPixmap);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ValidateGC (&pPixmap->drawable, pGC);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ rect.x = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ rect.y = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ rect.width = width;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ rect.height = height;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (*pGC->ops->PolyFillRect)(&pPixmap->drawable, pGC, 1, &rect);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FreeScratchGC (pGC);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 0, 0, serverClient, &error);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (*pScreen->DestroyPixmap) (pPixmap);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return pPicture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static xFixed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miLineFixedX(xLineFixed * l, xFixed y, Bool ceil)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -79,3 +128,65 @@ miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ box->x2 = x2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++miTrapezoids (CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PictFormatPtr maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 xSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 ySrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int ntrap,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xTrapezoid *traps)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ScreenPtr pScreen = pDst->pDrawable->pScreen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PictureScreenPtr ps = GetPictureScreen(pScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Check for solid alpha add
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (; ntrap; ntrap--, traps++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else if (maskFormat)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pPicture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BoxRec bounds;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 xDst, yDst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 xRel, yRel;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xDst = traps[0].left.p1.x >> 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ yDst = traps[0].left.p1.y >> 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miTrapezoidBounds (ntrap, traps, &bounds);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bounds.x2 - bounds.x1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bounds.y2 - bounds.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!pPicture)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (; ntrap; ntrap--, traps++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (*ps->RasterizeTrapezoid) (pPicture, traps,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ -bounds.x1, -bounds.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xRel = bounds.x1 + xSrc - xDst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ yRel = bounds.y1 + ySrc - yDst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CompositePicture (op, pSrc, pPicture, pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xRel, yRel, 0, 0, bounds.x1, bounds.y1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bounds.x2 - bounds.x1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bounds.y2 - bounds.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FreePicture (pPicture, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pDst->polyEdge == PolyEdgeSharp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (; ntrap; ntrap--, traps++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/render/mitri.c b/render/mitri.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 922f22a..bdca9ca 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/render/mitri.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/render/mitri.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,3 +65,64 @@ miTriangleBounds(int ntri, xTriangle * tris, BoxPtr bounds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miPointFixedBounds(ntri * 3, (xPointFixed *) tris, bounds);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++miTriangles (CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PictFormatPtr maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 xSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 ySrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int ntri,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xTriangle *tris)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ScreenPtr pScreen = pDst->pDrawable->pScreen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PictureScreenPtr ps = GetPictureScreen(pScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Check for solid alpha add
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (*ps->AddTriangles) (pDst, 0, 0, ntri, tris);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else if (maskFormat)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BoxRec bounds;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PicturePtr pPicture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 xDst, yDst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT16 xRel, yRel;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xDst = tris[0].p1.x >> 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ yDst = tris[0].p1.y >> 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miTriangleBounds (ntri, tris, &bounds);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (bounds.x2 <= bounds.x1 || bounds.y2 <= bounds.y1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bounds.x2 - bounds.x1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bounds.y2 - bounds.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!pPicture)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (*ps->AddTriangles) (pPicture, -bounds.x1, -bounds.y1, ntri, tris);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xRel = bounds.x1 + xSrc - xDst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ yRel = bounds.y1 + ySrc - yDst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CompositePicture (op, pSrc, pPicture, pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xRel, yRel, 0, 0, bounds.x1, bounds.y1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bounds.x2 - bounds.x1, bounds.y2 - bounds.y1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FreePicture (pPicture, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (pDst->polyEdge == PolyEdgeSharp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (; ntri; ntri--, tris++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ miTriangles (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, tris);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.8.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch b/x11/xorg-server-1.18/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..8ed90d8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,320 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 055a7bb8f22eb94a35cae6224d109daa435d288d Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 12 Feb 2010 19:48:52 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5004/5005] fb: Revert fb changes that broke XQuartz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+http://bugs.freedesktop.org/show_bug.cgi?id=26124
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Revert "fb: Adjust transform or composite coordinates for pixman operations"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+http://bugs.freedesktop.org/26124
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb/fb.h | 3 +--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb/fbpict.c | 82 ++++++++++++++++++-------------------------------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb/fbtrap.c | 43 ++++++++++++++------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 43 insertions(+), 85 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fb/fb.h b/fb/fb.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c687aa7..256a1ee 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/fb/fb.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/fb/fb.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1321,8 +1321,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RegionPtr pRegion, FbBits and, FbBits xor);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- Bool has_clip,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int *xoff, int *yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Bool has_clip);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fb/fbpict.c b/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 434d890..be8274b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -46,23 +46,18 @@ fbComposite(CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *src, *mask, *dest;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int src_xoff, src_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int msk_xoff, msk_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int dst_xoff, dst_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miCompositeSourceValidate(pSrc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (pMask)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miCompositeSourceValidate(pMask);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src = image_from_pict(pSrc, FALSE, &src_xoff, &src_yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- mask = image_from_pict(pMask, FALSE, &msk_xoff, &msk_yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dest = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src = image_from_pict(pSrc, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mask = image_from_pict(pMask, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dest = image_from_pict(pDst, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (src && dest && !(pMask && !mask)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_composite(op, src, mask, dest,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- xSrc + src_xoff, ySrc + src_yoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- xMask + msk_xoff, yMask + msk_yoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- xDst + dst_xoff, yDst + dst_yoff, width, height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xSrc, ySrc, xMask, yMask, xDst, yDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ width, height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free_pixman_pict(pSrc, src);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -289,20 +284,22 @@ create_conical_gradient_image(PictGradient * gradient)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static pixman_image_t *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++create_bits_picture(PicturePtr pict, Bool has_clip)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PixmapPtr pixmap;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FbBits *bits;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FbStride stride;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int bpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int bpp, xoff, yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *image;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- fbGetDrawablePixmap(pict->pDrawable, pixmap, *xoff, *yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- fbGetPixmapBitsData(pixmap, bits, stride, bpp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bits = (FbBits*)((CARD8*)bits +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (pict->pDrawable->x + xoff) * (bpp / 8));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ image = pixman_image_create_bits((pixman_format_code_t) pict->format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixmap->drawable.width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixmap->drawable.height, (uint32_t *) bits,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pict->pDrawable->width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pict->pDrawable->height, (uint32_t *) bits,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ stride * sizeof(FbStride));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!image)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -321,28 +318,21 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (pict->clientClip)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_set_has_client_clip(image, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (*xoff || *yoff)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_region_translate(pict->pCompositeClip, *xoff, *yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_set_clip_region(image, pict->pCompositeClip);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (*xoff || *yoff)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_region_translate(pict->pCompositeClip, -*xoff, -*yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Indexed table */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (pict->pFormat->index.devPrivate)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_set_indexed(image, pict->pFormat->index.devPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* Add in drawable origin to position within the image */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- *xoff += pict->pDrawable->x;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- *yoff += pict->pDrawable->y;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return image;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int *xoff, int *yoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Bool is_alpha_map);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void image_destroy(pixman_image_t *image, void *data)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -351,32 +341,13 @@ static void image_destroy(pixman_image_t *image, void *data)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int *xoff, int *yoff, Bool is_alpha_map)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set_image_properties(pixman_image_t * image, PicturePtr pict, Bool is_alpha_map)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_repeat_t repeat;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_filter_t filter;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (pict->transform) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- /* For source images, adjust the transform to account
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * for the drawable offset within the pixman image,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * then set the offset to 0 as it will be used
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * to compute positions within the transformed image.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!has_clip) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- struct pixman_transform adjusted;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- adjusted = *pict->transform;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_transform_translate(&adjusted,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NULL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_int_to_fixed(*xoff),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_int_to_fixed(*yoff));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_image_set_transform(image, &adjusted);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- *xoff = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- *yoff = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_image_set_transform(image, pict->transform);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pixman_image_set_transform(image, pict->transform);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (pict->repeatType) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -404,10 +375,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * as the alpha map for this operation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (pict->alphaMap && !is_alpha_map) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int alpha_xoff, alpha_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *alpha_map =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- image_from_pict_internal(pict->alphaMap, FALSE, &alpha_xoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- &alpha_yoff, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ image_from_pict_internal(pict->alphaMap, TRUE, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pict->alphaOrigin.y);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -445,8 +414,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static pixman_image_t *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- Bool is_alpha_map)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++image_from_pict_internal(PicturePtr pict, Bool has_clip, Bool is_alpha_map)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *image = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -454,7 +422,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (pict->pDrawable) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- image = create_bits_picture(pict, has_clip, xoff, yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ image = create_bits_picture(pict, has_clip);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (pict->pSourcePict) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SourcePict *sp = pict->pSourcePict;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -472,19 +440,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (sp->type == SourcePictTypeConical)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ image = create_conical_gradient_image(gradient);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- *xoff = *yoff = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (image)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- set_image_properties(image, pict, has_clip, xoff, yoff, is_alpha_map);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ set_image_properties (image, pict, is_alpha_map);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return image;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++image_from_pict (PicturePtr pict, Bool has_clip)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return image_from_pict_internal(pict, has_clip, xoff, yoff, FALSE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return image_from_pict_internal (pict, has_clip, FALSE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fb/fbtrap.c b/fb/fbtrap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index bf82f8f..0145ce9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/fb/fbtrap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/fb/fbtrap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -36,13 +36,12 @@ fbAddTraps(PicturePtr pPicture,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ INT16 x_off, INT16 y_off, int ntrap, xTrap * traps)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *image;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int dst_xoff, dst_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_add_traps(image, x_off + dst_xoff, y_off + dst_yoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ntrap, (pixman_trap_t *) traps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!(image = image_from_pict (pPicture, FALSE)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pixman_add_traps(image, x_off, y_off,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ntrap, (pixman_trap_t *)traps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free_pixman_pict(pPicture, image);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -52,13 +51,12 @@ fbRasterizeTrapezoid(PicturePtr pPicture,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xTrapezoid * trap, int x_off, int y_off)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *image;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int dst_xoff, dst_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!(image = image_from_pict (pPicture, FALSE)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *) trap,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- x_off + dst_xoff, y_off + dst_yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *)trap,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ x_off, y_off);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free_pixman_pict(pPicture, image);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -68,14 +66,12 @@ fbAddTriangles(PicturePtr pPicture,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ INT16 x_off, INT16 y_off, int ntri, xTriangle * tris)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *image;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int dst_xoff, dst_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!(image = image_from_pict (pPicture, FALSE)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_add_triangles(image,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dst_xoff + x_off, dst_yoff + y_off,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ntri, (pixman_triangle_t *) tris);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pixman_add_triangles(image, x_off, y_off, ntri,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (pixman_triangle_t *)tris);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free_pixman_pict(pPicture, image);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -98,13 +94,11 @@ fbShapes(CompositeShapesFunc composite,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int16_t ySrc, int nshapes, int shape_size, const uint8_t * shapes)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_image_t *src, *dst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int src_xoff, src_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int dst_xoff, dst_yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ miCompositeSourceValidate(pSrc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src = image_from_pict(pSrc, FALSE, &src_xoff, &src_yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dst = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src = image_from_pict(pSrc, FALSE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst = image_from_pict(pDst, TRUE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (src && dst) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pixman_format_code_t format;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i = 0; i < nshapes; ++i) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ composite(op, src, dst, format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- xSrc + src_xoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ySrc + src_yoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dst_xoff, dst_yoff, 1, shapes + i * shape_size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xSrc, ySrc, 0, 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1, shapes + i * shape_size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -143,8 +136,8 @@ fbShapes(CompositeShapesFunc composite,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ composite(op, src, dst, format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- xSrc + src_xoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ySrc + src_yoff, dst_xoff, dst_yoff, nshapes, shapes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ xSrc, ySrc, 0, 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ nshapes, shapes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DamageRegionProcessPending(pDst->pDrawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.8.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/5005-fb-Revert-fb-changes-that-broke-XQuartz.patch b/x11/xorg-server-1.18/files/5005-fb-Revert-fb-changes-that-broke-XQuartz.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..1b88f8a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/5005-fb-Revert-fb-changes-that-broke-XQuartz.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,243 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 3475655620bc51071f0ba9cbc30b39587d9b0b44 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 31 May 2014 13:14:20 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5005/5005] fb: Revert fb changes that broke XQuartz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ http://bugs.freedesktop.org/show_bug.cgi?id=26124
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Revert "Use new pixman_glyph_cache_t API that will be in pixman 0.28.0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Revert "fb: Fix origin of source picture in fbGlyphs"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Revert "fb: Publish fbGlyphs and fbUnrealizeGlyph"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit 983e30361f49a67252d0b5d82630e70724d69dbf.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit 3c2c59eed3c68c0e5a93c38cf01eedad015e3157.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb/fb.h | 3 --
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb/fbpict.c | 149 +---------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb/fbpict.h | 11 +----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb/fbscreen.c | 1 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4 files changed, 2 insertions(+), 162 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fb/fb.h b/fb/fb.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 256a1ee..8e87498 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/fb/fb.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/fb/fb.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1111,9 +1111,6 @@ extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern _X_EXPORT Bool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-fbDestroyGlyphCache(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * fbpixmap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fb/fbpict.c b/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index be8274b..66dd633 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/fb/fbpict.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,152 +65,6 @@ fbComposite(CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free_pixman_pict(pDst, dest);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static pixman_glyph_cache_t *glyphCache;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-fbDestroyGlyphCache(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (glyphCache)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_glyph_cache_destroy (glyphCache);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- glyphCache = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-fbUnrealizeGlyph(ScreenPtr pScreen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- GlyphPtr pGlyph)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (glyphCache)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-fbGlyphs(CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PicturePtr pSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PictFormatPtr maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- INT16 xSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- INT16 ySrc, int nlist,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- GlyphListPtr list,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- GlyphPtr *glyphs)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define N_STACK_GLYPHS 512
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ScreenPtr pScreen = pDst->pDrawable->pScreen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_glyph_t stack_glyphs[N_STACK_GLYPHS];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_glyph_t *pglyphs = stack_glyphs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_image_t *srcImage, *dstImage;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int srcXoff, srcYoff, dstXoff, dstYoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- GlyphPtr glyph;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int n_glyphs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int x, y;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int i, n;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int xDst = list->xOff, yDst = list->yOff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- miCompositeSourceValidate(pSrc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- n_glyphs = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- for (i = 0; i < nlist; ++i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- n_glyphs += list[i].len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!glyphCache)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- glyphCache = pixman_glyph_cache_create();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_glyph_cache_freeze (glyphCache);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (n_glyphs > N_STACK_GLYPHS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(pglyphs = xallocarray(n_glyphs, sizeof(pixman_glyph_t))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- goto out;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- i = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- x = y = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- while (nlist--) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- x += list->xOff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- y += list->yOff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- n = list->len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- while (n--) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- const void *g;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- glyph = *glyphs++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(g = pixman_glyph_cache_lookup (glyphCache, glyph, NULL))) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_image_t *glyphImage;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PicturePtr pPicture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int xoff, yoff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pPicture = GetGlyphPicture(glyph, pScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!pPicture) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- n_glyphs--;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- goto next;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(glyphImage = image_from_pict(pPicture, FALSE, &xoff, &yoff)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- goto out;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- glyph->info.x,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- glyph->info.y,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- glyphImage);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- free_pixman_pict(pPicture, glyphImage);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!g)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- goto out;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pglyphs[i].x = x;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pglyphs[i].y = y;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pglyphs[i].glyph = g;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- i++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- next:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- x += glyph->info.xOff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- y += glyph->info.yOff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- list++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(srcImage = image_from_pict(pSrc, FALSE, &srcXoff, &srcYoff)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- goto out;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(dstImage = image_from_pict(pDst, TRUE, &dstXoff, &dstYoff)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- goto out_free_src;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (maskFormat) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_format_code_t format;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_box32_t extents;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- format = maskFormat->format | (maskFormat->depth << 24);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &extents);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_composite_glyphs(op, srcImage, dstImage, format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- xSrc + srcXoff + extents.x1 - xDst, ySrc + srcYoff + extents.y1 - yDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- extents.x1, extents.y1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- extents.x1 + dstXoff, extents.y1 + dstYoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- extents.x2 - extents.x1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- extents.y2 - extents.y1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- glyphCache, n_glyphs, pglyphs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_composite_glyphs_no_mask(op, srcImage, dstImage,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- xSrc + srcXoff - xDst, ySrc + srcYoff - yDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dstXoff, dstYoff,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- glyphCache, n_glyphs, pglyphs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- free_pixman_pict(pDst, dstImage);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-out_free_src:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- free_pixman_pict(pSrc, srcImage);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-out:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pixman_glyph_cache_thaw(glyphCache);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (pglyphs != stack_glyphs)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- free(pglyphs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static pixman_image_t *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ create_solid_fill_image(PicturePtr pict)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -470,8 +324,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps = GetPictureScreen(pScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->Composite = fbComposite;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ps->Glyphs = fbGlyphs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ps->UnrealizeGlyph = fbUnrealizeGlyph;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ps->Glyphs = miGlyphs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->CompositeRects = miCompositeRects;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ps->AddTraps = fbAddTraps;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fb/fbpict.h b/fb/fbpict.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5cb8663..110f32d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/fb/fbpict.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/fb/fbpict.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,20 +65,11 @@ fbTrapezoids(CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fbTriangles(CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PicturePtr pSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PictFormatPtr maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ INT16 xSrc, INT16 ySrc, int ntris, xTriangle * tris);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-extern _X_EXPORT void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-fbGlyphs(CARD8 op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PicturePtr pSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PicturePtr pDst,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PictFormatPtr maskFormat,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- INT16 xSrc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- INT16 ySrc, int nlist,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- GlyphListPtr list,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- GlyphPtr *glyphs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* _FBPICT_H_ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fb/fbscreen.c b/fb/fbscreen.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 71bcc5d..55330fc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/fb/fbscreen.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/fb/fbscreen.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DepthPtr depths = pScreen->allowedDepths;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- fbDestroyGlyphCache();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (d = 0; d < pScreen->numDepths; d++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free(depths[d].vids);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free(depths);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.8.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/dri/GL/internal/dri_interface.h b/x11/xorg-server-1.18/files/dri/GL/internal/dri_interface.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..b012570
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/dri/GL/internal/dri_interface.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,1409 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright 2007-2008 Red Hat, Inc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * (C) Copyright IBM Corporation 2004
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * All Rights Reserved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission is hereby granted, free of charge, to any person obtaining a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copy of this software and associated documentation files (the "Software"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * to deal in the Software without restriction, including without limitation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * on the rights to use, copy, modify, merge, publish, distribute, sub
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * license, and/or sell copies of the Software, and to permit persons to whom
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the Software is furnished to do so, subject to the following conditions:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The above copyright notice and this permission notice (including the next
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * paragraph) shall be included in all copies or substantial portions of the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \file dri_interface.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This file contains all the types and functions that define the interface
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * between a DRI driver and driver loader. Currently, the most common driver
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * loader is the XFree86 libGL.so. However, other loaders do exist, and in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the future the server-side libglx.a will also be a loader.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \author Kevin E. Martin <kevin@precisioninsight.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \author Ian Romanick <idr@us.ibm.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \author Kristian Høgsberg <krh@redhat.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef DRI_INTERFACE_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define DRI_INTERFACE_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* For archs with no drm.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if defined(__APPLE__) || defined(__CYGWIN__) || defined(__GNU__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef __NOT_HAVE_DRM_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __NOT_HAVE_DRM_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef __NOT_HAVE_DRM_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <drm.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef unsigned int drm_context_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef unsigned int drm_drawable_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct drm_clip_rect drm_clip_rect_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \name DRI interface structures
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The following structures define the interface between the GLX client
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * side library and the DRI (direct rendering infrastructure).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@{*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIdisplayRec __DRIdisplay;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIscreenRec __DRIscreen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIcontextRec __DRIcontext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIdrawableRec __DRIdrawable;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIconfigRec __DRIconfig;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIframebufferRec __DRIframebuffer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIversionRec __DRIversion;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIcoreExtensionRec __DRIcoreExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIextensionRec __DRIextension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIcopySubBufferExtensionRec __DRIcopySubBufferExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIswapControlExtensionRec __DRIswapControlExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIframeTrackingExtensionRec __DRIframeTrackingExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRImediaStreamCounterExtensionRec __DRImediaStreamCounterExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRItexOffsetExtensionRec __DRItexOffsetExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRItexBufferExtensionRec __DRItexBufferExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIlegacyExtensionRec __DRIlegacyExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIswrastExtensionRec __DRIswrastExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIbufferRec __DRIbuffer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIdri2ExtensionRec __DRIdri2Extension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIdri2LoaderExtensionRec __DRIdri2LoaderExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRI2flushExtensionRec __DRI2flushExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRI2throttleExtensionRec __DRI2throttleExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIimageLoaderExtensionRec __DRIimageLoaderExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIimageDriverExtensionRec __DRIimageDriverExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@}*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Extension struct. Drivers 'inherit' from this struct by embedding
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * it as the first element in the extension struct.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * We never break API in for a DRI extension. If we need to change
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the way things work in a non-backwards compatible manner, we
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * introduce a new extension. During a transition period, we can
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * leave both the old and the new extension in the driver, which
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * allows us to move to the new interface without having to update the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * loader(s) in lock step.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * However, we can add entry points to an extension over time as long
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * as we don't break the old ones. As we add entry points to an
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extension, we increase the version number. The corresponding
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * #define can be used to guard code that accesses the new entry
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * points at compile time and the version field in the extension
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * struct can be used at run-time to determine how to use the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIextensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char *name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int version;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The first set of extension are the screen extensions, returned by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * __DRIcore::getExtensions(). This entry point will return a list of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extensions and the loader can use the ones it knows about by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * casting them to more specific extensions and advertising any GLX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extensions the DRI extensions enables.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Used by drivers to indicate support for setting the read drawable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_READ_DRAWABLE "DRI_ReadDrawable"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_READ_DRAWABLE_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Used by drivers that implement the GLX_MESA_copy_sub_buffer extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_COPY_SUB_BUFFER "DRI_CopySubBuffer"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_COPY_SUB_BUFFER_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIcopySubBufferExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*copySubBuffer)(__DRIdrawable *drawable, int x, int y, int w, int h);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Used by drivers that implement the GLX_SGI_swap_control or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * GLX_MESA_swap_control extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWAP_CONTROL "DRI_SwapControl"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWAP_CONTROL_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIswapControlExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*setSwapInterval)(__DRIdrawable *drawable, unsigned int inteval);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int (*getSwapInterval)(__DRIdrawable *drawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Used by drivers that implement the GLX_MESA_swap_frame_usage extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_FRAME_TRACKING "DRI_FrameTracking"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_FRAME_TRACKING_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIframeTrackingExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Enable or disable frame usage tracking.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since Internal API version 20030317.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*frameTracking)(__DRIdrawable *drawable, GLboolean enable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Retrieve frame usage information.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since Internal API version 20030317.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*queryFrameTracking)(__DRIdrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int64_t * sbc, int64_t * missedFrames,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ float * lastMissedUsage, float * usage);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Used by drivers that implement the GLX_SGI_video_sync extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_MEDIA_STREAM_COUNTER "DRI_MediaStreamCounter"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_MEDIA_STREAM_COUNTER_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRImediaStreamCounterExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Wait for the MSC to equal target_msc, or, if that has already passed,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the next time (MSC % divisor) is equal to remainder. If divisor is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * zero, the function will return as soon as MSC is greater than or equal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * to target_msc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*waitForMSC)(__DRIdrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int64_t target_msc, int64_t divisor, int64_t remainder,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int64_t * msc, int64_t * sbc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Get the number of vertical refreshes since some point in time before
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * this function was first called (i.e., system start up).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*getDrawableMSC)(__DRIscreen *screen, __DRIdrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int64_t *msc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_TEX_OFFSET "DRI_TexOffset"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_TEX_OFFSET_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRItexOffsetExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Method to override base texture image with a driver specific 'offset'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The depth passed in allows e.g. to ignore the alpha channel of texture
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * images where the non-alpha components don't occupy a whole texel.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * For GLX_EXT_texture_from_pixmap with AIGLX.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*setTexOffset)(__DRIcontext *pDRICtx, GLint texname,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned long long offset, GLint depth, GLuint pitch);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Valid values for format in the setTexBuffer2 function below. These
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * values match the GLX tokens for compatibility reasons, but we
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * define them here since the DRI interface can't depend on GLX. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_TEXTURE_FORMAT_NONE 0x20D8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_TEXTURE_FORMAT_RGB 0x20D9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_TEXTURE_FORMAT_RGBA 0x20DA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_TEX_BUFFER "DRI_TexBuffer"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_TEX_BUFFER_VERSION 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRItexBufferExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Method to override base texture image with the contents of a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * __DRIdrawable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * For GLX_EXT_texture_from_pixmap with AIGLX. Deprecated in favor of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * setTexBuffer2 in version 2 of this interface
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*setTexBuffer)(__DRIcontext *pDRICtx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLint target,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *pDraw);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Method to override base texture image with the contents of a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * __DRIdrawable, including the required texture format attribute.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * For GLX_EXT_texture_from_pixmap with AIGLX.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*setTexBuffer2)(__DRIcontext *pDRICtx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLint target,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLint format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *pDraw);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Method to release texture buffer in case some special platform
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * need this.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * For GLX_EXT_texture_from_pixmap with AIGLX.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*releaseTexBuffer)(__DRIcontext *pDRICtx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLint target,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *pDraw);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Used by drivers that implement DRI2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_FLUSH "DRI2_Flush"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_FLUSH_VERSION 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_FLUSH_DRAWABLE (1 << 0) /* the drawable should be flushed. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_FLUSH_CONTEXT (1 << 1) /* glFlush should be called */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum __DRI2throttleReason {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI2_THROTTLE_SWAPBUFFER,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI2_THROTTLE_COPYSUBBUFFER,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI2_THROTTLE_FLUSHFRONT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRI2flushExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*flush)(__DRIdrawable *drawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Ask the driver to call getBuffers/getBuffersWithFormat before
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * it starts rendering again.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param drawable the drawable to invalidate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*invalidate)(__DRIdrawable *drawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This function reduces the number of flushes in the driver by combining
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * several operations into one call.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * It can:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * - throttle
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * - flush a drawable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * - flush a context
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param context the context
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param drawable the drawable to flush
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param flags a combination of _DRI2_FLUSH_xxx flags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param throttle_reason the reason for throttling, 0 = no throttling
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*flush_with_flags)(__DRIcontext *ctx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned flags,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum __DRI2throttleReason throttle_reason);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Extension that the driver uses to request
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * throttle callbacks.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_THROTTLE "DRI2_Throttle"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_THROTTLE_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRI2throttleExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*throttle)(__DRIcontext *ctx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum __DRI2throttleReason reason);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@}*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The following extensions describe loader features that the DRI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * driver can make use of. Some of these are mandatory, such as the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * getDrawableInfo extension for DRI and the DRI Loader extensions for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * DRI2, while others are optional, and if present allow the driver to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * expose certain features. The loader pass in a NULL terminated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * array of these extensions to the driver in the createNewScreen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * constructor.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIgetDrawableInfoExtensionRec __DRIgetDrawableInfoExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIsystemTimeExtensionRec __DRIsystemTimeExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIdamageExtensionRec __DRIdamageExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIloaderExtensionRec __DRIloaderExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIswrastLoaderExtensionRec __DRIswrastLoaderExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Callback to getDrawableInfo protocol
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_GET_DRAWABLE_INFO "DRI_GetDrawableInfo"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_GET_DRAWABLE_INFO_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIgetDrawableInfoExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This function is used to get information about the position, size, and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * clip rects of a drawable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLboolean (* getDrawableInfo) ( __DRIdrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int * index, unsigned int * stamp,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int * x, int * y, int * width, int * height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int * numClipRects, drm_clip_rect_t ** pClipRects,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int * backX, int * backY,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int * numBackClipRects, drm_clip_rect_t ** pBackClipRects,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Callback to get system time for media stream counter extensions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SYSTEM_TIME "DRI_SystemTime"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SYSTEM_TIME_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIsystemTimeExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Get the 64-bit unadjusted system time (UST).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*getUST)(int64_t * ust);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Get the media stream counter (MSC) rate.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Matching the definition in GLX_OML_sync_control, this function returns
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the rate of the "media stream counter". In practical terms, this is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the frame refresh rate of the display.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLboolean (*getMSCRate)(__DRIdrawable *draw,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int32_t * numerator, int32_t * denominator,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Damage reporting
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DAMAGE "DRI_Damage"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DAMAGE_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIdamageExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Reports areas of the given drawable which have been modified by the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * driver.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param drawable which the drawing was done to.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param rects rectangles affected, with the drawable origin as the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * origin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param x X offset of the drawable within the screen (used in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * front_buffer case)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param y Y offset of the drawable within the screen.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param front_buffer boolean flag for whether the drawing to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * drawable was actually done directly to the front buffer (instead
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * of backing storage, for example)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param loaderPrivate the data passed in at createNewDrawable time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*reportDamage)(__DRIdrawable *draw,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int x, int y,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ drm_clip_rect_t *rects, int num_rects,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLboolean front_buffer,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWRAST_IMAGE_OP_DRAW 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWRAST_IMAGE_OP_CLEAR 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWRAST_IMAGE_OP_SWAP 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * SWRast Loader extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWRAST_LOADER "DRI_SWRastLoader"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWRAST_LOADER_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIswrastLoaderExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Drawable position and size
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*getDrawableInfo)(__DRIdrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *x, int *y, int *width, int *height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Put image to drawable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*putImage)(__DRIdrawable *drawable, int op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int x, int y, int width, int height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char *data, void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Get image from readable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*getImage)(__DRIdrawable *readable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int x, int y, int width, int height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char *data, void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Invalidate loader extension. The presence of this extension
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * indicates to the DRI driver that the loader will call invalidate in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the __DRI2_FLUSH extension, whenever the needs to query for new
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * buffers. This means that the DRI driver can drop the polling in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * glViewport().
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The extension doesn't provide any functionality, it's only use to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * indicate to the driver that it can use the new semantics. A DRI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * driver can use this to switch between the different semantics or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * just refuse to initialize if this extension isn't present.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_USE_INVALIDATE "DRI_UseInvalidate"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_USE_INVALIDATE_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIuseInvalidateExtensionRec __DRIuseInvalidateExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIuseInvalidateExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The remaining extensions describe driver extensions, immediately
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * available interfaces provided by the driver. To start using the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * driver, dlsym() for the __DRI_DRIVER_EXTENSIONS symbol and look for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the extension you need in the array.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DRIVER_EXTENSIONS "__driDriverExtensions"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This symbol replaces the __DRI_DRIVER_EXTENSIONS symbol, and will be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * suffixed by "_drivername", allowing multiple drivers to be built into one
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * library, and also giving the driver the chance to return a variable driver
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extensions struct depending on the driver name being loaded or any other
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * system state.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The function prototype is:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * const __DRIextension **__driDriverGetExtensions_drivername(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DRIVER_GET_EXTENSIONS "__driDriverGetExtensions"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Tokens for __DRIconfig attribs. A number of attributes defined by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * GLX or EGL standards are not in the table, as they must be provided
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * by the loader. For example, FBConfig ID or visual ID, drawable type.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_BUFFER_SIZE 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_LEVEL 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_RED_SIZE 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_GREEN_SIZE 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_BLUE_SIZE 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_LUMINANCE_SIZE 6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_ALPHA_SIZE 7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_ALPHA_MASK_SIZE 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_DEPTH_SIZE 9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_STENCIL_SIZE 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_ACCUM_RED_SIZE 11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_ACCUM_GREEN_SIZE 12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_ACCUM_BLUE_SIZE 13
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_ACCUM_ALPHA_SIZE 14
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_SAMPLE_BUFFERS 15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_SAMPLES 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_RENDER_TYPE 17
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_CONFIG_CAVEAT 18
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_CONFORMANT 19
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_DOUBLE_BUFFER 20
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_STEREO 21
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_AUX_BUFFERS 22
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TRANSPARENT_TYPE 23
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TRANSPARENT_INDEX_VALUE 24
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TRANSPARENT_RED_VALUE 25
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TRANSPARENT_GREEN_VALUE 26
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TRANSPARENT_BLUE_VALUE 27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE 28
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_FLOAT_MODE 29
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_RED_MASK 30
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_GREEN_MASK 31
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_BLUE_MASK 32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_ALPHA_MASK 33
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_MAX_PBUFFER_WIDTH 34
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_MAX_PBUFFER_HEIGHT 35
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_MAX_PBUFFER_PIXELS 36
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH 37
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT 38
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_VISUAL_SELECT_GROUP 39
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_SWAP_METHOD 40
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_MAX_SWAP_INTERVAL 41
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_MIN_SWAP_INTERVAL 42
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_BIND_TO_TEXTURE_RGB 43
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_BIND_TO_TEXTURE_RGBA 44
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE 45
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS 46
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_YINVERTED 47
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE 48
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* __DRI_ATTRIB_RENDER_TYPE */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_RGBA_BIT 0x01
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_COLOR_INDEX_BIT 0x02
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_LUMINANCE_BIT 0x04
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_FLOAT_BIT 0x08
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_UNSIGNED_FLOAT_BIT 0x10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* __DRI_ATTRIB_CONFIG_CAVEAT */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_SLOW_BIT 0x01
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_NON_CONFORMANT_CONFIG 0x02
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* __DRI_ATTRIB_TRANSPARENT_TYPE */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TRANSPARENT_RGB 0x00
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TRANSPARENT_INDEX 0x01
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TEXTURE_1D_BIT 0x01
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TEXTURE_2D_BIT 0x02
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_ATTRIB_TEXTURE_RECTANGLE_BIT 0x04
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension defines the core DRI functionality.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CORE "DRI_Core"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CORE_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIcoreExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIscreen *(*createNewScreen)(int screen, int fd,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int sarea_handle,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **extensions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig ***driverConfigs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*destroyScreen)(__DRIscreen *screen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **(*getExtensions)(__DRIscreen *screen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*getConfigAttrib)(const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int attrib,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int *value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*indexConfigAttrib)(const __DRIconfig *config, int index,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int *attrib, unsigned int *value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int drawable_id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int head,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*destroyDrawable)(__DRIdrawable *drawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*swapBuffers)(__DRIdrawable *drawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *(*createNewContext)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *shared,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*copyContext)(__DRIcontext *dest,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *src,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned long mask);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*destroyContext)(__DRIcontext *context);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*bindContext)(__DRIcontext *ctx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *pdraw,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *pread);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*unbindContext)(__DRIcontext *ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Stored version of some component (i.e., server-side DRI module, kernel-side
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * DRM, etc.).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \todo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * There are several data structures that explicitly store a major version,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * minor version, and patch level. These structures should be modified to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * have a \c __DRIversionRec instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIversionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int major; /**< Major version number. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int minor; /**< Minor version number. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int patch; /**< Patch-level. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Framebuffer information record. Used by libGL to communicate information
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * about the framebuffer to the driver's \c __driCreateNewScreen function.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * In XFree86, most of this information is derrived from data returned by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * calling \c XF86DRIGetDeviceInfo.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \sa XF86DRIGetDeviceInfo __DRIdisplayRec::createNewScreen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * __driUtilCreateNewScreen CallCreateNewScreen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \bug This structure could be better named.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIframebufferRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned char *base; /**< Framebuffer base address in the CPU's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * address space. This value is calculated by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * calling \c drmMap on the framebuffer handle
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * returned by \c XF86DRIGetDeviceInfo (or a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * similar function).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int size; /**< Framebuffer size, in bytes. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int stride; /**< Number of bytes from one line to the next. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int width; /**< Pixel width of the framebuffer. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int height; /**< Pixel height of the framebuffer. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int dev_priv_size; /**< Size of the driver's dev-priv structure. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *dev_priv; /**< Pointer to the driver's dev-priv structure. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension provides alternative screen, drawable and context
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * constructors for legacy DRI functionality. This is used in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * conjunction with the core extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_LEGACY "DRI_Legacy"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_LEGACY_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIlegacyExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIscreen *(*createNewScreen)(int screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIversion *ddx_version,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIversion *dri_version,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIversion *drm_version,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIframebuffer *frame_buffer,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *pSAREA, int fd,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **extensions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig ***driver_configs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ drm_drawable_t hwDrawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int renderType, const int *attrs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *(*createNewContext)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int render_type,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *shared,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ drm_context_t hwContext,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension provides alternative screen, drawable and context
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * constructors for swrast DRI functionality. This is used in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * conjunction with the core extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWRAST "DRI_SWRast"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_SWRAST_VERSION 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIswrastExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIscreen *(*createNewScreen)(int screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **extensions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig ***driver_configs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Since version 2 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *(*createNewContextForAPI)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int api,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *shared,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Create a context for a particular API with a set of attributes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since version 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \sa __DRIdri2ExtensionRec::createContextAttribs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *(*createContextAttribs)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int api,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *shared,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned num_attribs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const uint32_t *attribs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned *error,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * createNewScreen() with the driver extensions passed in.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since version 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIscreen *(*createNewScreen2)(int screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **loader_extensions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **driver_extensions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig ***driver_configs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Common DRI function definitions, shared among DRI2 and Image extensions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef __DRIscreen *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(*__DRIcreateNewScreen2Func)(int screen, int fd,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **extensions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **driver_extensions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig ***driver_configs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef __DRIdrawable *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(*__DRIcreateNewDrawableFunc)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef __DRIcontext *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(*__DRIcreateContextAttribsFunc)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int api,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *shared,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned num_attribs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const uint32_t *attribs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned *error,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef unsigned int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(*__DRIgetAPIMaskFunc)(__DRIscreen *screen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * DRI2 Loader extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_FRONT_LEFT 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_BACK_LEFT 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_FRONT_RIGHT 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_BACK_RIGHT 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_DEPTH 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_STENCIL 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_ACCUM 6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_FAKE_FRONT_LEFT 7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_FAKE_FRONT_RIGHT 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_DEPTH_STENCIL 9 /**< Only available with DRI2 1.1 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_HIZ 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Inofficial and for internal use. Increase when adding a new buffer token. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_BUFFER_COUNT 11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIbufferRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int attachment;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int pitch;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int cpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DRI2_LOADER "DRI_DRI2Loader"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DRI2_LOADER_VERSION 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIdri2LoaderExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIbuffer *(*getBuffers)(__DRIdrawable *driDrawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *width, int *height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int *attachments, int count,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *out_count, void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Flush pending front-buffer rendering
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Any rendering that has been performed to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \c __DRI_BUFFER_FAKE_FRONT_LEFT will be flushed to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \c __DRI_BUFFER_FRONT_LEFT.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param driDrawable Drawable whose front-buffer is to be flushed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param loaderPrivate Loader's private data that was previously passed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * into __DRIdri2ExtensionRec::createNewDrawable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Get list of buffers from the server
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Gets a list of buffer for the specified set of attachments. Unlike
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \c ::getBuffers, this function takes a list of attachments paired with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * opaque \c unsigned \c int value describing the format of the buffer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * It is the responsibility of the caller to know what the service that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * allocates the buffers will expect to receive for the format.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param driDrawable Drawable whose buffers are being queried.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param width Output where the width of the buffers is stored.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param height Output where the height of the buffers is stored.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param attachments List of pairs of attachment ID and opaque format
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * requested for the drawable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param count Number of attachment / format pairs stored in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \c attachments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param loaderPrivate Loader's private data that was previously passed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * into __DRIdri2ExtensionRec::createNewDrawable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIbuffer *(*getBuffersWithFormat)(__DRIdrawable *driDrawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *width, int *height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int *attachments, int count,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *out_count, void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension provides alternative screen, drawable and context
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * constructors for DRI2.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DRI2 "DRI_DRI2"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DRI2_VERSION 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_API_OPENGL 0 /**< OpenGL compatibility profile */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_API_GLES 1 /**< OpenGL ES 1.x */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_API_GLES2 2 /**< OpenGL ES 2.x */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_API_OPENGL_CORE 3 /**< OpenGL 3.2+ core profile */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_API_GLES3 4 /**< OpenGL ES 3.x */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ATTRIB_MAJOR_VERSION 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ATTRIB_MINOR_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ATTRIB_FLAGS 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \requires __DRI2_ROBUSTNESS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ATTRIB_RESET_STRATEGY 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_FLAG_DEBUG 0x00000001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_FLAG_FORWARD_COMPATIBLE 0x00000002
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \requires __DRI2_ROBUSTNESS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS 0x00000004
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \name Context reset strategies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@{*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_RESET_NO_NOTIFICATION 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_RESET_LOSE_CONTEXT 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@}*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \name Reasons that __DRIdri2Extension::createContextAttribs might fail
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@{*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Success! */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ERROR_SUCCESS 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Memory allocation failure */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ERROR_NO_MEMORY 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Client requested an API (e.g., OpenGL ES 2.0) that the driver can't do. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ERROR_BAD_API 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Client requested an API version that the driver can't do. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ERROR_BAD_VERSION 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Client requested a flag or combination of flags the driver can't do. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ERROR_BAD_FLAG 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Client requested an attribute the driver doesn't understand. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Client requested a flag the driver doesn't understand. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CTX_ERROR_UNKNOWN_FLAG 6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@}*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIdri2ExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIscreen *(*createNewScreen)(int screen, int fd,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIextension **extensions,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig ***driver_configs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcreateNewDrawableFunc createNewDrawable;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *(*createNewContext)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *shared,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Since version 2 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIgetAPIMaskFunc getAPIMask;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *(*createNewContextForAPI)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int api,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const __DRIconfig *config,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcontext *shared,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIbuffer *(*allocateBuffer)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int attachment,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*releaseBuffer)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIbuffer *buffer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Create a context for a particular API with a set of attributes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since version 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \sa __DRIswrastExtensionRec::createContextAttribs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcreateContextAttribsFunc createContextAttribs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * createNewScreen with the driver's extension list passed in.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since version 4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcreateNewScreen2Func createNewScreen2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension provides functionality to enable various EGLImage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extensions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE "DRI_IMAGE"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_VERSION 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * These formats correspond to the similarly named MESA_FORMAT_*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * tokens, except in the native endian of the CPU. For example, on
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * little endian __DRI_IMAGE_FORMAT_XRGB8888 corresponds to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MESA_FORMAT_XRGB8888, but MESA_FORMAT_XRGB8888_REV on big endian.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * __DRI_IMAGE_FORMAT_NONE is for images that aren't directly usable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * by the driver (YUV planar formats) but serve as a base image for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * creating sub-images for the different planes within the image.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * R8, GR88 and NONE should not be used with createImageFormName or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * createImage, and are returned by query from sub images created with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * createImageFromNames (NONE, see above) and fromPlane (R8 & GR88).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_RGB565 0x1001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_XRGB8888 0x1002
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_ARGB8888 0x1003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_ABGR8888 0x1004
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_XBGR8888 0x1005
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_R8 0x1006 /* Since version 5 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_GR88 0x1007
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_NONE 0x1008
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_XRGB2101010 0x1009
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_ARGB2101010 0x100a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FORMAT_SARGB8 0x100b
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_USE_SHARE 0x0001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_USE_SCANOUT 0x0002
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_USE_CURSOR 0x0004 /* Depricated */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_USE_LINEAR 0x0008
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Four CC formats that matches with WL_DRM_FORMAT_* from wayland_drm.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * and GBM_FORMAT_* from gbm.h, used with createImageFromNames.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_RGB565 0x36314752
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_ARGB8888 0x34325241
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_XRGB8888 0x34325258
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_ABGR8888 0x34324241
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_XBGR8888 0x34324258
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_YUV410 0x39565559
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_YUV411 0x31315559
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_YUV420 0x32315559
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_YUV422 0x36315559
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_YUV444 0x34325559
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_NV12 0x3231564e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_NV16 0x3631564e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_FOURCC_YUYV 0x56595559
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Queryable on images created by createImageFromNames.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * RGB and RGBA are may be usable directly as images but its still
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * recommended to call fromPlanar with plane == 0.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Y_U_V, Y_UV and Y_XUXV all requires call to fromPlanar to create
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * usable sub-images, sampling from images return raw YUV data and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * color conversion needs to be done in the shader.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_COMPONENTS_RGB 0x3001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_COMPONENTS_RGBA 0x3002
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_COMPONENTS_Y_U_V 0x3003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_COMPONENTS_Y_UV 0x3004
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_COMPONENTS_Y_XUXV 0x3005
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * queryImage attributes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ATTRIB_STRIDE 0x2000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ATTRIB_HANDLE 0x2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ATTRIB_NAME 0x2002
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ATTRIB_FORMAT 0x2003 /* available in versions 3+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ATTRIB_WIDTH 0x2004 /* available in versions 4+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ATTRIB_HEIGHT 0x2005
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ATTRIB_COMPONENTS 0x2006 /* available in versions 5+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ATTRIB_FD 0x2007 /* available in versions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 7+. Each query will return a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * new fd. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum __DRIYUVColorSpace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_COLOR_SPACE_UNDEFINED = 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_COLOR_SPACE_ITU_REC601 = 0x327F,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_COLOR_SPACE_ITU_REC709 = 0x3280,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_COLOR_SPACE_ITU_REC2020 = 0x3281
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum __DRISampleRange {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_RANGE_UNDEFINED = 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_FULL_RANGE = 0x3282,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_NARROW_RANGE = 0x3283
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum __DRIChromaSiting {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_CHROMA_SITING_UNDEFINED = 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_CHROMA_SITING_0 = 0x3284,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_YUV_CHROMA_SITING_0_5 = 0x3285
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \name Reasons that __DRIimageExtensionRec::createImageFromTexture might fail
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@{*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Success! */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ERROR_SUCCESS 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Memory allocation failure */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ERROR_BAD_ALLOC 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Client requested an invalid attribute for a texture object */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ERROR_BAD_MATCH 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/** Client requested an invalid texture object */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_ERROR_BAD_PARAMETER 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*@}*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIimageRec __DRIimage;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIimageExtensionRec __DRIimageExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIimageExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*createImageFromName)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int width, int height, int format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int name, int pitch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*createImageFromRenderbuffer)(__DRIcontext *context,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int renderbuffer,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*destroyImage)(__DRIimage *image);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*createImage)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int width, int height, int format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int use,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLboolean (*queryImage)(__DRIimage *image, int attrib, int *value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The new __DRIimage will share the content with the old one, see dup(2).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*dupImage)(__DRIimage *image, void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Validate that a __DRIimage can be used a certain way.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GLboolean (*validateUsage)(__DRIimage *image, unsigned int use);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Unlike createImageFromName __DRI_IMAGE_FORMAT is not but instead
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * __DRI_IMAGE_FOURCC and strides are in bytes not pixels. Stride is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * also per block and not per pixel (for non-RGB, see gallium blocks).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*createImageFromNames)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int width, int height, int fourcc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *names, int num_names,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *strides, int *offsets,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Create an image out of a sub-region of a parent image. This
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * entry point lets us create individual __DRIimages for different
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * planes in a planar buffer (typically yuv), for example. While a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * sub-image shares the underlying buffer object with the parent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * image and other sibling sub-images, the life times of parent and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * sub-images are not dependent. Destroying the parent or a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * sub-image doesn't affect other images. The underlying buffer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * object is free when no __DRIimage remains that references it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Sub-images may overlap, but rendering to overlapping sub-images
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * is undefined.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*fromPlanar)(__DRIimage *image, int plane,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Create image from texture.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*createImageFromTexture)(__DRIcontext *context,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int target,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned texture,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int depth,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int level,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned *error,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Like createImageFromNames, but takes a prime fd instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*createImageFromFds)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int width, int height, int fourcc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *fds, int num_fds,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *strides, int *offsets,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Like createImageFromFds, but takes additional attributes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * For EGL_EXT_image_dma_buf_import.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \since 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*createImageFromDmaBufs)(__DRIscreen *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int width, int height, int fourcc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *fds, int num_fds,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *strides, int *offsets,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum __DRIYUVColorSpace color_space,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum __DRISampleRange sample_range,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum __DRIChromaSiting horiz_siting,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum __DRIChromaSiting vert_siting,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned *error,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension must be implemented by the loader and passed to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * driver at screen creation time. The EGLImage entry points in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * various client APIs take opaque EGLImage handles and use this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extension to map them to a __DRIimage. At version 1, this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extensions allows mapping EGLImage pointers to __DRIimage pointers,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * but future versions could support other EGLImage-like, opaque types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * with new lookup functions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_LOOKUP "DRI_IMAGE_LOOKUP"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_LOOKUP_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIimageLookupExtensionRec __DRIimageLookupExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIimageLookupExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *(*lookupEGLImage)(__DRIscreen *screen, void *image,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension allows for common DRI2 options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_CONFIG_QUERY "DRI_CONFIG_QUERY"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_CONFIG_QUERY_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRI2configQueryExtensionRec __DRI2configQueryExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRI2configQueryExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*configQueryb)(__DRIscreen *screen, const char *var, GLboolean *val);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*configQueryi)(__DRIscreen *screen, const char *var, GLint *val);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*configQueryf)(__DRIscreen *screen, const char *var, GLfloat *val);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Robust context driver extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Existence of this extension means the driver can accept the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \c __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS flag and the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \c __DRI_CTX_ATTRIB_RESET_STRATEGY attribute in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \c __DRIdri2ExtensionRec::createContextAttribs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_ROBUSTNESS "DRI_Robustness"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_ROBUSTNESS_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIrobustnessExtensionRec __DRIrobustnessExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIrobustnessExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * DRI config options extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension provides the XML string containing driver options for use by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the loader in supporting the driconf application.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CONFIG_OPTIONS "DRI_ConfigOptions"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_CONFIG_OPTIONS_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIconfigOptionsExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char *xml;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} __DRIconfigOptionsExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This extension provides a driver vtable to a set of common driver helper
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * functions (driCoreExtension, driDRI2Extension) within the driver
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * implementation, as opposed to having to pass them through a global
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * variable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * It is not intended to be public API to the actual loader, and the vtable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * layout may change at any time.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DRIVER_VTABLE "DRI_DriverVtable"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_DRIVER_VTABLE_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRIDriverVtableExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const struct __DriverAPIRec *vtable;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} __DRIDriverVtableExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Query renderer driver extension
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This allows the window system layer (either EGL or GLX) to query aspects of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * hardware and driver support without creating a context.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_QUERY "DRI_RENDERER_QUERY"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_QUERY_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_VENDOR_ID 0x0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_DEVICE_ID 0x0001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_VERSION 0x0002
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_ACCELERATED 0x0003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_VIDEO_MEMORY 0x0004
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_UNIFIED_MEMORY_ARCHITECTURE 0x0005
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_PREFERRED_PROFILE 0x0006
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_OPENGL_CORE_PROFILE_VERSION 0x0007
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION 0x0008
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_OPENGL_ES_PROFILE_VERSION 0x0009
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI2_RENDERER_OPENGL_ES2_PROFILE_VERSION 0x000a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct __DRI2rendererQueryExtensionRec __DRI2rendererQueryExtension;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRI2rendererQueryExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*queryInteger)(__DRIscreen *screen, int attribute, unsigned int *val);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*queryString)(__DRIscreen *screen, int attribute, const char **val);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Image Loader extension. Drivers use this to allocate color buffers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum __DRIimageBufferMask {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_IMAGE_BUFFER_BACK = (1 << 0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRI_IMAGE_BUFFER_FRONT = (1 << 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIimageList {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t image_mask;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *back;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIimage *front;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_LOADER "DRI_IMAGE_LOADER"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_LOADER_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIimageLoaderExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Allocate color buffers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param driDrawable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param width Width of allocated buffers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param height Height of allocated buffers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param format one of __DRI_IMAGE_FORMAT_*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param stamp Address of variable to be updated when
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * getBuffers must be called again
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param loaderPrivate The loaderPrivate for driDrawable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param buffer_mask Set of buffers to allocate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param buffers Returned buffers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int (*getBuffers)(__DRIdrawable *driDrawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int format,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t *stamp,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *loaderPrivate,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t buffer_mask,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct __DRIimageList *buffers);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Flush pending front-buffer rendering
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Any rendering that has been performed to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * fake front will be flushed to the front
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param driDrawable Drawable whose front-buffer is to be flushed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * \param loaderPrivate Loader's private data that was previously passed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * into __DRIdri2ExtensionRec::createNewDrawable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * DRI extension.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_DRIVER "DRI_IMAGE_DRIVER"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __DRI_IMAGE_DRIVER_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct __DRIimageDriverExtensionRec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIextension base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Common DRI functions, shared with DRI2 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcreateNewScreen2Func createNewScreen2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcreateNewDrawableFunc createNewDrawable;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIcreateContextAttribsFunc createContextAttribs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __DRIgetAPIMaskFunc getAPIMask;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/xorg-server-1.18/files/include/Xplugin.h b/x11/xorg-server-1.18/files/include/Xplugin.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..543ba2d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/x11/xorg-server-1.18/files/include/Xplugin.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,592 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Xplugin.h -- windowing API for rootless X11 server
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $Id: Xplugin.h,v 1.4 2003-03-03 23:30:53 jharper Exp $
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Permission is hereby granted, free of charge, to any person
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ obtaining a copy of this software and associated documentation files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (the "Software"), to deal in the Software without restriction,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ including without limitation the rights to use, copy, modify, merge,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ publish, distribute, sublicense, and/or sell copies of the Software,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ and to permit persons to whom the Software is furnished to do so,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ subject to the following conditions:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ The above copyright notice and this permission notice shall be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ included in all copies or substantial portions of the Software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEALINGS IN THE SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Except as contained in this notice, the name(s) of the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copyright holders shall not be used in advertising or otherwise to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ promote the sale, use or other dealings in this Software without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ prior written authorization.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Note that these interfaces are provided solely for the use of the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ X11 server. Any other uses are unsupported and strongly discouraged. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef XPLUGIN_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XPLUGIN_H 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XPLUGIN_VERSION 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdint.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* By default we use the X server definition of BoxRec to define xp_box,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ so that the compiler can silently convert between the two. But if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_NO_X_HEADERS is defined, we'll define it ourselves. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef XP_NO_X_HEADERS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# include "miscstruct.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef BoxRec xp_box;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct xp_box_struct {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ short x1, y1, x2, y2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct xp_box_struct xp_box;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef unsigned int xp_resource_id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef xp_resource_id xp_window_id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef xp_resource_id xp_surface_id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef unsigned int xp_client_id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef unsigned int xp_request_type;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef int xp_error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef int xp_bool;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Error codes that the functions declared here may return. They all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ numerically match their X equivalents, i.e. the XP_ can be dropped
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if <X11/X.h> has been included. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_error_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_Success = 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BadRequest = 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BadValue = 2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BadWindow = 3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BadMatch = 8,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BadAccess = 10,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BadImplementation = 17,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Event types generated by the plugin. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_event_type_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* The global display configuration changed somehow. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_EVENT_DISPLAY_CHANGED = 1 << 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* A window changed state. Argument is xp_window_state_event */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_EVENT_WINDOW_STATE_CHANGED = 1 << 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* An async request encountered an error. Argument is of type
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_async_error_event */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_EVENT_ASYNC_ERROR = 1 << 2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Sent when a surface is destroyed as a side effect of destroying
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a window. Arg is of type xp_surface_id. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_EVENT_SURFACE_DESTROYED = 1 << 3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Sent when any GL contexts pointing at the given surface need to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ call xp_update_gl_context () to refresh their state (because the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ window moved or was resized. Arg is of type xp_surface_id. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_EVENT_SURFACE_CHANGED = 1 << 4,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Sent when a window has been moved. Arg is of type xp_window_id. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_EVENT_WINDOW_MOVED = 1 << 5,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Function type used to receive events. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef void (xp_event_fun) (unsigned int type, const void *arg,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int arg_size, void *user_data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Operation types. Used when reporting errors asynchronously. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_request_type_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_NIL = 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_DESTROY_WINDOW = 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_CONFIGURE_WINDOW = 2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_FLUSH_WINDOW = 3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_COPY_WINDOW = 4,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_UNLOCK_WINDOW = 5,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_DISABLE_UPDATE = 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_REENABLE_UPDATE = 7,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_HIDE_CURSOR = 8,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_SHOW_CURSOR = 9,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_REQUEST_FRAME_DRAW = 10,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Structure used to report an error asynchronously. Passed as the "arg"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ of an XP_EVENT_ASYNC_ERROR event. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct xp_async_error_event_struct {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_request_type request_type;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_resource_id id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_error error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct xp_async_error_event_struct xp_async_error_event;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Possible window states. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_window_state_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* The window is not in the global list of possibly-visible windows. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_WINDOW_STATE_OFFSCREEN = 1 << 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Parts of the window may be obscured by other windows. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_WINDOW_STATE_OBSCURED = 1 << 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Structure passed as argument of an XP_EVENT_WINDOW_STATE_CHANGED event. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct xp_window_state_event_struct {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_window_id id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int state;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct xp_window_state_event_struct xp_window_state_event;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Function type used to supply a colormap for indexed drawables. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef xp_error (xp_colormap_fun) (void *data, int first_color,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int n_colors, uint32_t *colors);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Window attributes structure. Used when creating and configuring windows.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Also used when configuring surfaces attached to windows. Functions that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ take one of these structures also take a bit mask defining which
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fields are set to meaningful values. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_window_changes_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_ORIGIN = 1 << 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_SIZE = 1 << 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BOUNDS = XP_ORIGIN | XP_SIZE,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_SHAPE = 1 << 2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_STACKING = 1 << 3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_DEPTH = 1 << 4,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_COLORMAP = 1 << 5,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_WINDOW_LEVEL = 1 << 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+struct xp_window_changes_struct {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* XP_ORIGIN */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int x, y;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* XP_SIZE */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int width, height;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int bit_gravity; /* how to resize the backing store */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* XP_SHAPE */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int shape_nrects; /* -1 = remove shape */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_box *shape_rects;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int shape_tx, shape_ty; /* translation for shape */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* XP_STACKING */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int stack_mode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_window_id sibling; /* may be zero; in ABOVE/BELOW modes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ it may specify a relative window */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* XP_DEPTH, window-only */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int depth;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* XP_COLORMAP, window-only */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_colormap_fun *colormap;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *colormap_data;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* XP_WINDOW_LEVEL, window-only */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int window_level;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef struct xp_window_changes_struct xp_window_changes;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Values for bit_gravity field */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_bit_gravity_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_GRAVITY_NONE = 0, /* no gravity, fill everything */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_GRAVITY_NORTH_WEST = 1, /* anchor to top-left corner */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_GRAVITY_NORTH_EAST = 2, /* anchor to top-right corner */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_GRAVITY_SOUTH_EAST = 3, /* anchor to bottom-right corner */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_GRAVITY_SOUTH_WEST = 4, /* anchor to bottom-left corner */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Values for stack_mode field */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_window_stack_mode_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_UNMAPPED = 0, /* remove the window */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_MAPPED_ABOVE = 1, /* display the window on top */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_MAPPED_BELOW = 2, /* display the window at bottom */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Data formats for depth field and composite functions */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_depth_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_DEPTH_NIL = 0, /* null source when compositing */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_DEPTH_ARGB8888,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_DEPTH_RGB555,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_DEPTH_A8, /* for masks when compositing */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_DEPTH_INDEX8,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Options that may be passed to the xp_init () function. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_init_options_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Don't mark that this process can be in the foreground. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_IN_BACKGROUND = 1 << 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Deliver background pointer events to this process. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BACKGROUND_EVENTS = 1 << 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Miscellaneous functions */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Initialize the plugin library. Only the copy/fill/composite functions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ may be called without having previously called xp_init () */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_init (unsigned int options);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Sets the current set of requested notifications to MASK. When any of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ these arrive, CALLBACK will be invoked with CALLBACK-DATA. Note that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ calling this function cancels any previously requested notifications
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ that aren't set in MASK. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_select_events (unsigned int mask,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_event_fun *callback,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *callback_data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Waits for all initiated operations to complete. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_synchronize (void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Causes any display update initiated through the plugin libary to be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ queued until update is reenabled. Note that calls to these functions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ nest. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_disable_update (void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_reenable_update (void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Cursor functions. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Installs the specified cursor. ARGB-DATA should point to 32-bit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ premultiplied big-endian ARGB data. The HOT-X,HOT-Y parameters
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ specify the offset to the cursor's hot spot from its top-left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ corner. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_set_cursor (unsigned int width, unsigned int height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int hot_x, unsigned int hot_y,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const uint32_t *argb_data,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int rowbytes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Hide and show the cursor if it's owned by the current process. Calls
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ to these functions nest. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_hide_cursor (void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_show_cursor (void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Window functions. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Create a new window as defined by MASK and VALUES. MASK must contain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_BOUNDS or an error is raised. The id of the newly created window
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ is stored in *RET-ID if this function returns XP_Success. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_create_window (unsigned int mask,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_window_changes *values,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_window_id *ret_id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Destroys the window identified by ID. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_destroy_window (xp_window_id id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Reconfigures the given window according to MASK and VALUES. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_configure_window (xp_window_id id, unsigned int mask,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_window_changes *values);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Returns true if NATIVE-ID is a window created by the plugin library.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ If so and RET-ID is non-null, stores the id of the window in *RET-ID. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_bool xp_lookup_native_window (unsigned int native_id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_window_id *ret_id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* If ID names a window created by the plugin library, stores it's native
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ window id in *RET-NATIVE-ID. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_get_native_window (xp_window_id id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int *ret_native_id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Locks the rectangle IN-RECT (or, if null, the entire window) of the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ given window's backing store. Any other non-null parameters are filled
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ in as follows:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEPTH = format of returned data. Currently either XP_DEPTH_ARGB8888
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ or XP_DEPTH_RGB565 (possibly with 8 bit planar alpha). Data is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ always stored in native byte order.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ BITS[0] = pointer to top-left pixel of locked color data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ BITS[1] = pointer to top-left of locked alpha data, or null if window
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ has no alpha. If the alpha data is meshed, then BITS[1] = BITS[0].
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ROWBYTES[0,1] = size in bytes of each row of color,alpha data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OUT-RECT = rectangle specifying the current position and size of the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ locked region relative to the window origin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Note that an error is raised when trying to lock an already locked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ window. While the window is locked, the only operations that may
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ be performed on it are to modify, access or flush its marked region. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_lock_window (xp_window_id id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_box *in_rect,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int *depth,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *bits[2],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int rowbytes[2],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_box *out_rect);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Mark that the region specified by SHAPE-NRECTS, SHAPE-RECTS,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SHAPE-TX, and SHAPE-TY in the specified window has been updated, and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ will need to subsequently be redisplayed. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_mark_window (xp_window_id id, int shape_nrects,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_box *shape_rects,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int shape_tx, int shape_ty);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Unlocks the specified window. If FLUSH is true, then any marked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ regions are immediately redisplayed. Note that it's an error to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unlock an already unlocked window. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_unlock_window (xp_window_id id, xp_bool flush);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* If anything is marked in the given window for redisplay, do it now. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_flush_window (xp_window_id id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Moves the contents of the region DX,DY pixels away from that specified
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ by DST_RECTS and DST_NRECTS in the window with SRC-ID to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destination region in the window DST-ID. Note that currently source
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ and destination windows must be the same. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_copy_window (xp_window_id src_id, xp_window_id dst_id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int dst_nrects, const xp_box *dst_rects,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int dx, int dy);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Returns true if the given window has any regions marked for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ redisplay. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_bool xp_is_window_marked (xp_window_id id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* If successful returns a superset of the region marked for update in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ the given window. Use xp_free_region () to release the returned data. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_get_marked_shape (xp_window_id id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int *ret_nrects, xp_box **ret_rects);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern void xp_free_shape (int nrects, xp_box *rects);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Searches for the first window below ABOVE-ID containing the point X,Y,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ and returns it's window id in *RET-ID. If no window is found, *RET-ID
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ is set to zero. If ABOVE-ID is zero, finds the topmost window
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ containing the given point. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_find_window (int x, int y, xp_window_id above_id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_window_id *ret_id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Returns the current origin and size of the window ID in *BOUNDS-RET if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ successful. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_get_window_bounds (xp_window_id id, xp_box *bounds_ret);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Window surface functions. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Create a new VRAM surface on the specified window. If successful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ returns the identifier of the new surface in *RET-SID. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_create_surface (xp_window_id id, xp_surface_id *ret_sid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Destroys the specified surface. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_destroy_surface (xp_surface_id sid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Reconfigures the specified surface as defined by MASK and VALUES.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Note that specifying XP_DEPTH is an error. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_configure_surface (xp_surface_id sid, unsigned int mask,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_window_changes *values);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* If successful, places the client identifier of the current process
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ in *RET-CLIENT. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_get_client_id (xp_client_id *ret_client);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Given a valid window,surface combination created by the current
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ process, attempts to allow the specified external client access
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ to that surface. If successful, returns two integers in RET-KEY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ which the client can use to import the surface into their process. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_export_surface (xp_window_id wid, xp_surface_id sid,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_client_id client,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int ret_key[2]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Given a two integer key returned from xp_export_surface (), tries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ to import the surface into the current process. If successful the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ local surface identifier is stored in *SID-RET. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_import_surface (const unsigned int key[2],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_surface_id *sid_ret);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* If successful, stores the number of surfaces attached to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ specified window in *RET. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_get_window_surface_count (xp_window_id id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int *ret);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Attaches the CGLContextObj CGL-CTX to the specified surface. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_attach_gl_context (void *cgl_ctx, xp_surface_id sid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Updates the CGLContextObj CGL-CTX to reflect any recent changes to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ the surface it's attached to. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_update_gl_context (void *cgl_ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Window frame functions. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Possible arguments to xp_frame_get_rect (). */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_frame_rect_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_RECT_TITLEBAR = 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_RECT_TRACKING = 2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_RECT_GROWBOX = 3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Classes of window frame. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_frame_class_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_DOCUMENT = 1 << 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_DIALOG = 1 << 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_MODAL_DIALOG = 1 << 2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_SYSTEM_MODAL_DIALOG = 1 << 3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_UTILITY = 1 << 4,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_TOOLBAR = 1 << 5,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_MENU = 1 << 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_SPLASH = 1 << 7,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLASS_BORDERLESS = 1 << 8,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Attributes of window frames. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_frame_attr_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_ACTIVE = 0x0001,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_URGENT = 0x0002,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_TITLE = 0x0004,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_PRELIGHT = 0x0008,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_SHADED = 0x0010,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLOSE_BOX = 0x0100,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_COLLAPSE = 0x0200,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_ZOOM = 0x0400,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_ANY_BUTTON = 0x0700,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_CLOSE_BOX_CLICKED = 0x0800,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_COLLAPSE_BOX_CLICKED = 0x1000,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_ZOOM_BOX_CLICKED = 0x2000,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_ANY_CLICKED = 0x3800,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_FRAME_GROW_BOX = 0x4000,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_FRAME_ATTR_IS_SET(a,b) (((a) & (b)) == (b))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_FRAME_ATTR_IS_CLICKED(a,m) ((a) & ((m) << 3))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_FRAME_ATTR_SET_CLICKED(a,m) ((a) |= ((m) << 3))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_FRAME_ATTR_UNSET_CLICKED(a,m) ((a) &= ~((m) << 3))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_FRAME_POINTER_ATTRS (XP_FRAME_PRELIGHT \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | XP_FRAME_ANY_BUTTON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | XP_FRAME_ANY_CLICKED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_frame_get_rect (int type, int class, const xp_box *outer,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_box *inner, xp_box *ret);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_frame_hit_test (int class, int x, int y,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_box *outer,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_box *inner, int *ret);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_frame_draw (xp_window_id wid, int class, unsigned int attr,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const xp_box *outer, const xp_box *inner,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int title_len,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const unsigned char *title_bytes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Memory manipulation functions. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+enum xp_composite_op_enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_COMPOSITE_SRC = 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XP_COMPOSITE_OVER,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_COMPOSITE_FUNCTION(op, src_depth, mask_depth, dest_depth) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (((op) << 24) | ((src_depth) << 16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | ((mask_depth) << 8) | ((dest_depth) << 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_COMPOSITE_FUNCTION_OP(f) (((f) >> 24) & 255)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_COMPOSITE_FUNCTION_SRC_DEPTH(f) (((f) >> 16) & 255)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_COMPOSITE_FUNCTION_MASK_DEPTH(f) (((f) >> 8) & 255)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define XP_COMPOSITE_FUNCTION_DEST_DEPTH(f) (((f) >> 0) & 255)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Composite WIDTH by HEIGHT pixels from source and mask to destination
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using a specified function (if source and destination overlap,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ undefined behavior results).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ For SRC and DEST, the first element of the array is the color data. If
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ the second element is non-null it implies that there is alpha data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (which may be meshed or planar). Data without alpha is assumed to be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opaque.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Passing a null SRC-ROWBYTES pointer implies that the data SRC points
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ to is a single element.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Operations that are not supported will return XP_BadImplementation. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern xp_error xp_composite_pixels (unsigned int width, unsigned int height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int function,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *src[2], unsigned int src_rowbytes[2],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *mask, unsigned int mask_rowbytes,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *dest[2], unsigned int dest_rowbytes[2]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Fill HEIGHT rows of data starting at DST. Each row will have WIDTH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bytes filled with the 32-bit pattern VALUE. Each row is DST-ROWBYTES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wide in total. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern void xp_fill_bytes (unsigned int width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int height, uint32_t value,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *dst, unsigned int dst_rowbytes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Copy HEIGHT rows of bytes from SRC to DST. Each row will have WIDTH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bytes copied. SRC and DST may overlap, and the right thing will happen. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern void xp_copy_bytes (unsigned int width, unsigned int height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const void *src, unsigned int src_rowbytes,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void *dst, unsigned int dst_rowbytes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Suggestions for the minimum number of bytes or pixels for which it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ makes sense to use some of the xp_ functions */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern unsigned int xp_fill_bytes_threshold, xp_copy_bytes_threshold,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xp_composite_area_threshold, xp_scroll_area_threshold;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Set the state for disabled hotkeys */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xp_error xp_disable_hot_keys(xp_bool state);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* XPLUGIN_H */
</span></pre><pre style='margin:0'>
</pre>