aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw')
-rw-r--r--xorg-server/hw/dmx/dmxextension.c3
-rw-r--r--xorg-server/hw/dmx/dmxinit.c2
-rw-r--r--xorg-server/hw/kdrive/ephyr/hostx.c22
-rw-r--r--xorg-server/hw/xfree86/Makefile.am4
-rw-r--r--xorg-server/hw/xfree86/common/xf86Configure.c2
-rw-r--r--xorg-server/hw/xfree86/common/xf86DPMS.c9
-rw-r--r--xorg-server/hw/xfree86/common/xf86Events.c31
-rw-r--r--xorg-server/hw/xfree86/common/xf86RandR.c16
-rw-r--r--xorg-server/hw/xfree86/modes/xf86Crtc.c20
-rw-r--r--xorg-server/hw/xfree86/sdksyms.sh1
-rw-r--r--xorg-server/hw/xquartz/bundle/Info.plist.cpp4
11 files changed, 81 insertions, 33 deletions
diff --git a/xorg-server/hw/dmx/dmxextension.c b/xorg-server/hw/dmx/dmxextension.c
index d7296ae2d..c6c6a8e6d 100644
--- a/xorg-server/hw/dmx/dmxextension.c
+++ b/xorg-server/hw/dmx/dmxextension.c
@@ -68,6 +68,9 @@
* _any_ header files. */
extern FontPtr defaultFont;
+/* Hack to get Present to build (present requires RandR) */
+RESTYPE RRCrtcType;
+
/** This routine provides information to the DMX protocol extension
* about a particular screen. */
Bool
diff --git a/xorg-server/hw/dmx/dmxinit.c b/xorg-server/hw/dmx/dmxinit.c
index 65416ed26..bd868a092 100644
--- a/xorg-server/hw/dmx/dmxinit.c
+++ b/xorg-server/hw/dmx/dmxinit.c
@@ -109,6 +109,8 @@ Bool dmxGLXSyncSwap = FALSE;
Bool dmxGLXFinishSwap = FALSE;
#endif
+RESTYPE RRProviderType = 0;
+
Bool dmxIgnoreBadFontPaths = FALSE;
Bool dmxAddRemoveScreens = FALSE;
diff --git a/xorg-server/hw/kdrive/ephyr/hostx.c b/xorg-server/hw/kdrive/ephyr/hostx.c
index 5fa33b9db..ee9ae455c 100644
--- a/xorg-server/hw/kdrive/ephyr/hostx.c
+++ b/xorg-server/hw/kdrive/ephyr/hostx.c
@@ -695,9 +695,6 @@ hostx_screen_init(KdScreenInfo *screen,
malloc(scrpriv->ximg->stride * buffer_height);
}
- *bytes_per_line = scrpriv->ximg->stride;
- *bits_per_pixel = scrpriv->ximg->bpp;
-
if (scrpriv->win_pre_existing == None && !EphyrWantResize) {
/* Ask the WM to keep our size static */
xcb_size_hints_t size_hints = {0};
@@ -717,13 +714,21 @@ hostx_screen_init(KdScreenInfo *screen,
scrpriv->win_height = height;
if (host_depth_matches_server(scrpriv)) {
+ *bytes_per_line = scrpriv->ximg->stride;
+ *bits_per_pixel = scrpriv->ximg->bpp;
+
EPHYR_DBG("Host matches server");
return scrpriv->ximg->data;
}
else {
- EPHYR_DBG("server bpp %i", scrpriv->server_depth >> 3);
- scrpriv->fb_data =
- malloc(width * buffer_height * (scrpriv->server_depth >> 3));
+ int bytes_per_pixel = scrpriv->server_depth >> 3;
+ int stride = (width * bytes_per_pixel + 0x3) & ~0x3;
+
+ *bytes_per_line = stride;
+ *bits_per_pixel = scrpriv->server_depth;
+
+ EPHYR_DBG("server bpp %i", bytes_per_pixel);
+ scrpriv->fb_data = malloc (stride * buffer_height);
return scrpriv->fb_data;
}
}
@@ -762,15 +767,14 @@ hostx_paint_rect(KdScreenInfo *screen,
if (!host_depth_matches_server(scrpriv)) {
int x, y, idx, bytes_per_pixel = (scrpriv->server_depth >> 3);
+ int stride = (scrpriv->win_width * bytes_per_pixel + 0x3) & ~0x3;
unsigned char r, g, b;
unsigned long host_pixel;
EPHYR_DBG("Unmatched host depth scrpriv=%p\n", scrpriv);
for (y = sy; y < sy + height; y++)
for (x = sx; x < sx + width; x++) {
- idx =
- (scrpriv->win_width * y * bytes_per_pixel) +
- (x * bytes_per_pixel);
+ idx = y * stride + x * bytes_per_pixel;
switch (scrpriv->server_depth) {
case 16:
diff --git a/xorg-server/hw/xfree86/Makefile.am b/xorg-server/hw/xfree86/Makefile.am
index 59cfb5f6f..eea16a851 100644
--- a/xorg-server/hw/xfree86/Makefile.am
+++ b/xorg-server/hw/xfree86/Makefile.am
@@ -41,7 +41,7 @@ nodist_Xorg_SOURCES = sdksyms.c
AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
AM_CPPFLAGS = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
- -I$(srcdir)/dri -I$(srcdir)/dri2
+ -I$(srcdir)/dri -I$(srcdir)/dri2 -I$(top_srcdir)/dri3
LOCAL_LIBS = \
$(MAIN_LIB) \
@@ -59,6 +59,8 @@ LOCAL_LIBS = \
dixmods/libxorgxkb.la \
$(DRI_LIB) \
$(DRI2_LIB) \
+ $(top_builddir)/dri3/libdri3.la \
+ $(top_builddir)/miext/sync/libsync.la \
$(top_builddir)/mi/libmi.la \
$(top_builddir)/os/libos.la
Xorg_LDADD = \
diff --git a/xorg-server/hw/xfree86/common/xf86Configure.c b/xorg-server/hw/xfree86/common/xf86Configure.c
index 6c5e35919..91e8df93d 100644
--- a/xorg-server/hw/xfree86/common/xf86Configure.c
+++ b/xorg-server/hw/xfree86/common/xf86Configure.c
@@ -123,12 +123,14 @@ xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData,
switch (bus) {
#ifdef XSERVER_LIBPCIACCESS
case BUS_PCI:
+ DevToConfig[i].pVideo = busData;
xf86PciConfigureNewDev(busData, DevToConfig[i].pVideo,
&DevToConfig[i].GDev, &chipset);
break;
#endif
#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
case BUS_SBUS:
+ DevToConfig[i].sVideo = busData;
xf86SbusConfigureNewDev(busData, DevToConfig[i].sVideo,
&DevToConfig[i].GDev);
break;
diff --git a/xorg-server/hw/xfree86/common/xf86DPMS.c b/xorg-server/hw/xfree86/common/xf86DPMS.c
index 3f1e142c7..881cb2773 100644
--- a/xorg-server/hw/xfree86/common/xf86DPMS.c
+++ b/xorg-server/hw/xfree86/common/xf86DPMS.c
@@ -36,6 +36,7 @@
#include <X11/X.h>
#include "os.h"
#include "globals.h"
+#include "windowstr.h"
#include "xf86.h"
#include "xf86Priv.h"
#ifdef DPMSExtension
@@ -159,7 +160,13 @@ DPMSSet(ClientPtr client, int level)
return Success;
if (level != DPMSModeOn) {
- rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverActive);
+ if (xf86IsUnblank(screenIsSaved)) {
+ rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverActive);
+ if (rc != Success)
+ return rc;
+ }
+ } else if (!xf86IsUnblank(screenIsSaved)) {
+ rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverReset);
if (rc != Success)
return rc;
}
diff --git a/xorg-server/hw/xfree86/common/xf86Events.c b/xorg-server/hw/xfree86/common/xf86Events.c
index 7a949fd74..d0b14314b 100644
--- a/xorg-server/hw/xfree86/common/xf86Events.c
+++ b/xorg-server/hw/xfree86/common/xf86Events.c
@@ -116,6 +116,7 @@ typedef struct x_IHRec {
InputHandlerProc ihproc;
pointer data;
Bool enabled;
+ Bool is_input;
struct x_IHRec *next;
} IHRec, *IHPtr;
@@ -446,8 +447,12 @@ xf86VTSwitch(void)
* Keep the order: Disable Device > LeaveVT
* EnterVT > EnableDevice
*/
- for (ih = InputHandlers; ih; ih = ih->next)
- xf86DisableInputHandler(ih);
+ for (ih = InputHandlers; ih; ih = ih->next) {
+ if (ih->is_input)
+ xf86DisableInputHandler(ih);
+ else
+ xf86DisableGeneralHandler(ih);
+ }
for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) {
if (pInfo->dev) {
if (!pInfo->dev->enabled)
@@ -496,9 +501,12 @@ xf86VTSwitch(void)
pInfo->flags &= ~XI86_DEVICE_DISABLED;
pInfo = pInfo->next;
}
- for (ih = InputHandlers; ih; ih = ih->next)
- xf86EnableInputHandler(ih);
-
+ for (ih = InputHandlers; ih; ih = ih->next) {
+ if (ih->is_input)
+ xf86EnableInputHandler(ih);
+ else
+ xf86EnableGeneralHandler(ih);
+ }
OsReleaseSIGIO();
}
@@ -558,9 +566,12 @@ xf86VTSwitch(void)
pInfo = pInfo->next;
}
- for (ih = InputHandlers; ih; ih = ih->next)
- xf86EnableInputHandler(ih);
-
+ for (ih = InputHandlers; ih; ih = ih->next) {
+ if (ih->is_input)
+ xf86EnableInputHandler(ih);
+ else
+ xf86EnableGeneralHandler(ih);
+ }
#ifdef XSERVER_PLATFORM_BUS
/* check for any new output devices */
xf86platformVTProbe();
@@ -600,8 +611,10 @@ xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data)
{
IHPtr ih = addInputHandler(fd, proc, data);
- if (ih)
+ if (ih) {
AddEnabledDevice(fd);
+ ih->is_input = TRUE;
+ }
return ih;
}
diff --git a/xorg-server/hw/xfree86/common/xf86RandR.c b/xorg-server/hw/xfree86/common/xf86RandR.c
index 5606bee4b..2418731dc 100644
--- a/xorg-server/hw/xfree86/common/xf86RandR.c
+++ b/xorg-server/hw/xfree86/common/xf86RandR.c
@@ -214,13 +214,15 @@ xf86RandRSetMode(ScreenPtr pScreen,
*/
xf86ReconfigureLayout();
- /*
- * Make sure the whole screen is visible
- */
- xf86SetViewport(pScreen, pScreen->width, pScreen->height);
- xf86SetViewport(pScreen, 0, 0);
- if (pRoot && scrp->vtSema)
- (*scrp->EnableDisableFBAccess) (scrp, TRUE);
+ if (scrp->vtSema) {
+ /*
+ * Make sure the whole screen is visible
+ */
+ xf86SetViewport (pScreen, pScreen->width, pScreen->height);
+ xf86SetViewport (pScreen, 0, 0);
+ if (pRoot)
+ (*scrp->EnableDisableFBAccess) (scrp, TRUE);
+ }
return ret;
}
diff --git a/xorg-server/hw/xfree86/modes/xf86Crtc.c b/xorg-server/hw/xfree86/modes/xf86Crtc.c
index 35845e875..2a02c8507 100644
--- a/xorg-server/hw/xfree86/modes/xf86Crtc.c
+++ b/xorg-server/hw/xfree86/modes/xf86Crtc.c
@@ -3045,10 +3045,22 @@ handle_detailed_physical_size(struct detailed_monitor_section
if (det_mon->type == DT &&
det_mon->section.d_timings.h_size != 0 &&
det_mon->section.d_timings.v_size != 0) {
-
- p->output->mm_width = det_mon->section.d_timings.h_size;
- p->output->mm_height = det_mon->section.d_timings.v_size;
- p->ret = TRUE;
+ /* some sanity checking for aspect ratio:
+ assume any h / v (or v / h) > 2.4 to be bogus.
+ This would even include cinemascope */
+ if (((det_mon->section.d_timings.h_size * 5) <
+ (det_mon->section.d_timings.v_size * 12)) &&
+ ((det_mon->section.d_timings.v_size * 5) <
+ (det_mon->section.d_timings.h_size * 12))) {
+ p->output->mm_width = det_mon->section.d_timings.h_size;
+ p->output->mm_height = det_mon->section.d_timings.v_size;
+ p->ret = TRUE;
+ } else
+ xf86DrvMsg(p->output->scrn->scrnIndex, X_WARNING,
+ "Output %s: Strange aspect ratio (%i/%i), "
+ "consider adding a quirk\n", p->output->name,
+ det_mon->section.d_timings.h_size,
+ det_mon->section.d_timings.v_size);
}
}
diff --git a/xorg-server/hw/xfree86/sdksyms.sh b/xorg-server/hw/xfree86/sdksyms.sh
index 48b48b5db..7c9734c07 100644
--- a/xorg-server/hw/xfree86/sdksyms.sh
+++ b/xorg-server/hw/xfree86/sdksyms.sh
@@ -99,6 +99,7 @@ cat > sdksyms.c << EOF
# include "dri2.h"
#endif
+# include "dri3.h"
/* hw/xfree86/vgahw/Makefile.am -- module */
/*
diff --git a/xorg-server/hw/xquartz/bundle/Info.plist.cpp b/xorg-server/hw/xquartz/bundle/Info.plist.cpp
index b0106c6da..b99e417aa 100644
--- a/xorg-server/hw/xquartz/bundle/Info.plist.cpp
+++ b/xorg-server/hw/xquartz/bundle/Info.plist.cpp
@@ -19,9 +19,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>2.7.4</string>
+ <string>2.7.6</string>
<key>CFBundleVersion</key>
- <string>2.7.4</string>
+ <string>2.7.6</string>
<key>CFBundleSignature</key>
<string>x11a</string>
<key>CSResourcesFileMapped</key>