summaryrefslogtreecommitdiff
path: root/Xprint/ps/PsInit.c
diff options
context:
space:
mode:
authorRoland Mainz <roland.mainz@nrubsig.org>2004-04-26 11:07:03 +0000
committerRoland Mainz <roland.mainz@nrubsig.org>2004-04-26 11:07:03 +0000
commit85e4e5445218d70f627fb132a8e8f18470e6749d (patch)
tree9272fb247022f617ea2d8085761ee3503da79340 /Xprint/ps/PsInit.c
parent46472cbee679f9757c4003a0dcf158aeb3852f47 (diff)
Work-in-progress for
http://pdx.freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=542 - GLX support for PS DDX / part #1: Fix visual setup (attachment #243)
Diffstat (limited to 'Xprint/ps/PsInit.c')
-rw-r--r--Xprint/ps/PsInit.c45
1 files changed, 30 insertions, 15 deletions
diff --git a/Xprint/ps/PsInit.c b/Xprint/ps/PsInit.c
index 224d08335..f2e064921 100644
--- a/Xprint/ps/PsInit.c
+++ b/Xprint/ps/PsInit.c
@@ -83,6 +83,7 @@ in this Software without prior written authorization from The Open Group.
#include "Ps.h"
#include "mi.h"
+#include "micmap.h"
#include "AttrValid.h"
#include "../../mfb/mfb.h"
@@ -100,6 +101,10 @@ int PsContextPrivateIndex;
int PsPixmapPrivateIndex;
int PsWindowPrivateIndex;
+#ifdef GLXEXT
+extern void GlxWrapInitVisuals(miInitVisualsProcPtr *);
+#endif /* GLXEXT */
+
Bool
InitializePsDriver(ndx, pScreen, argc, argv)
int ndx;
@@ -118,6 +123,8 @@ InitializePsDriver(ndx, pScreen, argc, argv)
int nDepths;
VisualPtr visuals;
DepthPtr depths;
+ VisualID defaultVisual;
+ int rootDepth;
/*
* Register this driver's InitContext function with the print
@@ -203,27 +210,35 @@ InitializePsDriver(ndx, pScreen, argc, argv)
depths[0].depth = 24;
depths[0].numVids = 1;
- depths[0].vids = &visuals[0].vid;
+ depths[0].vids = (VisualID *)xalloc(sizeof(VisualID));
+ depths[0].vids[0] = visuals[0].vid;
depths[1].depth = 8;
depths[1].numVids = 1;
- depths[1].vids = &visuals[1].vid;
+ depths[1].vids = (VisualID *)xalloc(sizeof(VisualID));
+ depths[1].vids[0] = visuals[1].vid;
+
+ /* Defaul visual is 8bit PseudoColor */
+ defaultVisual = visuals[1].vid;
+ rootDepth = visuals[1].nplanes;
-/* THE FOLLOWING CAUSES SERVER DEFAULT VISUAL TO BE 24 BIT */
-/* miScreenInit(pScreen, (pointer)0,
- pScreen->width, pScreen->height,
- pScreen->width / (pScreen->mmWidth / 25.40),
- pScreen->height / (pScreen->mmHeight / 25.40),
- 0, 24, nDepths,
- depths, visuals[1].vid, nVisuals, visuals); */
+#ifdef GLXEXT
+ {
+ miInitVisualsProcPtr proc = NULL;
+
+ GlxWrapInitVisuals(&proc);
+ /* GlxInitVisuals ignores the last three arguments. */
+ proc(&visuals, &depths, &nVisuals, &nDepths,
+ &rootDepth, &defaultVisual, 0, 0, 0);
+ }
+#endif /* GLXEXT */
-/* THE FOLLOWING CAUSES SERVER DEFAULT VISUAL TO BE 8 BIT */
miScreenInit(pScreen, (pointer)0,
- pScreen->width, pScreen->height,
- (int) (pScreen->width / (pScreen->mmWidth / 25.40)),
- (int) (pScreen->height / (pScreen->mmHeight / 25.40)),
- 0, 8, nDepths,
- depths, visuals[1].vid, nVisuals, visuals);
+ pScreen->width, pScreen->height,
+ (int) (pScreen->width / (pScreen->mmWidth / 25.40)),
+ (int) (pScreen->height / (pScreen->mmHeight / 25.40)),
+ 0, rootDepth, nDepths,
+ depths, defaultVisual, nVisuals, visuals);
if( cfbCreateDefColormap(pScreen)==FALSE ) return FALSE;