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,14 +312,28 @@ 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 */
|
||||
|
||||
COLOR_max = PROFILE_GetWineIniInt( "x11drv", "AllocSystemColors", 256);
|
||||
if (COLOR_max > 256) COLOR_max = 256;
|
||||
else if (COLOR_max < 20) COLOR_max = 20;
|
||||
TRACE("%d colors configured.\n", COLOR_max);
|
||||
|
||||
|
||||
TRACE("Building shared map - %i palette entries\n", X11DRV_DevCaps.sizePalette);
|
||||
|
||||
/* Be nice and allocate system colors as read-only */
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue