summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorEamon Walsh <ewalsh@tycho.nsa.gov>2006-09-05 18:03:25 -0400
committerEamon Walsh <ewalsh@moss-uranus.epoch.ncsc.mil>2006-09-05 18:03:25 -0400
commit0b81fccd2ee4e054e5cffb739de07460ff2c13f7 (patch)
treecd754982e30fc37bf8f36cd5dd873b07b278eb4e /hw
parent20c4ac6e038607ebbf6c04639670514c016d8597 (diff)
parentc2813514cf7b1a36caa848cbc2ceef99cf2eb769 (diff)
Merge branch 'master' into my-XACE-modular
Conflicts: configure.ac
Diffstat (limited to 'hw')
-rw-r--r--hw/kdrive/ati/Makefile.am14
-rw-r--r--hw/kdrive/chips/Makefile.am17
-rw-r--r--hw/kdrive/ephyr/Makefile.am10
-rw-r--r--hw/kdrive/epson/Makefile.am11
-rw-r--r--hw/kdrive/fake/Makefile.am4
-rw-r--r--hw/kdrive/fbdev/Makefile.am11
-rw-r--r--hw/kdrive/fbdev/fbdev.c18
-rw-r--r--hw/kdrive/fbdev/fbdev.h1
-rw-r--r--hw/kdrive/fbdev/fbinit.c19
-rw-r--r--hw/kdrive/i810/Makefile.am8
-rw-r--r--hw/kdrive/mach64/Makefile.am2
-rw-r--r--hw/kdrive/mga/Makefile.am4
-rw-r--r--hw/kdrive/neomagic/Makefile.am13
-rw-r--r--hw/kdrive/nvidia/Makefile.am7
-rw-r--r--hw/kdrive/pm2/Makefile.am12
-rw-r--r--hw/kdrive/r128/Makefile.am12
-rw-r--r--hw/kdrive/sdl/Makefile.am2
-rw-r--r--hw/kdrive/sis300/Makefile.am2
-rw-r--r--hw/kdrive/smi/Makefile.am13
-rw-r--r--hw/kdrive/vesa/Makefile.am9
-rw-r--r--hw/kdrive/via/Makefile.am2
-rw-r--r--hw/vfb/InitOutput.c3
-rw-r--r--hw/xfree86/common/xf86Config.c9
-rw-r--r--hw/xfree86/common/xf86Cursor.c36
-rw-r--r--hw/xfree86/common/xf86DoScanPci.c4
-rw-r--r--hw/xfree86/common/xf86Init.c13
-rw-r--r--hw/xfree86/common/xf86Privstr.h1
-rw-r--r--hw/xfree86/doc/man/xorg.conf.man.pre4
-rw-r--r--hw/xnest/Args.c7
-rw-r--r--hw/xwin/winmultiwindowwndproc.c20
-rw-r--r--hw/xwin/winshadgdi.c7
31 files changed, 165 insertions, 130 deletions
diff --git a/hw/kdrive/ati/Makefile.am b/hw/kdrive/ati/Makefile.am
index b23418129..3732d7d72 100644
--- a/hw/kdrive/ati/Makefile.am
+++ b/hw/kdrive/ati/Makefile.am
@@ -31,10 +31,6 @@ INCLUDES = \
bin_PROGRAMS = Xati
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libati.a
libati_a_SOURCES = \
@@ -65,8 +61,12 @@ ATI_LIBS = \
Xati_LDADD = \
$(ATI_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
+
+Xati_DEPENDENCIES = \
+ libati.a \
+ $(FBDEV_LIBS) \
+ $(VESA_LIBS) \
+ $(DRI_LIBS)
-Xati_DEPENDENCIES = $(ATI_LIBS)
diff --git a/hw/kdrive/chips/Makefile.am b/hw/kdrive/chips/Makefile.am
index e3080774b..80fb2ddea 100644
--- a/hw/kdrive/chips/Makefile.am
+++ b/hw/kdrive/chips/Makefile.am
@@ -5,10 +5,6 @@ INCLUDES = \
bin_PROGRAMS = Xchips
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libchips.a
libchips_a_SOURCES = \
@@ -19,15 +15,16 @@ libchips_a_SOURCES = \
Xchips_SOURCES = \
chipsstub.c
-CHIPS_LIBS = \
- libchips.a \
+CHIPS_LIBS = \
+ libchips.a \
$(top_builddir)/hw/kdrive/vesa/libvesa.a \
@KDRIVE_LIBS@
Xchips_LDADD = \
$(CHIPS_LIBS) \
- @KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @KDRIVE_LIBS@ \
+ @XSERVER_LIBS@
-Xchips_DEPENDENCIES = $(CHIPS_LIBS) @KDRIVE_LIBS@
+Xchips_DEPENDENCIES = \
+ libchips.a \
+ $(top_builddir)/hw/kdrive/vesa/libvesa.a
diff --git a/hw/kdrive/ephyr/Makefile.am b/hw/kdrive/ephyr/Makefile.am
index f423bfe40..8f51bbe08 100644
--- a/hw/kdrive/ephyr/Makefile.am
+++ b/hw/kdrive/ephyr/Makefile.am
@@ -5,11 +5,6 @@ INCLUDES = \
noinst_LIBRARIES = libxephyr.a libxephyr-hostx.a
-if TSLIB
-TSLIB_LIBS = -lts
-endif
-
-
bin_PROGRAMS = Xephyr
libxephyr_a_SOURCES = \
@@ -34,11 +29,8 @@ Xephyr_LDADD = \
../../../exa/libexa.la \
@KDRIVE_LIBS@ \
@KDRIVE_LIBS@ \
- $(TSLIB_LIBS) \
@XEPHYR_LIBS@
Xephyr_DEPENDENCIES = \
libxephyr.a \
- libxephyr-hostx.a \
- @KDRIVE_LIBS@ \
- ../../../exa/libexa.la
+ libxephyr-hostx.a
diff --git a/hw/kdrive/epson/Makefile.am b/hw/kdrive/epson/Makefile.am
index 0538f4c39..665d13651 100644
--- a/hw/kdrive/epson/Makefile.am
+++ b/hw/kdrive/epson/Makefile.am
@@ -4,10 +4,6 @@ INCLUDES = \
bin_PROGRAMS = Xepson
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libepson.a
libepson_a_SOURCES = \
@@ -25,9 +21,8 @@ EPSON_LIBS = \
@KDRIVE_LIBS@
Xepson_LDADD = \
- $(EPSON_LIBS) \
+ $(EPSON_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
-Xepson_DEPENDENCIES = $(EPSON_LIBS) @KDRIVE_LIBS@
+Xepson_DEPENDENCIES = libepson.a
diff --git a/hw/kdrive/fake/Makefile.am b/hw/kdrive/fake/Makefile.am
index f3a6a3453..3a53e3dbb 100644
--- a/hw/kdrive/fake/Makefile.am
+++ b/hw/kdrive/fake/Makefile.am
@@ -28,6 +28,4 @@ Xfake_LDADD = \
@XSERVER_LIBS@
Xfake_DEPENDENCIES = \
- libfake.a \
- @KDRIVE_LIBS@
-
+ libfake.a
diff --git a/hw/kdrive/fbdev/Makefile.am b/hw/kdrive/fbdev/Makefile.am
index fce6df9f4..3a8c65bbb 100644
--- a/hw/kdrive/fbdev/Makefile.am
+++ b/hw/kdrive/fbdev/Makefile.am
@@ -6,10 +6,6 @@ noinst_LIBRARIES = libfbdev.a
bin_PROGRAMS = Xfbdev
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
libfbdev_a_SOURCES = \
fbdev.c \
fbdev.h
@@ -20,10 +16,7 @@ Xfbdev_SOURCES = \
Xfbdev_LDADD = \
libfbdev.a \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
Xfbdev_DEPENDENCIES = \
- libfbdev.a \
- @KDRIVE_LIBS@
-
+ libfbdev.a
diff --git a/hw/kdrive/fbdev/fbdev.c b/hw/kdrive/fbdev/fbdev.c
index 86384f0a4..20bf75800 100644
--- a/hw/kdrive/fbdev/fbdev.c
+++ b/hw/kdrive/fbdev/fbdev.c
@@ -33,16 +33,24 @@
extern int KdTsPhyScreen;
+char *fbdevDevicePath = NULL;
+
Bool
fbdevInitialize (KdCardInfo *card, FbdevPriv *priv)
{
int k;
unsigned long off;
- if ((priv->fd = open("/dev/fb0", O_RDWR)) < 0 && \
- (priv->fd = open("/dev/fb/0", O_RDWR)) < 0) {
- perror("Error opening /dev/fb0");
- return FALSE;
- }
+
+ if (fbdevDevicePath == NULL)
+ fbdevDevicePath = "/dev/fb0";
+
+ if ((priv->fd = open(fbdevDevicePath, O_RDWR)) < 0)
+ {
+ ErrorF("Error opening framebuffer %s: %s\n",
+ fbdevDevicePath, strerror(errno));
+ return FALSE;
+ }
+
/* quiet valgrind */
memset (&priv->fix, '\0', sizeof (priv->fix));
if ((k=ioctl(priv->fd, FBIOGET_FSCREENINFO, &priv->fix)) < 0) {
diff --git a/hw/kdrive/fbdev/fbdev.h b/hw/kdrive/fbdev/fbdev.h
index d37b99597..b7951db72 100644
--- a/hw/kdrive/fbdev/fbdev.h
+++ b/hw/kdrive/fbdev/fbdev.h
@@ -53,6 +53,7 @@ typedef struct _fbdevScrPriv {
} FbdevScrPriv;
extern KdCardFuncs fbdevFuncs;
+extern char* fbdevDevicePath;
Bool
fbdevInitialize (KdCardInfo *card, FbdevPriv *priv);
diff --git a/hw/kdrive/fbdev/fbinit.c b/hw/kdrive/fbdev/fbinit.c
index ba9d1c695..ee373276b 100644
--- a/hw/kdrive/fbdev/fbinit.c
+++ b/hw/kdrive/fbdev/fbinit.c
@@ -54,15 +54,28 @@ InitInput (int argc, char **argv)
void
ddxUseMsg (void)
{
- KdUseMsg();
+ KdUseMsg();
+ ErrorF("\nXfbdev Device Usage:\n");
+ ErrorF("-fb path Framebuffer device to use. Defaults to /dev/fb0\n");
+ ErrorF("\n");
}
int
ddxProcessArgument (int argc, char **argv, int i)
{
- return KdProcessArgument (argc, argv, i);
-}
+ if (!strcmp (argv[i], "-fb"))
+ {
+ if (i+1 < argc)
+ {
+ fbdevDevicePath = argv[i+1];
+ return 2;
+ }
+ UseMsg();
+ exit(1);
+ }
+ return KdProcessArgument (argc, argv, i);
+}
KdCardFuncs fbdevFuncs = {
diff --git a/hw/kdrive/i810/Makefile.am b/hw/kdrive/i810/Makefile.am
index d676a6902..808d8f70b 100644
--- a/hw/kdrive/i810/Makefile.am
+++ b/hw/kdrive/i810/Makefile.am
@@ -6,9 +6,6 @@ bin_PROGRAMS = Xi810
noinst_LIBRARIES = libi810.a
-if TSLIB
-TSLIB_FLAG = -lts
-endif
libi810_a_SOURCES = \
i810_cursor.c \
@@ -29,7 +26,6 @@ I810_LIBS = \
Xi810_LDADD = \
$(I810_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
-Xi810_DEPENDENCIES = $(I810_LIBS) @KDRIVE_LIBS@
+Xi810_DEPENDENCIES = libi810.a
diff --git a/hw/kdrive/mach64/Makefile.am b/hw/kdrive/mach64/Makefile.am
index 299565fdb..e924aef71 100644
--- a/hw/kdrive/mach64/Makefile.am
+++ b/hw/kdrive/mach64/Makefile.am
@@ -34,4 +34,4 @@ Xmach64_LDADD = \
$(TSLIB_FLAG)
-Xmach64_DEPENDENCIES = $(MACH64_LIBS) @KDRIVE_LIBS@
+Xmach64_DEPENDENCIES = $(MACH64_LIBS)
diff --git a/hw/kdrive/mga/Makefile.am b/hw/kdrive/mga/Makefile.am
index 64d260ede..d8ebae920 100644
--- a/hw/kdrive/mga/Makefile.am
+++ b/hw/kdrive/mga/Makefile.am
@@ -32,4 +32,6 @@ Xmga_LDADD = \
@XSERVER_LIBS@ \
$(TSLIB_FLAG)
-Xmga_DEPENDENCIES = $(MGA_LIBS) @KDRIVE_LIBS@
+Xmga_DEPENDENCIES = \
+ libmga.a \
+ $(top_builddir)/hw/kdrive/vesa/libvesa.a
diff --git a/hw/kdrive/neomagic/Makefile.am b/hw/kdrive/neomagic/Makefile.am
index b37bfc303..9f8e02919 100644
--- a/hw/kdrive/neomagic/Makefile.am
+++ b/hw/kdrive/neomagic/Makefile.am
@@ -16,10 +16,6 @@ INCLUDES = \
bin_PROGRAMS = Xneomagic
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libneomagic.a
libneomagic_a_SOURCES = \
@@ -41,7 +37,10 @@ NEOMAGIC_LIBS = \
Xneomagic_LDADD = \
$(NEOMAGIC_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
+
-Xneomagic_DEPENDENCIES = $(NEOMAGIC_LIBS) @KDRIVE_LIBS@
+Xneomagic_DEPENDENCIES = \
+ libneomagic.a \
+ ${FBDEV_LIBS} \
+ ${VESA_LIBS}
diff --git a/hw/kdrive/nvidia/Makefile.am b/hw/kdrive/nvidia/Makefile.am
index 48551a3a6..d7b26cfa1 100644
--- a/hw/kdrive/nvidia/Makefile.am
+++ b/hw/kdrive/nvidia/Makefile.am
@@ -30,7 +30,8 @@ NVIDIA_LIBS = \
Xnvidia_LDADD = \
$(NVIDIA_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
-Xnvidia_DEPENDENCIES = $(NVIDIA_LIBS) @KDRIVE_LIBS@
+Xnvidia_DEPENDENCIES = \
+ libnvidia.a \
+ $(top_builddir)/hw/kdrive/vesa/libvesa.a
diff --git a/hw/kdrive/pm2/Makefile.am b/hw/kdrive/pm2/Makefile.am
index 1a712072a..24ef15042 100644
--- a/hw/kdrive/pm2/Makefile.am
+++ b/hw/kdrive/pm2/Makefile.am
@@ -5,10 +5,6 @@ INCLUDES = \
bin_PROGRAMS = Xpm2
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libpm2.a
libpm2_a_SOURCES = \
@@ -28,7 +24,9 @@ PM2_LIBS = \
Xpm2_LDADD = \
$(PM2_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
+
-Xpm2_DEPENDENCIES = $(PM2_LIBS) @KDRIVE_LIBS@
+Xpm2_DEPENDENCIES = \
+ libpm2.a \
+ $(top_builddir)/hw/kdrive/vesa/libvesa.a
diff --git a/hw/kdrive/r128/Makefile.am b/hw/kdrive/r128/Makefile.am
index b33e138e1..da42af95f 100644
--- a/hw/kdrive/r128/Makefile.am
+++ b/hw/kdrive/r128/Makefile.am
@@ -5,10 +5,6 @@ INCLUDES = \
bin_PROGRAMS = Xr128
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libr128.a
libr128_a_SOURCES = \
@@ -27,7 +23,9 @@ R128_LIBS = \
Xr128_LDADD = \
$(R128_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
+
-Xr128_DEPENDENCIES = $(R128_LIBS) @KDRIVE_LIBS@
+Xr128_DEPENDENCIES = \
+ libr128.a \
+ $(top_builddir)/hw/kdrive/vesa/libvesa.a
diff --git a/hw/kdrive/sdl/Makefile.am b/hw/kdrive/sdl/Makefile.am
index ba6ed4d4a..cc3873ca8 100644
--- a/hw/kdrive/sdl/Makefile.am
+++ b/hw/kdrive/sdl/Makefile.am
@@ -16,5 +16,3 @@ Xsdl_LDADD = @KDRIVE_PURE_LIBS@ \
@XSERVER_LIBS@ \
$(TSLIB_FLAG) \
@XSDL_LIBS@
-
-Xsdl_DEPENDENCIES = @KDRIVE_LIBS@
diff --git a/hw/kdrive/sis300/Makefile.am b/hw/kdrive/sis300/Makefile.am
index efd1e9ab4..6a6e0bf80 100644
--- a/hw/kdrive/sis300/Makefile.am
+++ b/hw/kdrive/sis300/Makefile.am
@@ -43,4 +43,4 @@ Xsis_LDADD = \
@KDRIVE_LIBS@ \
$(TSLIB_FLAG)
-Xsis_DEPENDENCIES = $(SIS_LIBS) @KDRIVE_LIBS@
+Xsis_DEPENDENCIES = $(SIS_LIBS)
diff --git a/hw/kdrive/smi/Makefile.am b/hw/kdrive/smi/Makefile.am
index a214e762e..86a9ea947 100644
--- a/hw/kdrive/smi/Makefile.am
+++ b/hw/kdrive/smi/Makefile.am
@@ -6,10 +6,6 @@ INCLUDES = \
bin_PROGRAMS = Xsmi
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libsmi.a
# smivideo.c # not ready yet
@@ -32,7 +28,10 @@ SMI_LIBS = \
Xsmi_LDADD = \
$(SMI_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
+ @XSERVER_LIBS@
+
-Xsmi_DEPENDENCIES = $(SMI_LIBS) @KDRIVE_LIBS@
+Xsmi_DEPENDENCIES = \
+ libsmi.a \
+ $(top_builddir)/hw/kdrive/fbdev/libfbdev.a \
+ $(top_builddir)/hw/kdrive/vesa/libvesa.a
diff --git a/hw/kdrive/vesa/Makefile.am b/hw/kdrive/vesa/Makefile.am
index 01bc0a3e1..70ba55fa7 100644
--- a/hw/kdrive/vesa/Makefile.am
+++ b/hw/kdrive/vesa/Makefile.am
@@ -6,11 +6,6 @@ noinst_LIBRARIES = libvesa.a
bin_PROGRAMS = Xvesa
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
-
libvesa_a_SOURCES = \
vesa.c \
vesa.h \
@@ -28,9 +23,7 @@ Xvesa_LDADD = \
libvesa.a \
@KDRIVE_LIBS@ \
@KDRIVE_LIBS@ \
- $(TSLIB_FLAG) \
@XSERVER_LIBS@
Xvesa_DEPENDENCIES = \
- libvesa.a \
- @KDRIVE_LIBS@
+ libvesa.a
diff --git a/hw/kdrive/via/Makefile.am b/hw/kdrive/via/Makefile.am
index 4d52df9b1..7dcfd7c5b 100644
--- a/hw/kdrive/via/Makefile.am
+++ b/hw/kdrive/via/Makefile.am
@@ -31,4 +31,4 @@ Xvia_LDADD = \
@XSERVER_LIBS@ \
$(TSLIB_FLAG)
-Xvia_DEPENDENCIES = $(VIA_LIBS) @KDRIVE_LIBS@
+Xvia_DEPENDENCIES = $(VIA_LIBS)
diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c
index b8253f607..a2d866118 100644
--- a/hw/vfb/InitOutput.c
+++ b/hw/vfb/InitOutput.c
@@ -364,6 +364,9 @@ ddxProcessArgument(int argc, char *argv[], int i)
if (strcmp (argv[i], "-render") == 0) /* -render */
{
Render = FALSE;
+#ifdef COMPOSITE
+ noCompositeExtension = TRUE;
+#endif
return 1;
}
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 4d933aa9d..87b8a0b72 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -761,7 +761,8 @@ typedef enum {
FLAG_RENDER_COLORMAP_MODE,
FLAG_HANDLE_SPECIAL_KEYS,
FLAG_RANDR,
- FLAG_AIGLX
+ FLAG_AIGLX,
+ FLAG_IGNORE_ABI
} FlagValues;
static OptionInfoRec FlagOptions[] = {
@@ -833,6 +834,8 @@ static OptionInfoRec FlagOptions[] = {
{0}, FALSE },
{ FLAG_AIGLX, "AIGLX", OPTV_BOOLEAN,
{0}, FALSE },
+ { FLAG_IGNORE_ABI, "IgnoreABI", OPTV_BOOLEAN,
+ {0}, FALSE },
{ -1, NULL, OPTV_NONE,
{0}, FALSE },
};
@@ -891,6 +894,10 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
&(xf86Info.grabInfo.allowDeactivate));
xf86GetOptValBool(FlagOptions, FLAG_ALLOW_CLOSEDOWN_GRABS,
&(xf86Info.grabInfo.allowClosedown));
+ xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
+ if (&xf86Info.ignoreABI) {
+ xf86Msg(X_CONFIG, "Ignoring ABI Version\n");
+ }
/*
* Set things up based on the config file information. Some of these
diff --git a/hw/xfree86/common/xf86Cursor.c b/hw/xfree86/common/xf86Cursor.c
index 14e0fcd91..61f0ce55e 100644
--- a/hw/xfree86/common/xf86Cursor.c
+++ b/hw/xfree86/common/xf86Cursor.c
@@ -576,24 +576,40 @@ xf86InitOrigins(void)
/* force edge lists */
if(screen->left) {
ref = screen->left->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
pLayout->left = AddEdge(pLayout->left,
0, xf86Screens[i]->pScreen->height,
xf86Screens[ref]->pScreen->width, 0, ref);
}
if(screen->right) {
ref = screen->right->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
pScreen = xf86Screens[i]->pScreen;
pLayout->right = AddEdge(pLayout->right,
0, pScreen->height, -pScreen->width, 0, ref);
}
if(screen->top) {
ref = screen->top->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
pLayout->up = AddEdge(pLayout->up,
0, xf86Screens[i]->pScreen->width,
0, xf86Screens[ref]->pScreen->height, ref);
}
if(screen->bottom) {
ref = screen->bottom->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
pScreen = xf86Screens[i]->pScreen;
pLayout->down = AddEdge(pLayout->down,
0, pScreen->width, 0, -pScreen->height, ref);
@@ -609,6 +625,10 @@ xf86InitOrigins(void)
break;
case PosRelative:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
dixScreenOrigins[i].x = dixScreenOrigins[ref].x + screen->x;
dixScreenOrigins[i].y = dixScreenOrigins[ref].y + screen->y;
@@ -616,6 +636,10 @@ xf86InitOrigins(void)
break;
case PosRightOf:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
pScreen = xf86Screens[ref]->pScreen;
dixScreenOrigins[i].x =
@@ -625,6 +649,10 @@ xf86InitOrigins(void)
break;
case PosLeftOf:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
pScreen = xf86Screens[i]->pScreen;
dixScreenOrigins[i].x =
@@ -634,6 +662,10 @@ xf86InitOrigins(void)
break;
case PosBelow:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
pScreen = xf86Screens[ref]->pScreen;
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
@@ -643,6 +675,10 @@ xf86InitOrigins(void)
break;
case PosAbove:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
pScreen = xf86Screens[i]->pScreen;
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
diff --git a/hw/xfree86/common/xf86DoScanPci.c b/hw/xfree86/common/xf86DoScanPci.c
index 746ff70e7..0c6668a49 100644
--- a/hw/xfree86/common/xf86DoScanPci.c
+++ b/hw/xfree86/common/xf86DoScanPci.c
@@ -100,10 +100,6 @@ void DoScanPci(int argc, char **argv, int i)
LoaderErrorMsg(NULL, "scanpci", errmaj, errmin);
exit(1);
}
- if (LoaderCheckUnresolved(LD_RESOLV_IFDONE)) {
- /* For now, just a warning */
- xf86Msg(X_WARNING, "Some symbols could not be resolved!\n");
- }
PciSetup = (ScanPciSetupProcPtr)LoaderSymbol("ScanPciSetupPciIds");
DisplayPCICardInfo =
(ScanPciDisplayCardInfoProcPtr)LoaderSymbol("ScanPciDisplayPCICardInfo");
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index d045c0676..8b4bf14c3 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -135,7 +135,8 @@ static int numFormats = 6;
#endif
static Bool formatsDone = FALSE;
-InputDriverRec XF86KEYBOARD = {
+#ifdef USE_DEPRECATED_KEYBOARD_DRIVER
+static InputDriverRec XF86KEYBOARD = {
1,
"keyboard",
NULL,
@@ -144,6 +145,7 @@ InputDriverRec XF86KEYBOARD = {
NULL,
0
};
+#endif
static Bool
xf86CreateRootWindow(WindowPtr pWin)
@@ -331,6 +333,10 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
/* Tell the loader the default module search path */
LoaderSetPath(xf86ModulePath);
+ if (xf86Info.ignoreABI) {
+ LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
+ }
+
#ifdef TESTING
{
char **list, **l;
@@ -967,11 +973,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
#endif
}
- if ((serverGeneration == 1) && LoaderCheckUnresolved(LD_RESOLV_IFDONE)) {
- /* For now, just a warning */
- xf86Msg(X_WARNING, "Some symbols could not be resolved!\n");
- }
-
xf86PostScreenInit();
xf86InitOrigins();
diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h
index a01b07fd7..67d4304c9 100644
--- a/hw/xfree86/common/xf86Privstr.h
+++ b/hw/xfree86/common/xf86Privstr.h
@@ -166,6 +166,7 @@ typedef struct {
MessageType randRFrom;
Bool aiglx;
MessageType aiglxFrom;
+ Bool ignoreABI;
struct {
Bool disabled; /* enable/disable deactivating
* grabs or closing the
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index 3340af0b5..e94804c3b 100644
--- a/hw/xfree86/doc/man/xorg.conf.man.pre
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -605,6 +605,10 @@ the builtin handler will be used.
.TP 7
.BI "Option \*qAIGLX\*q \*q" boolean \*q
enable or disable AIGLX. AIGLX is enabled by default.
+.TP 7
+.BI "Option \*qIgnoreABI\*q \*q" boolean \*q
+Allow modules built for a different, potentially incompatible version of
+the X server to load. Disabled by default.
.SH MODULE SECTION
The
.B Module
diff --git a/hw/xnest/Args.c b/hw/xnest/Args.c
index 0aa0ca478..5d0a0c02d 100644
--- a/hw/xnest/Args.c
+++ b/hw/xnest/Args.c
@@ -58,6 +58,13 @@ void ddxInitGlobals(void)
int
ddxProcessArgument (int argc, char *argv[], int i)
{
+
+#ifdef COMPOSITE
+ /* XXX terrible hack */
+ extern Bool noCompositeExtension;
+ noCompositeExtension = TRUE;
+#endif
+
if (!strcmp(argv[i], "-display")) {
if (++i < argc) {
xnestDisplayName = argv[i];
diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c
index e35974468..0df896dd3 100644
--- a/hw/xwin/winmultiwindowwndproc.c
+++ b/hw/xwin/winmultiwindowwndproc.c
@@ -304,7 +304,6 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
winScreenInfo *s_pScreenInfo = NULL;
HWND hwndScreen = NULL;
DrawablePtr pDraw = NULL;
- int iX, iY, iWidth, iHeight, iBorder;
winWMMessageRec wmMsg;
Bool fWMMsgInitialized = FALSE;
static Bool s_fTracking = FALSE;
@@ -442,20 +441,19 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
/* BeginPaint gives us an hdc that clips to the invalidated region */
hdcUpdate = BeginPaint (hwnd, &ps);
-
- /* Get the position and dimensions of the window */
- iBorder = wBorderWidth (pWin);
- iX = pWin->drawable.x;
- iY = pWin->drawable.y;
- iWidth = pWin->drawable.width;
- iHeight = pWin->drawable.height;
+ /* Avoid the BitBlt's if the PAINTSTRUCT is bogus */
+ if (ps.rcPaint.right==0 && ps.rcPaint.bottom==0 && ps.rcPaint.left==0 && ps.rcPaint.top==0)
+ {
+ EndPaint (hwndScreen, &ps);
+ return 0;
+ }
/* Try to copy from the shadow buffer */
if (!BitBlt (hdcUpdate,
- 0, 0,
- iWidth, iHeight,
+ ps.rcPaint.left, ps.rcPaint.top,
+ ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top,
s_pScreenPriv->hdcShadow,
- iX, iY,
+ ps.rcPaint.left + pWin->drawable.x, ps.rcPaint.top + pWin->drawable.y,
SRCCOPY))
{
LPVOID lpMsgBuf;
diff --git a/hw/xwin/winshadgdi.c b/hw/xwin/winshadgdi.c
index ba9819298..04cc2f716 100644
--- a/hw/xwin/winshadgdi.c
+++ b/hw/xwin/winshadgdi.c
@@ -540,8 +540,9 @@ winShadowUpdateGDI (ScreenPtr pScreen,
* handle large regions by creating a clipping region and
* doing a single blit constrained to that clipping region.
*/
- if (pScreenInfo->dwClipUpdatesNBoxes == 0
- || dwBox < pScreenInfo->dwClipUpdatesNBoxes)
+ if (!pScreenInfo->fMultiWindow &&
+ (pScreenInfo->dwClipUpdatesNBoxes == 0 ||
+ dwBox < pScreenInfo->dwClipUpdatesNBoxes))
{
/* Loop through all boxes in the damaged region */
while (dwBox--)
@@ -566,7 +567,7 @@ winShadowUpdateGDI (ScreenPtr pScreen,
++pBox;
}
}
- else
+ else if (!pScreenInfo->fMultiWindow)
{
/* Compute a GDI region from the damaged region */
hrgnCombined = CreateRectRgn (pBox->x1, pBox->y1, pBox->x2, pBox->y2);