Lines Matching refs:dmxScreen

187 Bool dmxOpenDisplay(DMXScreenInfo *dmxScreen)
189 if (!(dmxScreen->beDisplay = XOpenDisplay(dmxScreen->name)))
192 dmxPropertyDisplay(dmxScreen);
196 void dmxSetErrorHandler(DMXScreenInfo *dmxScreen)
201 static void dmxPrintScreenInfo(DMXScreenInfo *dmxScreen)
206 Display *dpy = dmxScreen->beDisplay;
213 dmxLogOutput(dmxScreen, "Name of display: %s\n", DisplayString(dpy));
214 dmxLogOutput(dmxScreen, "Version number: %d.%d\n",
216 dmxLogOutput(dmxScreen, "Vendor string: %s\n", ServerVendor(dpy));
218 dmxLogOutput(dmxScreen, "Vendor release: %d\n", VendorRelease(dpy));
243 dmxLogOutput(dmxScreen, "Vendor release: %d (XFree86 version: %d.%d",
245 if (patch > 0) dmxLogOutputCont(dmxScreen, ".%d", patch);
246 if (subpatch > 0) dmxLogOutputCont(dmxScreen, ".%d", subpatch);
247 dmxLogOutputCont(dmxScreen, ")\n");
251 dmxLogOutput(dmxScreen, "Dimensions: %dx%d pixels\n",
253 dmxLogOutput(dmxScreen, "%d depths on screen %d: ", ndepths, scr);
255 dmxLogOutputCont(dmxScreen, "%c%d", i ? ',' : ' ', depths[i]);
256 dmxLogOutputCont(dmxScreen, "\n");
257 dmxLogOutput(dmxScreen, "Depth of root window: %d plane%s (%d)\n",
260 dmxLogOutput(dmxScreen, "Number of colormaps: %d min, %d max\n",
262 dmxLogOutput(dmxScreen, "Options: backing-store %s, save-unders %s\n",
266 dmxLogOutput(dmxScreen, "Window Manager running: %s\n",
267 (dmxScreen->WMRunningOnBE) ? "yes" : "no");
269 if (dmxScreen->WMRunningOnBE) {
270 dmxLogOutputWarning(dmxScreen,
277 void dmxGetScreenAttribs(DMXScreenInfo *dmxScreen)
280 Display *dpy = dmxScreen->beDisplay;
287 dmxScreen->beWidth = attribs.width;
288 dmxScreen->beHeight = attribs.height;
291 if (dmxScreen->scrnXSign < 0) {
292 if (dmxScreen->scrnWidth) {
293 dmxScreen->scrnX = (attribs.width - dmxScreen->scrnWidth
294 - dmxScreen->scrnX);
296 dmxScreen->scrnWidth = attribs.width - dmxScreen->scrnX;
297 dmxScreen->scrnX = 0;
300 if (dmxScreen->scrnYSign < 0) {
301 if (dmxScreen->scrnHeight) {
302 dmxScreen->scrnY = (attribs.height - dmxScreen->scrnHeight
303 - dmxScreen->scrnY);
305 dmxScreen->scrnHeight = attribs.height - dmxScreen->scrnY;
306 dmxScreen->scrnY = 0;
309 if (!dmxScreen->scrnWidth)
310 dmxScreen->scrnWidth = attribs.width - dmxScreen->scrnX;
311 if (!dmxScreen->scrnHeight)
312 dmxScreen->scrnHeight = attribs.height - dmxScreen->scrnY;
314 if (!dmxScreen->rootWidth) dmxScreen->rootWidth = dmxScreen->scrnWidth;
315 if (!dmxScreen->rootHeight) dmxScreen->rootHeight = dmxScreen->scrnHeight;
316 if (dmxScreen->rootWidth + dmxScreen->rootX > dmxScreen->scrnWidth)
317 dmxScreen->rootWidth = dmxScreen->scrnWidth - dmxScreen->rootX;
318 if (dmxScreen->rootHeight + dmxScreen->rootY > dmxScreen->scrnHeight)
319 dmxScreen->rootHeight = dmxScreen->scrnHeight - dmxScreen->rootY;
322 dmxScreen->beXDPI = 75;
323 dmxScreen->beYDPI = 75;
325 dmxScreen->beDepth = attribs.depth; /* FIXME: verify that this
333 if (dmxScreen->beDepth <= 8) dmxScreen->beBPP = 8;
334 else if (dmxScreen->beDepth <= 16) dmxScreen->beBPP = 16;
335 else dmxScreen->beBPP = 32;
339 XQueryExtension(dpy, "GLX", &dmxScreen->glxMajorOpcode,
340 &dummy, &dmxScreen->glxErrorBase);
343 dmxPrintScreenInfo(dmxScreen);
344 dmxLogOutput(dmxScreen, "%dx%d+%d+%d on %dx%d at depth=%d, bpp=%d\n",
345 dmxScreen->scrnWidth, dmxScreen->scrnHeight,
346 dmxScreen->scrnX, dmxScreen->scrnY,
347 dmxScreen->beWidth, dmxScreen->beHeight,
348 dmxScreen->beDepth, dmxScreen->beBPP);
349 if (dmxScreen->beDepth == 8)
350 dmxLogOutputWarning(dmxScreen,
354 Bool dmxGetVisualInfo(DMXScreenInfo *dmxScreen)
359 visinfo.screen = DefaultScreen(dmxScreen->beDisplay);
360 dmxScreen->beVisuals = XGetVisualInfo(dmxScreen->beDisplay,
363 &dmxScreen->beNumVisuals);
365 dmxScreen->beDefVisualIndex = -1;
368 for (i = 0; i < dmxScreen->beNumVisuals; i++)
370 if (dmxScreen->beVisuals[i].class == defaultColorVisualClass) {
372 if (dmxScreen->beVisuals[i].depth == dmxDepth) {
373 dmxScreen->beDefVisualIndex = i;
377 dmxScreen->beDefVisualIndex = i;
381 } else if (dmxScreen->beVisuals[i].depth == dmxDepth) {
382 dmxScreen->beDefVisualIndex = i;
387 XVisualIDFromVisual(DefaultVisual(dmxScreen->beDisplay,
390 for (i = 0; i < dmxScreen->beNumVisuals; i++)
391 if (visinfo.visualid == dmxScreen->beVisuals[i].visualid) {
392 dmxScreen->beDefVisualIndex = i;
397 for (i = 0; i < dmxScreen->beNumVisuals; i++)
398 dmxLogVisual(dmxScreen, &dmxScreen->beVisuals[i],
399 (i == dmxScreen->beDefVisualIndex));
401 return dmxScreen->beDefVisualIndex >= 0;
404 void dmxGetColormaps(DMXScreenInfo *dmxScreen)
408 dmxScreen->beNumDefColormaps = dmxScreen->beNumVisuals;
409 dmxScreen->beDefColormaps = malloc(dmxScreen->beNumDefColormaps *
410 sizeof(*dmxScreen->beDefColormaps));
412 for (i = 0; i < dmxScreen->beNumDefColormaps; i++)
413 dmxScreen->beDefColormaps[i] =
414 XCreateColormap(dmxScreen->beDisplay,
415 DefaultRootWindow(dmxScreen->beDisplay),
416 dmxScreen->beVisuals[i].visual,
419 dmxScreen->beBlackPixel = BlackPixel(dmxScreen->beDisplay,
420 DefaultScreen(dmxScreen->beDisplay));
421 dmxScreen->beWhitePixel = WhitePixel(dmxScreen->beDisplay,
422 DefaultScreen(dmxScreen->beDisplay));
425 void dmxGetPixmapFormats(DMXScreenInfo *dmxScreen)
427 dmxScreen->beDepths =
428 XListDepths(dmxScreen->beDisplay, DefaultScreen(dmxScreen->beDisplay),
429 &dmxScreen->beNumDepths);
431 dmxScreen->bePixmapFormats =
432 XListPixmapFormats(dmxScreen->beDisplay,
433 &dmxScreen->beNumPixmapFormats);
437 DMXScreenInfo *dmxScreen)
443 pScreenInfo->imageByteOrder = ImageByteOrder(dmxScreen->beDisplay);
444 pScreenInfo->bitmapScanlineUnit = BitmapUnit(dmxScreen->beDisplay);
445 pScreenInfo->bitmapScanlinePad = BitmapPad(dmxScreen->beDisplay);
446 pScreenInfo->bitmapBitOrder = BitmapBitOrder(dmxScreen->beDisplay);
449 for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
450 bePixmapFormat = &dmxScreen->bePixmapFormats[i];
451 for (j = 0; j < dmxScreen->beNumDepths; j++)
453 (bePixmapFormat->depth == dmxScreen->beDepths[j])) {
468 void dmxCheckForWM(DMXScreenInfo *dmxScreen)
473 status = XGetWindowAttributes(dmxScreen->beDisplay,
474 DefaultRootWindow(dmxScreen->beDisplay),
476 dmxScreen->WMRunningOnBE =
484 static void dmxDisplayInit(DMXScreenInfo *dmxScreen)
486 if (!dmxOpenDisplay(dmxScreen))
489 dmxScreen->name);
491 dmxSetErrorHandler(dmxScreen);
492 dmxCheckForWM(dmxScreen);
493 dmxGetScreenAttribs(dmxScreen);
495 if (!dmxGetVisualInfo(dmxScreen))
498 dmxGetColormaps(dmxScreen);
499 dmxGetPixmapFormats(dmxScreen);
699 DMXScreenInfo *dmxScreen = &dmxScreens[i];
710 dmxScreen->fbconfigs = GetGLXFBConfigs(dmxScreen->beDisplay,
711 dmxScreen->glxMajorOpcode,
712 &dmxScreen->numFBConfigs);
716 dmxScreen->glxVisuals =
717 GetGLXVisualConfigs(dmxScreen->beDisplay,
718 DefaultScreen(dmxScreen->beDisplay),
719 &dmxScreen->numGlxVisuals);
721 if (dmxScreen->fbconfigs) {
723 GetGLXVisualConfigsFromFBConfigs(dmxScreen->fbconfigs,
724 dmxScreen->numFBConfigs,
725 dmxScreen->beVisuals,
726 dmxScreen->beNumVisuals,
727 dmxScreen->glxVisuals,
728 dmxScreen->numGlxVisuals,
731 configs = dmxScreen->glxVisuals;
732 nconfigs = dmxScreen->numGlxVisuals;
752 for (j = 0; j < dmxScreen->beNumVisuals; j++) {
753 if (dmxScreen->beVisuals[j].visualid ==
756 dmxScreen->beVisuals[j].depth;
758 dmxScreen->beVisuals[j].class;
765 XFlush(dmxScreen->beDisplay);
829 DMXScreenInfo *dmxScreen = &dmxScreens[i];
831 if (dmxScreen->beDisplay) XCloseDisplay(dmxScreen->beDisplay);
832 dmxScreen->beDisplay = NULL;