diff options
author | marha <marha@users.sourceforge.net> | 2012-09-24 08:40:01 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-09-24 08:50:12 +0200 |
commit | c24a0fccb18e611b2879e68565ab8f1c5c5dbd62 (patch) | |
tree | 8b2070725227ae6c92ded43789f80347fabac306 /xorg-server/hw | |
parent | 210f44f785e5b0da1bfe6ea68ad8f31c4ad2e282 (diff) | |
parent | 0ebcd32e91486caccc041c8ca23e39e160b24702 (diff) | |
download | vcxsrv-c24a0fccb18e611b2879e68565ab8f1c5c5dbd62.tar.gz vcxsrv-c24a0fccb18e611b2879e68565ab8f1c5c5dbd62.tar.bz2 vcxsrv-c24a0fccb18e611b2879e68565ab8f1c5c5dbd62.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
mesa pixman xserver git update 24 sep 2012
Conflicts:
pixman/pixman/pixman-sse2.c
xorg-server/dix/window.c
Diffstat (limited to 'xorg-server/hw')
-rw-r--r-- | xorg-server/hw/dmx/doc/dmx.xml | 12 | ||||
-rw-r--r-- | xorg-server/hw/kdrive/src/kdrive.h | 1 | ||||
-rw-r--r-- | xorg-server/hw/vfb/InitInput.c | 1 | ||||
-rw-r--r-- | xorg-server/hw/vfb/InitOutput.c | 1 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/common/xf86.h | 1 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/common/xf86Bus.c | 15 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/common/xf86Configure.c | 27 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/common/xf86Init.c | 27 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/common/xf86Priv.h | 1 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/doc/ddxDesign.xml | 20 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/os-support/linux/lnx_video.c | 89 | ||||
-rw-r--r-- | xorg-server/hw/xfree86/sdksyms.sh | 1 | ||||
-rw-r--r-- | xorg-server/hw/xnest/Screen.c | 1 | ||||
-rw-r--r-- | xorg-server/hw/xnest/Visual.c | 1 | ||||
-rw-r--r-- | xorg-server/hw/xquartz/darwin.c | 1 | ||||
-rw-r--r-- | xorg-server/hw/xquartz/xpr/dri.c | 6 | ||||
-rw-r--r-- | xorg-server/hw/xquartz/xpr/xprFrame.c | 28 | ||||
-rw-r--r-- | xorg-server/hw/xwin/win.h | 1 |
18 files changed, 103 insertions, 131 deletions
diff --git a/xorg-server/hw/dmx/doc/dmx.xml b/xorg-server/hw/dmx/doc/dmx.xml index 793aacea0..6d7df4133 100644 --- a/xorg-server/hw/dmx/doc/dmx.xml +++ b/xorg-server/hw/dmx/doc/dmx.xml @@ -1215,14 +1215,6 @@ area. Common functions to wrap are CloseScreen() and SaveScreen(). </para></listitem></varlistentry> <varlistentry> -<term>miInitializeBackingStore()</term> -<listitem> -<para>This MI function initializes the -screen's backing storage functions, which are used to save areas of -windows that are currently covered by other windows. -</para></listitem></varlistentry> - -<varlistentry> <term>miDCInitialize()</term> <listitem> <para>This MI function initializes the MI cursor @@ -1320,8 +1312,8 @@ initialize each of its screens. <para>Xnest's ScreenInit() function is called xnestOpenScreen(). This function initializes its screen's depth and visual information, and then calls miScreenInit() to set up the default -screen functions. It then calls miInitializeBackingStore() and -miDCInitialize() to initialize backing store and the software cursor. +screen functions. It then calls miDCInitialize() to initialize the +software cursor. Finally, it replaces many of the screen functions with its own functions that repackage and send the requests to the real X server to which Xnest is attached. diff --git a/xorg-server/hw/kdrive/src/kdrive.h b/xorg-server/hw/kdrive/src/kdrive.h index 9033adb88..b93dfd6f4 100644 --- a/xorg-server/hw/kdrive/src/kdrive.h +++ b/xorg-server/hw/kdrive/src/kdrive.h @@ -32,7 +32,6 @@ #include "pixmapstr.h" #include "windowstr.h" #include "servermd.h" -#include "mibstore.h" #include "colormapst.h" #include "gcstruct.h" #include "input.h" diff --git a/xorg-server/hw/vfb/InitInput.c b/xorg-server/hw/vfb/InitInput.c index 9d0fd9866..52cde72f0 100644 --- a/xorg-server/hw/vfb/InitInput.c +++ b/xorg-server/hw/vfb/InitInput.c @@ -36,7 +36,6 @@ from The Open Group. #include "scrnintstr.h" #include "inputstr.h" #include <X11/Xos.h> -#include "mibstore.h" #include "mipointer.h" #include "xkbsrv.h" #include <X11/keysym.h> diff --git a/xorg-server/hw/vfb/InitOutput.c b/xorg-server/hw/vfb/InitOutput.c index 955624f3d..07ea8ea93 100644 --- a/xorg-server/hw/vfb/InitOutput.c +++ b/xorg-server/hw/vfb/InitOutput.c @@ -41,7 +41,6 @@ from The Open Group. #include "servermd.h" #define PSZ 8 #include "fb.h" -#include "mibstore.h" #include "colormapst.h" #include "gcstruct.h" #include "input.h" diff --git a/xorg-server/hw/xfree86/common/xf86.h b/xorg-server/hw/xfree86/common/xf86.h index bb2903da0..179b87cf5 100644 --- a/xorg-server/hw/xfree86/common/xf86.h +++ b/xorg-server/hw/xfree86/common/xf86.h @@ -55,6 +55,7 @@ extern _X_EXPORT int xf86DoConfigure; extern _X_EXPORT int xf86DoShowOptions; extern _X_EXPORT Bool xf86DoConfigurePass1; +extern _X_EXPORT Bool xorgHWAccess; extern _X_EXPORT DevPrivateKeyRec xf86ScreenKeyRec; diff --git a/xorg-server/hw/xfree86/common/xf86Bus.c b/xorg-server/hw/xfree86/common/xf86Bus.c index 4ffbf7e46..e1015379b 100644 --- a/xorg-server/hw/xfree86/common/xf86Bus.c +++ b/xorg-server/hw/xfree86/common/xf86Bus.c @@ -117,27 +117,12 @@ xf86BusConfig(void) screenLayoutPtr layout; int i, j; - /* Enable full I/O access */ - if (xorgHWAccess) - xorgHWAccess = xf86EnableIO(); - /* * Now call each of the Probe functions. Each successful probe will * result in an extra entry added to the xf86Screens[] list for each * instance of the hardware found. */ for (i = 0; i < xf86NumDrivers; i++) { - xorgHWFlags flags; - - if (!xorgHWAccess) { - if (!xf86DriverList[i]->driverFunc - || !xf86DriverList[i]->driverFunc(NULL, - GET_REQUIRED_HW_INTERFACES, - &flags) - || NEED_IO_ENABLED(flags)) - continue; - } - xf86CallDriverProbe(xf86DriverList[i], FALSE); } diff --git a/xorg-server/hw/xfree86/common/xf86Configure.c b/xorg-server/hw/xfree86/common/xf86Configure.c index 6f69117d3..6c5e35919 100644 --- a/xorg-server/hw/xfree86/common/xf86Configure.c +++ b/xorg-server/hw/xfree86/common/xf86Configure.c @@ -545,41 +545,16 @@ DoConfigure(void) free(vlist); - for (i = 0; i < xf86NumDrivers; i++) { - xorgHWFlags flags; - - if (!xf86DriverList[i]->driverFunc - || !xf86DriverList[i]->driverFunc(NULL, - GET_REQUIRED_HW_INTERFACES, - &flags) - || NEED_IO_ENABLED(flags)) { - xorgHWAccess = TRUE; - break; - } - } - /* Enable full I/O access */ - if (xorgHWAccess) { - if (!xf86EnableIO()) - /* oops, we have failed */ - xorgHWAccess = FALSE; - } + xorgHWAccess = xf86EnableIO(); /* Create XF86Config file structure */ xf86config = calloc(1, sizeof(XF86ConfigRec)); /* Call all of the probe functions, reporting the results. */ for (CurrentDriver = 0; CurrentDriver < xf86NumDrivers; CurrentDriver++) { - xorgHWFlags flags; Bool found_screen; DriverRec *const drv = xf86DriverList[CurrentDriver]; - if (!xorgHWAccess) { - if (!drv->driverFunc - || !drv->driverFunc(NULL, GET_REQUIRED_HW_INTERFACES, &flags) - || NEED_IO_ENABLED(flags)) - continue; - } - found_screen = xf86CallDriverProbe(drv, TRUE); if (found_screen && drv->Identify) { (*drv->Identify) (0); diff --git a/xorg-server/hw/xfree86/common/xf86Init.c b/xorg-server/hw/xfree86/common/xf86Init.c index e4a6b8613..1695dbf74 100644 --- a/xorg-server/hw/xfree86/common/xf86Init.c +++ b/xorg-server/hw/xfree86/common/xf86Init.c @@ -402,6 +402,7 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) Bool pix24Fail = FALSE; Bool autoconfig = FALSE; Bool sigio_blocked = FALSE; + Bool want_hw_access = FALSE; GDevPtr configured_device; xf86Initialising = TRUE; @@ -530,23 +531,21 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) */ for (i = 0; i < xf86NumDrivers; i++) { + xorgHWFlags flags = HW_IO; + if (xf86DriverList[i]->Identify != NULL) xf86DriverList[i]->Identify(0); - if (!xorgHWAccess || !xorgHWOpenConsole) { - xorgHWFlags flags; + if (xf86DriverList[i]->driverFunc) + xf86DriverList[i]->driverFunc(NULL, + GET_REQUIRED_HW_INTERFACES, + &flags); - if (!xf86DriverList[i]->driverFunc - || !xf86DriverList[i]->driverFunc(NULL, - GET_REQUIRED_HW_INTERFACES, - &flags)) - flags = HW_IO; + if (NEED_IO_ENABLED(flags)) + want_hw_access = TRUE; - if (NEED_IO_ENABLED(flags)) - xorgHWAccess = TRUE; - if (!(flags & HW_SKIP_CONSOLE)) - xorgHWOpenConsole = TRUE; - } + if (!(flags & HW_SKIP_CONSOLE)) + xorgHWOpenConsole = TRUE; } if (xorgHWOpenConsole) @@ -554,6 +553,10 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) else xf86Info.dontVTSwitch = TRUE; + /* Enable full I/O access */ + if (want_hw_access) + xorgHWAccess = xf86EnableIO(); + if (xf86BusConfig() == FALSE) return; diff --git a/xorg-server/hw/xfree86/common/xf86Priv.h b/xorg-server/hw/xfree86/common/xf86Priv.h index c9f2e7eb8..58cfe0a1a 100644 --- a/xorg-server/hw/xfree86/common/xf86Priv.h +++ b/xorg-server/hw/xfree86/common/xf86Priv.h @@ -91,7 +91,6 @@ extern _X_EXPORT int xf86NumScreens; extern _X_EXPORT const char *xf86VisualNames[]; extern _X_EXPORT int xf86Verbose; /* verbosity level */ extern _X_EXPORT int xf86LogVerbose; /* log file verbosity level */ -extern _X_EXPORT Bool xorgHWAccess; extern _X_EXPORT RootWinPropPtr *xf86RegisteredPropertiesTable; diff --git a/xorg-server/hw/xfree86/doc/ddxDesign.xml b/xorg-server/hw/xfree86/doc/ddxDesign.xml index 4c2ca47da..7c2c20ff3 100644 --- a/xorg-server/hw/xfree86/doc/ddxDesign.xml +++ b/xorg-server/hw/xfree86/doc/ddxDesign.xml @@ -3561,13 +3561,6 @@ The following include files are typically required by video drivers: </para> <para> - All drivers implementing backing store need this: - <literallayout><filename> - "mibstore.h" - </filename></literallayout> - </para> - - <para> All drivers using the mi colourmap code need this: <literallayout><filename> "micmap.h" @@ -8092,13 +8085,6 @@ visible symbols. </para> <para> - All drivers implementing backing store need this: - <literallayout><filename> - "mibstore.h" - </filename></literallayout> - </para> - - <para> All drivers using the mi colourmap code need this: <literallayout><filename> "micmap.h" @@ -9103,12 +9089,6 @@ ZZZScreenInit(ScreenPtr pScreen, int argc, char **argv) return FALSE; /* - * If backing store is to be supported (as is usually the case), - * initialise it. - */ - miInitializeBackingStore(pScreen); - - /* * Set initial black & white colourmap indices. */ xf86SetBlackWhitePixels(pScreen); diff --git a/xorg-server/hw/xfree86/os-support/linux/lnx_video.c b/xorg-server/hw/xfree86/os-support/linux/lnx_video.c index 3526a21d4..d9a5da184 100644 --- a/xorg-server/hw/xfree86/os-support/linux/lnx_video.c +++ b/xorg-server/hw/xfree86/os-support/linux/lnx_video.c @@ -479,45 +479,39 @@ volatile unsigned char *ioBase = NULL; #define __NR_pciconfig_iobase 200 #endif -#endif - -Bool -xf86EnableIO(void) +static Bool +hwEnableIO(void) { -#if defined(__powerpc__) int fd; - unsigned int ioBase_phys; -#endif - - if (ExtendedEnabled) - return TRUE; - -#if defined(__powerpc__) - ioBase_phys = syscall(__NR_pciconfig_iobase, 2, 0, 0); + unsigned int ioBase_phys = syscall(__NR_pciconfig_iobase, 2, 0, 0); fd = open("/dev/mem", O_RDWR); if (ioBase == NULL) { ioBase = (volatile unsigned char *) mmap(0, 0x20000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, ioBase_phys); -/* Should this be fatal or just a warning? */ -#if 0 - if (ioBase == MAP_FAILED) { - xf86Msg(X_WARNING, - "xf86EnableIOPorts: Failed to map iobase (%s)\n", - strerror(errno)); - return FALSE; - } -#endif } close(fd); -#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__arm__) && !defined(__m32r__) && !defined(__nds32__) + + return ioBase != MAP_FAILED; +} + +static void +hwDisableIO(void) +{ + munmap(ioBase, 0x20000); + ioBase = NULL; +} + +#elif defined(__i386__) || defined(__x86_64__) || defined(__ia64__) || \ + defined(__alpha__) + +static Bool +hwEnableIO(void) +{ if (ioperm(0, 1024, 1) || iopl(3)) { - if (errno == ENODEV) - ErrorF("xf86EnableIOPorts: no I/O ports found\n"); - else - FatalError("xf86EnableIOPorts: failed to set IOPL" - " for I/O (%s)\n", strerror(errno)); + ErrorF("xf86EnableIOPorts: failed to set IOPL for I/O (%s)\n", + strerror(errno)); return FALSE; } #if !defined(__alpha__) @@ -526,27 +520,44 @@ xf86EnableIO(void) ioperm(0x40, 4, 0); /* trap access to the timer chip */ ioperm(0x60, 4, 0); /* trap access to the keyboard controller */ #endif -#endif - ExtendedEnabled = TRUE; return TRUE; } +static void +hwDisableIO(void) +{ + iopl(0); + ioperm(0, 1024, 0); +} + +#else /* non-IO architectures */ + +#define hwEnableIO() TRUE +#define hwDisableIO() do {} while (0) + +#endif + +Bool +xf86EnableIO(void) +{ + if (ExtendedEnabled) + return TRUE; + + ExtendedEnabled = hwEnableIO(); + + return ExtendedEnabled; +} + void xf86DisableIO(void) { if (!ExtendedEnabled) return; -#if defined(__powerpc__) - munmap(ioBase, 0x20000); - ioBase = NULL; -#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__) && !defined(__m32r__) && !defined(__nds32__) - iopl(0); - ioperm(0, 1024, 0); -#endif - ExtendedEnabled = FALSE; - return; + hwDisableIO(); + + ExtendedEnabled = FALSE; } #if defined (__alpha__) diff --git a/xorg-server/hw/xfree86/sdksyms.sh b/xorg-server/hw/xfree86/sdksyms.sh index 07372ad1c..fa1989379 100644 --- a/xorg-server/hw/xfree86/sdksyms.sh +++ b/xorg-server/hw/xfree86/sdksyms.sh @@ -207,7 +207,6 @@ cat > sdksyms.c << EOF #include "miline.h" #include "mipointer.h" #include "mi.h" -#include "mibstore.h" #include "migc.h" #include "mipointrst.h" #include "mizerarc.h" diff --git a/xorg-server/hw/xnest/Screen.c b/xorg-server/hw/xnest/Screen.c index 7b3c1b361..58b5a1199 100644 --- a/xorg-server/hw/xnest/Screen.c +++ b/xorg-server/hw/xnest/Screen.c @@ -21,7 +21,6 @@ is" without express or implied warranty. #include "scrnintstr.h" #include "dix.h" #include "mi.h" -#include "mibstore.h" #include "micmap.h" #include "colormapst.h" #include "resource.h" diff --git a/xorg-server/hw/xnest/Visual.c b/xorg-server/hw/xnest/Visual.c index 63198ba4f..11673c44a 100644 --- a/xorg-server/hw/xnest/Visual.c +++ b/xorg-server/hw/xnest/Visual.c @@ -21,7 +21,6 @@ is" without express or implied warranty. #include "scrnintstr.h" #include "dix.h" #include "mi.h" -#include "mibstore.h" #include "Xnest.h" #include "Display.h" diff --git a/xorg-server/hw/xquartz/darwin.c b/xorg-server/hw/xquartz/darwin.c index d26f18a12..bf511801d 100644 --- a/xorg-server/hw/xquartz/darwin.c +++ b/xorg-server/hw/xquartz/darwin.c @@ -38,7 +38,6 @@ #include "servermd.h" #include "inputstr.h" #include "scrnintstr.h" -#include "mibstore.h" // mi backing store implementation #include "mipointer.h" // mi software cursor #include "micmap.h" // mi colormap code #include "fb.h" // fb framebuffer code diff --git a/xorg-server/hw/xquartz/xpr/dri.c b/xorg-server/hw/xquartz/xpr/dri.c index 03af163f7..adba69cca 100644 --- a/xorg-server/hw/xquartz/xpr/dri.c +++ b/xorg-server/hw/xquartz/xpr/dri.c @@ -64,6 +64,7 @@ #include "mi.h" #include "mipointer.h" #include "rootless.h" +#include "rootlessCommon.h" #include "x-hash.h" #include "x-hook.h" #include "driWrap.h" @@ -380,6 +381,11 @@ DRICreateSurface(ScreenPtr pScreen, Drawable id, DRIDrawablePrivPtr pDRIDrawablePriv; if (pDrawable->type == DRAWABLE_WINDOW) { + /* <rdar://problem/12338921> + * http://bugs.winehq.org/show_bug.cgi?id=31751 + */ + RootlessStopDrawing((WindowPtr)pDrawable, FALSE); + pDRIDrawablePriv = CreateSurfaceForWindow(pScreen, (WindowPtr)pDrawable, &wid); diff --git a/xorg-server/hw/xquartz/xpr/xprFrame.c b/xorg-server/hw/xquartz/xpr/xprFrame.c index 01f1def20..aad375b52 100644 --- a/xorg-server/hw/xquartz/xpr/xprFrame.c +++ b/xorg-server/hw/xquartz/xpr/xprFrame.c @@ -49,6 +49,10 @@ #include <pthread.h> #endif +#ifdef DEBUG_XP_LOCK_WINDOW +#include <execinfo.h> +#endif + #define DEFINE_ATOM_HELPER(func, atom_name) \ static Atom func(void) { \ static int generation; \ @@ -376,6 +380,18 @@ xprStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow) unsigned int rowbytes[2]; xp_error err; +#ifdef DEBUG_XP_LOCK_WINDOW + void* callstack[128]; + int i, frames = backtrace(callstack, 128); + char** strs = backtrace_symbols(callstack, frames); + + ErrorF("=== LOCK %d ===\n", (int)x_cvt_vptr_to_uint(wid)); + for (i = 0; i < frames; ++i) { + ErrorF(" %s\n", strs[i]); + } + free(strs); +#endif + err = xp_lock_window(x_cvt_vptr_to_uint( wid), NULL, NULL, data, rowbytes, NULL); if (err != Success) @@ -395,6 +411,18 @@ xprStopDrawing(RootlessFrameID wid, Bool flush) { xp_error err; +#ifdef DEBUG_XP_LOCK_WINDOW + void* callstack[128]; + int i, frames = backtrace(callstack, 128); + char** strs = backtrace_symbols(callstack, frames); + + ErrorF("=== UNLOCK %d ===\n", (int)x_cvt_vptr_to_uint(wid)); + for (i = 0; i < frames; ++i) { + ErrorF(" %s\n", strs[i]); + } + free(strs); +#endif + err = xp_unlock_window(x_cvt_vptr_to_uint(wid), flush); /* This should be a FatalError, but we started tripping over it. Make it a * FatalError after http://xquartz.macosforge.org/trac/ticket/482 is fixed. diff --git a/xorg-server/hw/xwin/win.h b/xorg-server/hw/xwin/win.h index 4135db1f2..37e8e3d43 100644 --- a/xorg-server/hw/xwin/win.h +++ b/xorg-server/hw/xwin/win.h @@ -167,7 +167,6 @@ typedef int pid_t; #include "micmap.h" #include "mifillarc.h" #include "mifpoly.h" -#include "mibstore.h" #include "input.h" #include "mipointer.h" #include "X11/keysym.h" |