summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChí-Thanh Christopher Nguyễn <chithanh@gentoo.org>2012-08-08 13:33:10 +0000
committerChí-Thanh Christopher Nguyễn <chithanh@gentoo.org>2012-08-08 13:33:10 +0000
commit8fd6ebe829debcff1c4bc2a8219794055216e5a3 (patch)
tree7f3d35d7a16fc34e6ec53c94564ac81cc89647c5 /x11-drivers/xf86-video-qxl
parentFix THTTPD_DOCROOT (diff)
downloadhistorical-8fd6ebe829debcff1c4bc2a8219794055216e5a3.tar.gz
historical-8fd6ebe829debcff1c4bc2a8219794055216e5a3.tar.bz2
historical-8fd6ebe829debcff1c4bc2a8219794055216e5a3.zip
Add compatibility to xorg-server-1.13, bug #430162.
Package-Manager: portage-2.2.0_alpha120/cvs/Linux x86_64
Diffstat (limited to 'x11-drivers/xf86-video-qxl')
-rw-r--r--x11-drivers/xf86-video-qxl/ChangeLog9
-rw-r--r--x11-drivers/xf86-video-qxl/Manifest6
-rw-r--r--x11-drivers/xf86-video-qxl/files/xf86-video-qxl-0.0.17-xorg-server-1.13.patch538
-rw-r--r--x11-drivers/xf86-video-qxl/xf86-video-qxl-0.0.17-r1.ebuild28
4 files changed, 578 insertions, 3 deletions
diff --git a/x11-drivers/xf86-video-qxl/ChangeLog b/x11-drivers/xf86-video-qxl/ChangeLog
index c3340668a227..db816a273df9 100644
--- a/x11-drivers/xf86-video-qxl/ChangeLog
+++ b/x11-drivers/xf86-video-qxl/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for x11-drivers/xf86-video-qxl
# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-video-qxl/ChangeLog,v 1.13 2012/08/08 13:22:32 chithanh Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-video-qxl/ChangeLog,v 1.14 2012/08/08 13:33:10 chithanh Exp $
+
+*xf86-video-qxl-0.0.17-r1 (08 Aug 2012)
+
+ 08 Aug 2012; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
+ +files/xf86-video-qxl-0.0.17-xorg-server-1.13.patch,
+ +xf86-video-qxl-0.0.17-r1.ebuild:
+ Add compatibility to xorg-server-1.13, bug #430162.
08 Aug 2012; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
-xf86-video-qxl-0.0.13.ebuild, -xf86-video-qxl-0.0.14.ebuild,
diff --git a/x11-drivers/xf86-video-qxl/Manifest b/x11-drivers/xf86-video-qxl/Manifest
index 906781849305..21bc7e57eb22 100644
--- a/x11-drivers/xf86-video-qxl/Manifest
+++ b/x11-drivers/xf86-video-qxl/Manifest
@@ -1,4 +1,6 @@
-DIST xf86-video-qxl-0.0.17.tar.bz2 379844 SHA256 193c2bb4889de39f7b0071990adaae1753b45e542f68d76cc0d55a7299b49f82
+AUX xf86-video-qxl-0.0.17-xorg-server-1.13.patch 17845 SHA256 d7746f3cf9982967d10eadb97b3aba28cba67d8f4ac2ad9af6335a993b1db168 SHA512 4bde621b1d30447728030a49ede3ab61a8b671609a1928bdcc6ae8683c39bfa1634f4dea7b611cfa222ab57e229d02131da7d0f13b56557a18e57beddb07ebe3 WHIRLPOOL 80b28fbcd2330349b644b33c362fe827711d4a5e92504dcfa2a3020e0752b9d5a899bfe87e7c112b46ec493490a819230cf9f354e92ece06106731f5b22a3172
+DIST xf86-video-qxl-0.0.17.tar.bz2 379844 SHA256 193c2bb4889de39f7b0071990adaae1753b45e542f68d76cc0d55a7299b49f82 SHA512 04af0eedf548f495c8e84880785db50f8e4198790bc9d2d7ef11cd7c4dbec5c0e1496bc2c1e250481327b90ff8f7dede649b2fcc35baa08f9c24826d996199d8 WHIRLPOOL 487523d6daaab2ad4bb0eed0e90ae8535d28cce3b0bcd50a4b075389b6b04df987fe7db390ee5f67a4bbc9e11a4f1ae425981edb2ee311f59dc2419a6714abfb
+EBUILD xf86-video-qxl-0.0.17-r1.ebuild 649 SHA256 3e268a19ffcb1c7c6971e76a137c4671f07d0574c780fd54b9439b856b711eaa SHA512 70851fdb884256346ba324031dd25382290ee9d3727abf6655ccc1ad4f586bf842fba182c79e2ea15ec587114d2558dfa9665f357afb7da461e368e021cf71d8 WHIRLPOOL e4be40fdca48c328cf1176a59e0d44c3abf05287195c890726e78d29bce29b3a237892b1ebf6d9807f3fdcb1f199c242e55010ec12eecbdcdc34401903870c84
EBUILD xf86-video-qxl-0.0.17.ebuild 597 SHA256 143c1c48edf9be5b2ca2fb8532f3265e39f8d37b8f89226c4fb69d612f2255ea SHA512 bed107e864e9366c58980b2e96db233101590f2a0be62293ab6424a38bc2f5d3431f0849e60bedacc6d2bdae3dd366dfd394c7b157f7b126c5c05ebce27c04b8 WHIRLPOOL f1694cc68bf0875cc001ece27748668dd88f98b56ec5b6002ad0a1d420b36ef76c91894cff2590fe8d375c6c242a20ce445aaf6bccf6721b3ca835cec53ec26c
-MISC ChangeLog 2332 SHA256 b5ce82881562bf118bd04c0c1d7c3669ff4168cd2804be39f3c8e98bc20c89f1 SHA512 9396ba4c8dabd0e9515c285f90e81e347530e99ed016f8b95f120c9c6334d3d7acd2781fc352ba67f03eaf0f88441442f181f932e1a07227a90c2af98dce3c8d WHIRLPOOL 3290d567ecdfc91d9dedfc768b84120b9ca7a6047c3360230f4a0d179f7621a0197b04a3dec190595f42c24901d352ee7ced7101215733091943d9fc79ebdedc
+MISC ChangeLog 2588 SHA256 b26e8ad5372139f93f24071108f0c0a974b73f9d28d7ea4126cca256c4dc9b67 SHA512 f6dc6ecb9312dd5ea3f7312685cef168a6afb06be3bc19d0ee881b816c2492a895788158af4b8e0200a6c8c714b289ca2ae4d5bfdcfedc27347429feb4a3b818 WHIRLPOOL 8d666f98b1ad6faafcb86dce92bdc3e1143d3f139203c62b0f0e8deaf4b5bc5b87cd0dc253a5e447d1f095f24ea85f9e70c21750bda4ff0e80f0c87519dcf576
MISC metadata.xml 220 SHA256 02098a3246ae2126fbc3d37008096f3ebfcd48cbb57947f910df9aebf8164849 SHA512 d242006225d374d35db154926c75747798abbbc55f7d6d2539e1f87dcf85cf426ec4123478a4968c33cac6cb5ed3b3e5f27d5c53be9fcb4376c241565174c372 WHIRLPOOL d65762a3ac1a9bff012eac9965b37cf53747e494efb561d0c0b192aec219c16e12131d27faaf636ab13b49092d1035a5f93900534bc2d27452a5369c1c2e855c
diff --git a/x11-drivers/xf86-video-qxl/files/xf86-video-qxl-0.0.17-xorg-server-1.13.patch b/x11-drivers/xf86-video-qxl/files/xf86-video-qxl-0.0.17-xorg-server-1.13.patch
new file mode 100644
index 000000000000..cfb476649125
--- /dev/null
+++ b/x11-drivers/xf86-video-qxl/files/xf86-video-qxl-0.0.17-xorg-server-1.13.patch
@@ -0,0 +1,538 @@
+From f1a9c1b33bff038807755824190c69889ef6d794 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied@redhat.com>
+Date: Wed, 06 Jun 2012 13:19:04 +0000
+Subject: qxl: add API compat for latest X server.
+
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+---
+diff --git a/src/Makefile.am b/src/Makefile.am
+index c3ba074..79ea3cc 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -47,7 +47,8 @@ qxl_drv_la_SOURCES = \
+ mspace.h \
+ murmurhash3.c \
+ murmurhash3.h \
+- qxl_cursor.c
++ qxl_cursor.c \
++ compat-api.h
+ endif
+
+ if BUILD_XSPICE
+diff --git a/src/compat-api.h b/src/compat-api.h
+new file mode 100644
+index 0000000..6bc946f
+--- a/dev/null
++++ b/src/compat-api.h
+@@ -0,0 +1,99 @@
++/*
++ * Copyright 2012 Red Hat, Inc.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Software"),
++ * to deal in the Software without restriction, including without limitation
++ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice (including the next
++ * paragraph) shall be included in all copies or substantial portions of the
++ * Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++ * DEALINGS IN THE SOFTWARE.
++ *
++ * Author: Dave Airlie <airlied@redhat.com>
++ */
++
++/* this file provides API compat between server post 1.13 and pre it,
++ it should be reused inside as many drivers as possible */
++#ifndef COMPAT_API_H
++#define COMPAT_API_H
++
++#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
++#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
++#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
++#endif
++
++#ifndef XF86_HAS_SCRN_CONV
++#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
++#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
++#endif
++
++#ifndef XF86_SCRN_INTERFACE
++
++#define SCRN_ARG_TYPE int
++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
++
++#define SCREEN_ARG_TYPE int
++#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
++
++#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv
++
++#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
++#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
++
++#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
++#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
++
++#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
++#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0
++
++#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
++#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0
++
++#define FREE_SCREEN_ARGS_DECL int arg, int flags
++
++#define VT_FUNC_ARGS_DECL int arg, int flags
++#define VT_FUNC_ARGS pScrn->scrnIndex, 0
++
++#define XF86_SCRN_ARG(x) ((x)->scrnIndex)
++#else
++#define SCRN_ARG_TYPE ScrnInfoPtr
++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
++
++#define SCREEN_ARG_TYPE ScreenPtr
++#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
++
++#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
++
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
++#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++
++#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
++#define CLOSE_SCREEN_ARGS pScreen
++
++#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
++#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y
++
++#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
++#define SWITCH_MODE_ARGS(arg, m) arg, m
++
++#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
++
++#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
++#define VT_FUNC_ARGS pScrn
++
++#define XF86_SCRN_ARG(x) (x)
++
++#endif
++
++#endif
+diff --git a/src/qxl.h b/src/qxl.h
+index ed12680..46155c9 100644
+--- a/src/qxl.h
++++ b/src/qxl.h
+@@ -50,6 +50,7 @@
+ #include "vgaHW.h"
+ #endif /* XSPICE */
+
++#include "compat-api.h"
+ #define hidden _X_HIDDEN
+
+ #ifdef XSPICE
+diff --git a/src/qxl_driver.c b/src/qxl_driver.c
+index f7ccbbf..b0250e5 100644
+--- a/src/qxl_driver.c
++++ b/src/qxl_driver.c
+@@ -328,7 +328,7 @@ qxl_blank_screen(ScreenPtr pScreen, int mode)
+
+ #ifdef XSPICE
+ static void
+-unmap_memory_helper(qxl_screen_t *qxl, int scrnIndex)
++unmap_memory_helper(qxl_screen_t *qxl)
+ {
+ free(qxl->ram);
+ free(qxl->vram);
+@@ -336,7 +336,7 @@ unmap_memory_helper(qxl_screen_t *qxl, int scrnIndex)
+ }
+
+ static void
+-map_memory_helper(qxl_screen_t *qxl, int scrnIndex)
++map_memory_helper(qxl_screen_t *qxl)
+ {
+ qxl->ram = malloc(RAM_SIZE);
+ qxl->ram_physical = qxl->ram;
+@@ -349,7 +349,7 @@ map_memory_helper(qxl_screen_t *qxl, int scrnIndex)
+ }
+ #else /* Default */
+ static void
+-unmap_memory_helper(qxl_screen_t *qxl, int scrnIndex)
++unmap_memory_helper(qxl_screen_t *qxl)
+ {
+ #ifdef XSERVER_LIBPCIACCESS
+ if (qxl->ram)
+@@ -369,7 +369,7 @@ unmap_memory_helper(qxl_screen_t *qxl, int scrnIndex)
+ }
+
+ static void
+-map_memory_helper(qxl_screen_t *qxl, int scrnIndex)
++map_memory_helper(qxl_screen_t *qxl)
+ {
+ #ifdef XSERVER_LIBPCIACCESS
+ pci_device_map_range(qxl->pci, qxl->pci->regions[0].base_addr,
+@@ -412,7 +412,7 @@ map_memory_helper(qxl_screen_t *qxl, int scrnIndex)
+ #endif /* XSPICE */
+
+ static void
+-qxl_unmap_memory(qxl_screen_t *qxl, int scrnIndex)
++qxl_unmap_memory(qxl_screen_t *qxl)
+ {
+ #ifdef XSPICE
+ if (qxl->worker) {
+@@ -420,7 +420,7 @@ qxl_unmap_memory(qxl_screen_t *qxl, int scrnIndex)
+ qxl->worker_running = FALSE;
+ }
+ #endif
+- unmap_memory_helper(qxl, scrnIndex);
++ unmap_memory_helper(qxl);
+ qxl->ram = qxl->ram_physical = qxl->vram = qxl->rom = NULL;
+
+ qxl->num_modes = 0;
+@@ -430,7 +430,7 @@ qxl_unmap_memory(qxl_screen_t *qxl, int scrnIndex)
+ static Bool
+ qxl_map_memory(qxl_screen_t *qxl, int scrnIndex)
+ {
+- map_memory_helper(qxl, scrnIndex);
++ map_memory_helper(qxl);
+
+ if (!qxl->ram || !qxl->vram || !qxl->rom)
+ return FALSE;
+@@ -556,9 +556,9 @@ qxl_reset (qxl_screen_t *qxl)
+ }
+
+ static Bool
+-qxl_close_screen(int scrnIndex, ScreenPtr pScreen)
++qxl_close_screen(CLOSE_SCREEN_ARGS_DECL)
+ {
+- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ qxl_screen_t *qxl = pScrn->driverPrivate;
+ Bool result;
+
+@@ -569,7 +569,7 @@ qxl_close_screen(int scrnIndex, ScreenPtr pScreen)
+ pScreen->CreateScreenResources = qxl->create_screen_resources;
+ pScreen->CloseScreen = qxl->close_screen;
+
+- result = pScreen->CloseScreen(scrnIndex, pScreen);
++ result = pScreen->CloseScreen(CLOSE_SCREEN_ARGS);
+
+ #ifndef XSPICE
+ if (!xf86IsPrimaryPci (qxl->pci) && qxl->primary)
+@@ -579,7 +579,7 @@ qxl_close_screen(int scrnIndex, ScreenPtr pScreen)
+ if (pScrn->vtSema)
+ {
+ qxl_restore_state(pScrn);
+- qxl_unmap_memory(qxl, scrnIndex);
++ qxl_unmap_memory(qxl);
+ }
+ pScrn->vtSema = FALSE;
+
+@@ -589,7 +589,7 @@ qxl_close_screen(int scrnIndex, ScreenPtr pScreen)
+ static void
+ set_screen_pixmap_header (ScreenPtr pScreen)
+ {
+- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ qxl_screen_t *qxl = pScrn->driverPrivate;
+ PixmapPtr pPixmap = pScreen->GetScreenPixmap(pScreen);
+
+@@ -611,10 +611,11 @@ set_screen_pixmap_header (ScreenPtr pScreen)
+ }
+
+ static Bool
+-qxl_switch_mode(int scrnIndex, DisplayModePtr p, int flags)
++qxl_switch_mode(SWITCH_MODE_ARGS_DECL)
+ {
+- qxl_screen_t *qxl = xf86Screens[scrnIndex]->driverPrivate;
+- int mode_index = (int)(unsigned long)p->Private;
++ SCRN_INFO_PTR(arg);
++ qxl_screen_t *qxl = pScrn->driverPrivate;
++ int mode_index = (int)(unsigned long)mode->Private;
+ struct QXLMode *m = qxl->modes + mode_index;
+ ScreenPtr pScreen;
+ void *evacuated;
+@@ -680,7 +681,7 @@ enum ROPDescriptor
+ static Bool
+ qxl_create_screen_resources(ScreenPtr pScreen)
+ {
+- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ qxl_screen_t *qxl = pScrn->driverPrivate;
+ Bool ret;
+ PixmapPtr pPixmap;
+@@ -848,7 +849,7 @@ qxl_set_screen_pixmap (PixmapPtr pixmap)
+ static PixmapPtr
+ qxl_create_pixmap (ScreenPtr screen, int w, int h, int depth, unsigned usage)
+ {
+- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
++ ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+ PixmapPtr pixmap;
+ qxl_screen_t *qxl = scrn->driverPrivate;
+ qxl_surface_t *surface;
+@@ -906,7 +907,7 @@ static Bool
+ qxl_destroy_pixmap (PixmapPtr pixmap)
+ {
+ ScreenPtr screen = pixmap->drawable.pScreen;
+- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
++ ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+ qxl_screen_t *qxl = scrn->driverPrivate;
+ qxl_surface_t *surface = NULL;
+
+@@ -936,7 +937,7 @@ qxl_destroy_pixmap (PixmapPtr pixmap)
+ static Bool
+ setup_uxa (qxl_screen_t *qxl, ScreenPtr screen)
+ {
+- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
++ ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+ #if HAS_DIXREGISTERPRIVATEKEY
+ if (!dixRegisterPrivateKey(&uxa_pixmap_index, PRIVATE_PIXMAP, 0))
+ return FALSE;
+@@ -1030,9 +1031,9 @@ spiceqxl_screen_init(int scrnIndex, ScrnInfoPtr pScrn, qxl_screen_t *qxl)
+ #endif
+
+ static Bool
+-qxl_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
++qxl_screen_init(SCREEN_INIT_ARGS_DECL)
+ {
+- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ qxl_screen_t *qxl = pScrn->driverPrivate;
+ struct QXLRam *ram_header;
+ VisualPtr visual;
+@@ -1041,7 +1042,7 @@ qxl_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+
+ qxl->pScrn = pScrn;
+
+- if (!qxl_map_memory(qxl, scrnIndex))
++ if (!qxl_map_memory(qxl, pScrn->scrnIndex))
+ return FALSE;
+
+ #ifdef XSPICE
+@@ -1160,7 +1161,7 @@ qxl_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ pScreen->width = pScrn->currentMode->HDisplay;
+ pScreen->height = pScrn->currentMode->VDisplay;
+
+- qxl_switch_mode(scrnIndex, pScrn->currentMode, 0);
++ qxl_switch_mode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
+
+ CHECK_POINT();
+
+@@ -1171,13 +1172,13 @@ out:
+ }
+
+ static Bool
+-qxl_enter_vt(int scrnIndex, int flags)
++qxl_enter_vt(VT_FUNC_ARGS_DECL)
+ {
+- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++ SCRN_INFO_PTR(arg);
+ qxl_screen_t *qxl = pScrn->driverPrivate;
+
+ qxl_save_state(pScrn);
+- qxl_switch_mode(scrnIndex, pScrn->currentMode, 0);
++ qxl_switch_mode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
+
+ if (qxl->vt_surfaces)
+ {
+@@ -1186,18 +1187,18 @@ qxl_enter_vt(int scrnIndex, int flags)
+ qxl->vt_surfaces = NULL;
+ }
+
+- pScrn->EnableDisableFBAccess (scrnIndex, TRUE);
++ pScrn->EnableDisableFBAccess (XF86_SCRN_ARG(pScrn), TRUE);
+
+ return TRUE;
+ }
+
+ static void
+-qxl_leave_vt(int scrnIndex, int flags)
++qxl_leave_vt(VT_FUNC_ARGS_DECL)
+ {
+- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++ SCRN_INFO_PTR(arg);
+ qxl_screen_t *qxl = pScrn->driverPrivate;
+
+- pScrn->EnableDisableFBAccess (scrnIndex, FALSE);
++ pScrn->EnableDisableFBAccess (XF86_SCRN_ARG(pScrn), FALSE);
+
+ qxl->vt_surfaces = qxl_surface_cache_evacuate_all (qxl->surface_cache);
+
+@@ -1327,9 +1328,9 @@ qxl_find_native_mode(ScrnInfoPtr pScrn, DisplayModePtr p)
+ }
+
+ static ModeStatus
+-qxl_valid_mode(int scrn, DisplayModePtr p, Bool flag, int pass)
++qxl_valid_mode(SCRN_ARG_TYPE arg, DisplayModePtr p, Bool flag, int pass)
+ {
+- ScrnInfoPtr pScrn = xf86Screens[scrn];
++ SCRN_INFO_PTR(arg);
+ int scrnIndex = pScrn->scrnIndex;
+ qxl_screen_t *qxl = pScrn->driverPrivate;
+ int bpp = pScrn->bitsPerPixel;
+@@ -1550,7 +1551,7 @@ qxl_pre_init(ScrnInfoPtr pScrn, int flags)
+ #endif
+
+ /* hate */
+- qxl_unmap_memory(qxl, scrnIndex);
++ qxl_unmap_memory(qxl);
+
+ CHECK_POINT();
+
+diff --git a/src/qxl_surface.c b/src/qxl_surface.c
+index a8901f0..c6f21a9 100644
+--- a/src/qxl_surface.c
++++ b/src/qxl_surface.c
+@@ -842,7 +842,7 @@ qxl_surface_prepare_access (qxl_surface_t *surface,
+ int n_boxes;
+ BoxPtr boxes;
+ ScreenPtr pScreen = pixmap->drawable.pScreen;
+- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ RegionRec new;
+
+ if (!pScrn->vtSema)
+diff --git a/src/uxa/uxa-glyphs.c b/src/uxa/uxa-glyphs.c
+index c9fae0f..dd50dfc 100644
+--- a/src/uxa/uxa-glyphs.c
++++ b/src/uxa/uxa-glyphs.c
+@@ -221,7 +221,7 @@ uxa_glyph_cache_upload_glyph(ScreenPtr screen,
+ GlyphPtr glyph,
+ int x, int y)
+ {
+- PicturePtr pGlyphPicture = GlyphPicture(glyph)[screen->myNum];
++ PicturePtr pGlyphPicture = GetGlyphPicture(glyph, screen);
+ PixmapPtr pGlyphPixmap = (PixmapPtr) pGlyphPicture->pDrawable;
+ PixmapPtr pCachePixmap = (PixmapPtr) cache->picture->pDrawable;
+ PixmapPtr scratch;
+@@ -430,7 +430,7 @@ uxa_check_glyphs(CARD8 op,
+ INT16 xSrc,
+ INT16 ySrc, int nlist, GlyphListPtr list, GlyphPtr * glyphs)
+ {
+- int screen = dst->pDrawable->pScreen->myNum;
++ ScreenPtr pScreen = dst->pDrawable->pScreen;
+ pixman_image_t *image;
+ PixmapPtr scratch;
+ PicturePtr mask;
+@@ -494,7 +494,7 @@ uxa_check_glyphs(CARD8 op,
+ n = list->len;
+ while (n--) {
+ GlyphPtr glyph = *glyphs++;
+- PicturePtr g = GlyphPicture(glyph)[screen];
++ PicturePtr g = GetGlyphPicture(glyph, pScreen);
+ if (g) {
+ if (maskFormat) {
+ CompositePicture(PictOpAdd, g, NULL, mask,
+@@ -560,7 +560,7 @@ static PicturePtr
+ uxa_glyph_cache(ScreenPtr screen, GlyphPtr glyph, int *out_x, int *out_y)
+ {
+ uxa_screen_t *uxa_screen = uxa_get_screen(screen);
+- PicturePtr glyph_picture = GlyphPicture(glyph)[screen->myNum];
++ PicturePtr glyph_picture = GetGlyphPicture(glyph, screen);
+ uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[PICT_FORMAT_RGB(glyph_picture->format) != 0];
+ struct uxa_glyph *priv = NULL;
+ int size, mask, pos, s;
+@@ -760,7 +760,7 @@ uxa_glyphs_to_dst(CARD8 op,
+ this_atlas = uxa_glyph_cache(screen, glyph, &mask_x, &mask_y);
+ if (this_atlas == NULL) {
+ /* no cache for this glyph */
+- this_atlas = GlyphPicture(glyph)[screen->myNum];
++ this_atlas = GetGlyphPicture(glyph, screen);
+ mask_x = mask_y = 0;
+ }
+ }
+@@ -970,7 +970,7 @@ uxa_glyphs_via_mask(CARD8 op,
+ this_atlas = uxa_glyph_cache(screen, glyph, &src_x, &src_y);
+ if (this_atlas == NULL) {
+ /* no cache for this glyph */
+- this_atlas = GlyphPicture(glyph)[screen->myNum];
++ this_atlas = GetGlyphPicture(glyph, screen);
+ src_x = src_y = 0;
+ }
+ }
+diff --git a/src/uxa/uxa-priv.h b/src/uxa/uxa-priv.h
+index 80095ac..7a3c85e 100644
+--- a/src/uxa/uxa-priv.h
++++ b/src/uxa/uxa-priv.h
+@@ -60,6 +60,7 @@
+ #endif
+ #include "damage.h"
+
++#include "../compat-api.h"
+ /* Provide substitutes for gcc's __FUNCTION__ on other compilers */
+ #if !defined(__GNUC__) && !defined(__FUNCTION__)
+ # if defined(__STDC__) && (__STDC_VERSION__>=199901L) /* C99 */
+@@ -110,7 +111,7 @@ typedef struct {
+
+ #define UXA_NUM_SOLID_CACHE 16
+
+-typedef void (*EnableDisableFBAccessProcPtr) (int, Bool);
++typedef void (*EnableDisableFBAccessProcPtr) (SCREEN_ARG_TYPE, Bool);
+ typedef struct {
+ uxa_driver_t *info;
+ CreateGCProcPtr SavedCreateGC;
+diff --git a/src/uxa/uxa.c b/src/uxa/uxa.c
+index dc973ef..4acf53f 100644
+--- a/src/uxa/uxa.c
++++ b/src/uxa/uxa.c
+@@ -361,10 +361,10 @@ static RegionPtr uxa_bitmap_to_region(PixmapPtr pPix)
+ return ret;
+ }
+
+-static void uxa_xorg_enable_disable_fb_access(int index, Bool enable)
++static void uxa_xorg_enable_disable_fb_access(SCREEN_ARG_TYPE arg, Bool enable)
+ {
+- ScreenPtr screen = screenInfo.screens[index];
+- uxa_screen_t *uxa_screen = uxa_get_screen(screen);
++ SCREEN_PTR(arg);
++ uxa_screen_t *uxa_screen = uxa_get_screen(pScreen);
+
+ if (!enable && uxa_screen->disableFbCount++ == 0)
+ uxa_screen->swappedOut = TRUE;
+@@ -373,7 +373,7 @@ static void uxa_xorg_enable_disable_fb_access(int index, Bool enable)
+ uxa_screen->swappedOut = FALSE;
+
+ if (uxa_screen->SavedEnableDisableFBAccess)
+- uxa_screen->SavedEnableDisableFBAccess(index, enable);
++ uxa_screen->SavedEnableDisableFBAccess(arg, enable);
+ }
+
+ void uxa_set_fallback_debug(ScreenPtr screen, Bool enable)
+@@ -401,10 +401,10 @@ Bool uxa_swapped_out(ScreenPtr screen)
+ * uxa_close_screen() unwraps its wrapped screen functions and tears down UXA's
+ * screen private, before calling down to the next CloseSccreen.
+ */
+-static Bool uxa_close_screen(int i, ScreenPtr pScreen)
++static Bool uxa_close_screen(CLOSE_SCREEN_ARGS_DECL)
+ {
+ uxa_screen_t *uxa_screen = uxa_get_screen(pScreen);
+- ScrnInfoPtr scrn = xf86Screens[pScreen->myNum];
++ ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+ #ifdef RENDER
+ PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
+ #endif
+@@ -447,7 +447,7 @@ static Bool uxa_close_screen(int i, ScreenPtr pScreen)
+
+ free(uxa_screen);
+
+- return (*pScreen->CloseScreen) (i, pScreen);
++ return (*pScreen->CloseScreen) (CLOSE_SCREEN_ARGS);
+ }
+
+ /**
+@@ -478,7 +478,7 @@ uxa_driver_t *uxa_driver_alloc(void)
+ Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver)
+ {
+ uxa_screen_t *uxa_screen;
+- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
++ ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+
+ if (!uxa_driver)
+ return FALSE;
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/x11-drivers/xf86-video-qxl/xf86-video-qxl-0.0.17-r1.ebuild b/x11-drivers/xf86-video-qxl/xf86-video-qxl-0.0.17-r1.ebuild
new file mode 100644
index 000000000000..56f3b0f4379d
--- /dev/null
+++ b/x11-drivers/xf86-video-qxl/xf86-video-qxl-0.0.17-r1.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-video-qxl/xf86-video-qxl-0.0.17-r1.ebuild,v 1.1 2012/08/08 13:33:10 chithanh Exp $
+
+EAPI=4
+inherit xorg-2
+
+DESCRIPTION="QEMU QXL paravirt video driver"
+
+KEYWORDS="~amd64 ~x86"
+IUSE="xspice"
+
+RDEPEND="xspice? ( app-emulation/spice )
+ x11-base/xorg-server[-minimal]"
+DEPEND="${RDEPEND}
+ x11-proto/xf86dgaproto
+ >=app-emulation/spice-protocol-0.8.1"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-xorg-server-1.13.patch
+)
+
+pkg_setup() {
+ xorg-2_pkg_setup
+ XORG_CONFIGURE_OPTIONS=(
+ $(use_enable xspice)
+ )
+}