diff --git a/hw/xnest/Color.c b/hw/xnest/Color.c index 9b797986d..6bff6dd39 100644 --- a/hw/xnest/Color.c +++ b/hw/xnest/Color.c @@ -26,6 +26,7 @@ is" without express or implied warranty. #include "resource.h" #include "Xnest.h" +#include "xnest-xcb.h" #include "Display.h" #include "Screen.h" @@ -55,11 +56,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 */ @@ -131,7 +135,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 a71ab03f7..a6ade5f0e 100644 --- a/hw/xnest/Display.c +++ b/hw/xnest/Display.c @@ -118,11 +118,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);