Copy the first 128 colors from the default colormap to Wine's private
colormap when using 'shared' colors.
This commit is contained in:
parent
10b3402c43
commit
bc381a6a3f
|
@ -312,6 +312,20 @@ static BOOL X11DRV_PALETTE_BuildSharedMap(void)
|
||||||
int i, j, warn = 0;
|
int i, j, warn = 0;
|
||||||
int diff, r, g, b, max = 256, bp = 0, wp = 1;
|
int diff, r, g, b, max = 256, bp = 0, wp = 1;
|
||||||
int step = 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 */
|
/* read "AllocSystemColors" from wine.conf */
|
||||||
|
|
||||||
|
|
|
@ -106,6 +106,7 @@ extern int TSXPending(Display*);
|
||||||
extern int TSXPutBackEvent(Display*, XEvent*);
|
extern int TSXPutBackEvent(Display*, XEvent*);
|
||||||
extern int TSXPutImage(Display*, Drawable, GC, XImage*, int, int, int, int, unsigned int, unsigned int);
|
extern int TSXPutImage(Display*, Drawable, GC, XImage*, int, int, int, int, unsigned int, unsigned int);
|
||||||
extern int TSXQueryColor(Display*, Colormap, XColor*);
|
extern int TSXQueryColor(Display*, Colormap, XColor*);
|
||||||
|
extern int TSXQueryColors(Display*, Colormap, XColor*, int);
|
||||||
extern int TSXQueryKeymap(Display*, char*);
|
extern int TSXQueryKeymap(Display*, char*);
|
||||||
extern int TSXQueryPointer(Display*, Window, Window*, Window*, int*, int*, int*, int*, unsigned int*);
|
extern int TSXQueryPointer(Display*, Window, Window*, Window*, int*, int*, int*, int*, unsigned int*);
|
||||||
extern int TSXQueryTree(Display*, Window, Window*, Window*, Window**, unsigned int*);
|
extern int TSXQueryTree(Display*, Window, Window*, Window*, Window**, unsigned int*);
|
||||||
|
|
|
@ -109,6 +109,7 @@ XPolygonRegion
|
||||||
XPutBackEvent
|
XPutBackEvent
|
||||||
XPutImage
|
XPutImage
|
||||||
XQueryColor
|
XQueryColor
|
||||||
|
XQueryColors
|
||||||
XQueryKeymap
|
XQueryKeymap
|
||||||
XQueryPointer
|
XQueryPointer
|
||||||
XQueryTree
|
XQueryTree
|
||||||
|
|
|
@ -811,6 +811,15 @@ int TSXQueryColor(Display* a0, Colormap a1, XColor* a2)
|
||||||
return r;
|
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 TSXQueryKeymap(Display* a0, char* a1)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
Loading…
Reference in New Issue