diff --git a/hw/xnest/Color.c b/hw/xnest/Color.c index 430176158..517452047 100644 --- a/hw/xnest/Color.c +++ b/hw/xnest/Color.c @@ -29,6 +29,7 @@ is" without express or implied warranty. #include "resource.h" #include "Xnest.h" +#include "xnest-xcb.h" #include "Display.h" #include "Screen.h" @@ -58,11 +59,14 @@ xnestCreateColormap(ColormapPtr pCmap) pVisual = pCmap->pVisual; ncolors = pVisual->ColormapEntries; - xnestColormapPriv(pCmap)->colormap = - XCreateColormap(xnestDisplay, + uint32_t const cmap = xcb_generate_id(xnestUpstreamInfo.conn); + xnestColormapPriv(pCmap)->colormap = cmap; + + xcb_create_colormap(xnestUpstreamInfo.conn, + (pVisual->class & DynamicClass) ? XCB_COLORMAP_ALLOC_ALL : XCB_COLORMAP_ALLOC_NONE, + cmap, xnestDefaultWindows[pCmap->pScreen->myNum], - xnestVisual(pVisual), - (pVisual->class & DynamicClass) ? AllocAll : AllocNone); + xnestVisual(pVisual)->visualid); switch (pVisual->class) { case StaticGray: /* read only */ @@ -134,7 +138,7 @@ xnestCreateColormap(ColormapPtr pCmap) void xnestDestroyColormap(ColormapPtr pCmap) { - XFreeColormap(xnestDisplay, xnestColormap(pCmap)); + xcb_free_colormap(xnestUpstreamInfo.conn, xnestColormap(pCmap)); } #define SEARCH_PREDICATE \ diff --git a/hw/xnest/Display.c b/hw/xnest/Display.c index 3fe601423..521ffca43 100644 --- a/hw/xnest/Display.c +++ b/hw/xnest/Display.c @@ -121,11 +121,14 @@ xnestOpenDisplay(int argc, char *argv[]) xnestNumDefaultColormaps = xnestNumVisuals; xnestDefaultColormaps = xallocarray(xnestNumDefaultColormaps, sizeof(Colormap)); - for (i = 0; i < xnestNumDefaultColormaps; i++) - xnestDefaultColormaps[i] = XCreateColormap(xnestDisplay, - xnestUpstreamInfo.screenInfo->root, - xnestVisuals[i].visual, - AllocNone); + for (i = 0; i < xnestNumDefaultColormaps; i++) { + xnestDefaultColormaps[i] = xcb_generate_id(xnestUpstreamInfo.conn); + xcb_create_colormap(xnestUpstreamInfo.conn, + XCB_COLORMAP_ALLOC_NONE, + xnestDefaultColormaps[i], + xnestUpstreamInfo.screenInfo->root, + xnestVisuals[i].visual->visualid); + } xnestDepths = XListDepths(xnestDisplay, xnestUpstreamInfo.screenId, &xnestNumDepths);