Commit bc381a6a authored by Gavriel State's avatar Gavriel State Committed by Alexandre Julliard

Copy the first 128 colors from the default colormap to Wine's private

colormap when using 'shared' colors.
parent 10b3402c
......@@ -312,6 +312,20 @@ static BOOL X11DRV_PALETTE_BuildSharedMap(void)
int i, j, warn = 0;
int diff, r, g, b, max = 256, bp = 0, wp = 1;
int step = 1;
int defaultCM_max_copy;
Colormap defaultCM;
XColor defaultColors[256];
/* Copy the first bunch of colors out of the default colormap to prevent
* colormap flashing as much as possible. We're likely to get the most
* important Window Manager colors, etc in the first 128 colors */
defaultCM = DefaultColormapOfScreen( X11DRV_GetXScreen() );
defaultCM_max_copy = PROFILE_GetWineIniInt( "x11drv", "CopyDefaultColors", 128);
for (i = 0; i < defaultCM_max_copy; i++)
defaultColors[i].pixel = (long) i;
TSXQueryColors(display, defaultCM, &defaultColors[0], defaultCM_max_copy);
for (i = 0; i < defaultCM_max_copy; i++)
TSXAllocColor( display, X11DRV_PALETTE_PaletteXColormap, &defaultColors[i] );
/* read "AllocSystemColors" from wine.conf */
......
......@@ -106,6 +106,7 @@ extern int TSXPending(Display*);
extern int TSXPutBackEvent(Display*, XEvent*);
extern int TSXPutImage(Display*, Drawable, GC, XImage*, int, int, int, int, unsigned int, unsigned int);
extern int TSXQueryColor(Display*, Colormap, XColor*);
extern int TSXQueryColors(Display*, Colormap, XColor*, int);
extern int TSXQueryKeymap(Display*, char*);
extern int TSXQueryPointer(Display*, Window, Window*, Window*, int*, int*, int*, int*, unsigned int*);
extern int TSXQueryTree(Display*, Window, Window*, Window*, Window**, unsigned int*);
......
......@@ -109,6 +109,7 @@ XPolygonRegion
XPutBackEvent
XPutImage
XQueryColor
XQueryColors
XQueryKeymap
XQueryPointer
XQueryTree
......
......@@ -811,6 +811,15 @@ int TSXQueryColor(Display* a0, Colormap a1, XColor* a2)
return r;
}
int TSXQueryColors(Display* a0, Colormap a1, XColor* a2, int a3)
{
int r;
wine_tsx11_lock();
r = XQueryColors(a0, a1, a2, a3);
wine_tsx11_unlock();
return r;
}
int TSXQueryKeymap(Display* a0, char* a1)
{
int r;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment