- Disable building DMX on OSs that have not been verified to build
correctly (Kevin Martin). - Fix DMX build when Xinerama is not enabled (Kevin Martin).
This commit is contained in:
parent
0e45f2a753
commit
1498d7a096
|
@ -432,10 +432,12 @@ static int ProcDMXChangeScreensAttributes(ClientPtr client)
|
||||||
value_list += count;
|
value_list += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if PANORAMIX
|
||||||
status = dmxConfigureScreenWindows(stuff->screenCount,
|
status = dmxConfigureScreenWindows(stuff->screenCount,
|
||||||
screen_list,
|
screen_list,
|
||||||
attribs,
|
attribs,
|
||||||
&errorScreen);
|
&errorScreen);
|
||||||
|
#endif
|
||||||
|
|
||||||
DEALLOCATE_LOCAL(attribs);
|
DEALLOCATE_LOCAL(attribs);
|
||||||
|
|
||||||
|
@ -733,7 +735,9 @@ static int ProcDMXChangeDesktopAttributes(ClientPtr client)
|
||||||
dmxGetDesktopAttributes(&attr);
|
dmxGetDesktopAttributes(&attr);
|
||||||
dmxFetchDesktopAttributes(stuff->valueMask, &attr, value_list);
|
dmxFetchDesktopAttributes(stuff->valueMask, &attr, value_list);
|
||||||
|
|
||||||
|
#if PANORAMIX
|
||||||
status = dmxConfigureDesktop(&attr);
|
status = dmxConfigureDesktop(&attr);
|
||||||
|
#endif
|
||||||
if (status == BadValue) return status;
|
if (status == BadValue) return status;
|
||||||
|
|
||||||
noxinerama:
|
noxinerama:
|
||||||
|
|
|
@ -42,9 +42,12 @@
|
||||||
|
|
||||||
extern char *ConnectionInfo;
|
extern char *ConnectionInfo;
|
||||||
extern int connBlockScreenStart;
|
extern int connBlockScreenStart;
|
||||||
|
|
||||||
|
#ifdef PANORAMIX
|
||||||
extern int PanoramiXPixWidth;
|
extern int PanoramiXPixWidth;
|
||||||
extern int PanoramiXPixHeight;
|
extern int PanoramiXPixHeight;
|
||||||
extern int PanoramiXNumScreens;
|
extern int PanoramiXNumScreens;
|
||||||
|
#endif
|
||||||
|
|
||||||
int dmxGlobalWidth, dmxGlobalHeight;
|
int dmxGlobalWidth, dmxGlobalHeight;
|
||||||
|
|
||||||
|
@ -115,6 +118,7 @@ void dmxConnectionBlockCallback(void)
|
||||||
dmxLog(dmxFatal, "dmxConnectionBlockCallback: out of memory\n");
|
dmxLog(dmxFatal, "dmxConnectionBlockCallback: out of memory\n");
|
||||||
|
|
||||||
dmxLog(dmxInfo, "===== Start of Summary =====\n");
|
dmxLog(dmxInfo, "===== Start of Summary =====\n");
|
||||||
|
#ifdef PANORAMIX
|
||||||
if (!noPanoramiXExtension) {
|
if (!noPanoramiXExtension) {
|
||||||
if (dmxGlobalWidth && dmxGlobalHeight
|
if (dmxGlobalWidth && dmxGlobalHeight
|
||||||
&& (dmxGlobalWidth != PanoramiXPixWidth
|
&& (dmxGlobalWidth != PanoramiXPixWidth
|
||||||
|
@ -133,6 +137,7 @@ void dmxConnectionBlockCallback(void)
|
||||||
PanoramiXNumScreens, PanoramiXPixWidth, PanoramiXPixHeight);
|
PanoramiXNumScreens, PanoramiXPixWidth, PanoramiXPixHeight);
|
||||||
for (i = 0; i < PanoramiXNumScreens; i++) found[i] = FALSE;
|
for (i = 0; i < PanoramiXNumScreens; i++) found[i] = FALSE;
|
||||||
} else {
|
} else {
|
||||||
|
#endif
|
||||||
/* This never happens because we're
|
/* This never happens because we're
|
||||||
* either called from a Xinerama
|
* either called from a Xinerama
|
||||||
* callback or during reconfiguration
|
* callback or during reconfiguration
|
||||||
|
@ -140,7 +145,9 @@ void dmxConnectionBlockCallback(void)
|
||||||
* In any case, be reasonable. */
|
* In any case, be reasonable. */
|
||||||
dmxLog(dmxInfo, "%d screens configured (%d %d)\n",
|
dmxLog(dmxInfo, "%d screens configured (%d %d)\n",
|
||||||
screenInfo.numScreens, root->pixWidth, root->pixHeight);
|
screenInfo.numScreens, root->pixWidth, root->pixHeight);
|
||||||
|
#ifdef PANORAMIX
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < root->nDepths; i++) {
|
for (i = 0; i < root->nDepths; i++) {
|
||||||
xDepth *depth = (xDepth *)(ConnectionInfo + offset);
|
xDepth *depth = (xDepth *)(ConnectionInfo + offset);
|
||||||
|
@ -165,6 +172,7 @@ void dmxConnectionBlockCallback(void)
|
||||||
vi.bits_per_rgb = visual->bitsPerRGB;
|
vi.bits_per_rgb = visual->bitsPerRGB;
|
||||||
dmxLogVisual(NULL, &vi, 0);
|
dmxLogVisual(NULL, &vi, 0);
|
||||||
|
|
||||||
|
#ifdef PANORAMIX
|
||||||
if (!noPanoramiXExtension) {
|
if (!noPanoramiXExtension) {
|
||||||
int k;
|
int k;
|
||||||
for (k = 0; k < PanoramiXNumScreens; k++) {
|
for (k = 0; k < PanoramiXNumScreens; k++) {
|
||||||
|
@ -182,6 +190,7 @@ void dmxConnectionBlockCallback(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
offset = voffset + depth->nVisuals * sizeof(xVisualType);
|
offset = voffset + depth->nVisuals * sizeof(xVisualType);
|
||||||
}
|
}
|
||||||
|
@ -189,6 +198,7 @@ void dmxConnectionBlockCallback(void)
|
||||||
dmxInputLogDevices();
|
dmxInputLogDevices();
|
||||||
dmxLog(dmxInfo, "===== End of Summary =====\n");
|
dmxLog(dmxInfo, "===== End of Summary =====\n");
|
||||||
|
|
||||||
|
#ifdef PANORAMIX
|
||||||
if (!noPanoramiXExtension) {
|
if (!noPanoramiXExtension) {
|
||||||
Bool fatal = FALSE;
|
Bool fatal = FALSE;
|
||||||
for (i = 0; i < PanoramiXNumScreens; i++) {
|
for (i = 0; i < PanoramiXNumScreens; i++) {
|
||||||
|
@ -205,5 +215,6 @@ void dmxConnectionBlockCallback(void)
|
||||||
dmxLog(dmxFatal,
|
dmxLog(dmxFatal,
|
||||||
"dmxConnectionBlockCallback: invalid screen(s) found");
|
"dmxConnectionBlockCallback: invalid screen(s) found");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
MAXSCREENSFREE(found);
|
MAXSCREENSFREE(found);
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,35 +289,6 @@ void dmxFlushPendingSyncs(void)
|
||||||
dmxSync(NULL, TRUE);
|
dmxSync(NULL, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
|
||||||
#include "panoramiXsrv.h"
|
|
||||||
|
|
||||||
/* Defined in dix/events.c */
|
|
||||||
extern void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff);
|
|
||||||
|
|
||||||
/** Change the "screen" window attributes by resizing the actual window
|
|
||||||
* on the back-end display (if necessary). */
|
|
||||||
static void dmxConfigureScreenWindow(int idx,
|
|
||||||
int x, int y, int w, int h)
|
|
||||||
{
|
|
||||||
DMXScreenInfo *dmxScreen = &dmxScreens[idx];
|
|
||||||
ScreenPtr pScreen = screenInfo.screens[idx];
|
|
||||||
|
|
||||||
/* Resize "screen" window */
|
|
||||||
if (dmxScreen->scrnX != x ||
|
|
||||||
dmxScreen->scrnY != y ||
|
|
||||||
dmxScreen->scrnWidth != w ||
|
|
||||||
dmxScreen->scrnHeight != h) {
|
|
||||||
dmxResizeScreenWindow(pScreen, x, y, w, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Change "screen" window values */
|
|
||||||
dmxScreen->scrnX = x;
|
|
||||||
dmxScreen->scrnY = y;
|
|
||||||
dmxScreen->scrnWidth = w;
|
|
||||||
dmxScreen->scrnHeight = h;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Update DMX's screen resources to match those of the newly moved
|
/** Update DMX's screen resources to match those of the newly moved
|
||||||
* and/or resized "root" window. */
|
* and/or resized "root" window. */
|
||||||
void dmxUpdateScreenResources(ScreenPtr pScreen, int x, int y, int w, int h)
|
void dmxUpdateScreenResources(ScreenPtr pScreen, int x, int y, int w, int h)
|
||||||
|
@ -396,6 +367,35 @@ void dmxUpdateScreenResources(ScreenPtr pScreen, int x, int y, int w, int h)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef PANORAMIX
|
||||||
|
#include "panoramiXsrv.h"
|
||||||
|
|
||||||
|
/* Defined in dix/events.c */
|
||||||
|
extern void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff);
|
||||||
|
|
||||||
|
/** Change the "screen" window attributes by resizing the actual window
|
||||||
|
* on the back-end display (if necessary). */
|
||||||
|
static void dmxConfigureScreenWindow(int idx,
|
||||||
|
int x, int y, int w, int h)
|
||||||
|
{
|
||||||
|
DMXScreenInfo *dmxScreen = &dmxScreens[idx];
|
||||||
|
ScreenPtr pScreen = screenInfo.screens[idx];
|
||||||
|
|
||||||
|
/* Resize "screen" window */
|
||||||
|
if (dmxScreen->scrnX != x ||
|
||||||
|
dmxScreen->scrnY != y ||
|
||||||
|
dmxScreen->scrnWidth != w ||
|
||||||
|
dmxScreen->scrnHeight != h) {
|
||||||
|
dmxResizeScreenWindow(pScreen, x, y, w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Change "screen" window values */
|
||||||
|
dmxScreen->scrnX = x;
|
||||||
|
dmxScreen->scrnY = y;
|
||||||
|
dmxScreen->scrnWidth = w;
|
||||||
|
dmxScreen->scrnHeight = h;
|
||||||
|
}
|
||||||
|
|
||||||
/** Change the "root" window position and size by resizing the actual
|
/** Change the "root" window position and size by resizing the actual
|
||||||
* window on the back-end display (if necessary) and updating all of
|
* window on the back-end display (if necessary) and updating all of
|
||||||
* DMX's resources by calling #dmxUpdateScreenResources. */
|
* DMX's resources by calling #dmxUpdateScreenResources. */
|
||||||
|
|
|
@ -668,11 +668,13 @@ void InitOutput(ScreenInfo *pScreenInfo, int argc, char *argv[])
|
||||||
for (i = 0; i < dmxNumScreens; i++)
|
for (i = 0; i < dmxNumScreens; i++)
|
||||||
dmxDisplayInit(&dmxScreens[i]);
|
dmxDisplayInit(&dmxScreens[i]);
|
||||||
|
|
||||||
|
#if PANORAMIX
|
||||||
/* Register a Xinerama callback which will run from within
|
/* Register a Xinerama callback which will run from within
|
||||||
* PanoramiXCreateConnectionBlock. We can use the callback to
|
* PanoramiXCreateConnectionBlock. We can use the callback to
|
||||||
* determine if Xinerama is loaded and to check the visuals
|
* determine if Xinerama is loaded and to check the visuals
|
||||||
* determined by PanoramiXConsolidate. */
|
* determined by PanoramiXConsolidate. */
|
||||||
XineramaRegisterConnectionBlockCallback(dmxConnectionBlockCallback);
|
XineramaRegisterConnectionBlockCallback(dmxConnectionBlockCallback);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Since we only have a single screen thus far, we only need to set
|
/* Since we only have a single screen thus far, we only need to set
|
||||||
the pixmap formats to match that screen. FIXME: this isn't true.*/
|
the pixmap formats to match that screen. FIXME: this isn't true.*/
|
||||||
|
|
|
@ -1133,11 +1133,13 @@ static int MakeCurrent(__GLXclientState *cl,
|
||||||
else if (pGlxPbuffer) {
|
else if (pGlxPbuffer) {
|
||||||
be_draw = pGlxPbuffer->be_xids[s];
|
be_draw = pGlxPbuffer->be_xids[s];
|
||||||
}
|
}
|
||||||
|
#ifdef PANORAMIX
|
||||||
else if (pXinDraw) {
|
else if (pXinDraw) {
|
||||||
pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[s].id,
|
pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[s].id,
|
||||||
client,
|
client,
|
||||||
SecurityReadAccess);
|
SecurityReadAccess);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
else if (pGlxWindow) {
|
else if (pGlxWindow) {
|
||||||
pWin = (WindowPtr)pGlxWindow->pDraw;
|
pWin = (WindowPtr)pGlxWindow->pDraw;
|
||||||
}
|
}
|
||||||
|
@ -1189,11 +1191,13 @@ static int MakeCurrent(__GLXclientState *cl,
|
||||||
else if (pGlxReadPbuffer) {
|
else if (pGlxReadPbuffer) {
|
||||||
be_read_draw = pGlxReadPbuffer->be_xids[s];
|
be_read_draw = pGlxReadPbuffer->be_xids[s];
|
||||||
}
|
}
|
||||||
|
#ifdef PANORAMIX
|
||||||
else if (pXinReadDraw) {
|
else if (pXinReadDraw) {
|
||||||
pReadWin = (WindowPtr)SecurityLookupWindow(pXinReadDraw->info[s].id,
|
pReadWin = (WindowPtr)SecurityLookupWindow(pXinReadDraw->info[s].id,
|
||||||
client,
|
client,
|
||||||
SecurityReadAccess);
|
SecurityReadAccess);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
else if (pGlxReadWindow) {
|
else if (pGlxReadWindow) {
|
||||||
pReadWin = (WindowPtr)pGlxReadWindow->pDraw;
|
pReadWin = (WindowPtr)pGlxReadWindow->pDraw;
|
||||||
}
|
}
|
||||||
|
@ -1773,9 +1777,11 @@ static int CreateGLXPixmap(__GLXclientState *cl,
|
||||||
Pixmap be_pixmap;
|
Pixmap be_pixmap;
|
||||||
DrawablePtr pRealDraw = pDraw;
|
DrawablePtr pRealDraw = pDraw;
|
||||||
|
|
||||||
|
#ifdef PANORAMIX
|
||||||
if (pXinDraw) {
|
if (pXinDraw) {
|
||||||
pRealDraw = (DrawablePtr) LookupDrawable(pXinDraw->info[s].id,client);
|
pRealDraw = (DrawablePtr) LookupDrawable(pXinDraw->info[s].id,client);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
be_pixmap = (DMX_GET_PIXMAP_PRIV((PixmapPtr)pRealDraw))->pixmap;
|
be_pixmap = (DMX_GET_PIXMAP_PRIV((PixmapPtr)pRealDraw))->pixmap;
|
||||||
|
|
||||||
|
@ -1933,7 +1939,9 @@ int __glXDoSwapBuffers(__GLXclientState *cl, XID drawId, GLXContextTag tag)
|
||||||
WindowPtr pWin = NULL;
|
WindowPtr pWin = NULL;
|
||||||
__GLXpixmap *pGlxPixmap = NULL;
|
__GLXpixmap *pGlxPixmap = NULL;
|
||||||
__GLXcontext *glxc = NULL;
|
__GLXcontext *glxc = NULL;
|
||||||
|
#ifdef PANORAMIX
|
||||||
PanoramiXRes *pXinDraw = NULL;
|
PanoramiXRes *pXinDraw = NULL;
|
||||||
|
#endif
|
||||||
__glXWindow *pGlxWindow = NULL;
|
__glXWindow *pGlxWindow = NULL;
|
||||||
int from_screen = 0;
|
int from_screen = 0;
|
||||||
int to_screen = 0;
|
int to_screen = 0;
|
||||||
|
@ -2046,11 +2054,13 @@ int __glXDoSwapBuffers(__GLXclientState *cl, XID drawId, GLXContextTag tag)
|
||||||
if (pGlxPixmap) {
|
if (pGlxPixmap) {
|
||||||
be_draw = (unsigned int)pGlxPixmap->be_xids[s];
|
be_draw = (unsigned int)pGlxPixmap->be_xids[s];
|
||||||
}
|
}
|
||||||
|
#ifdef PANORAMIX
|
||||||
else if (pXinDraw) {
|
else if (pXinDraw) {
|
||||||
pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[s].id,
|
pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[s].id,
|
||||||
client,
|
client,
|
||||||
SecurityReadAccess);
|
SecurityReadAccess);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
else if (pGlxWindow) {
|
else if (pGlxWindow) {
|
||||||
pWin = (WindowPtr)pGlxWindow->pDraw;
|
pWin = (WindowPtr)pGlxWindow->pDraw;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue