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

colormap when using 'shared' colors.
This commit is contained in:
Gavriel State 2001-04-16 19:33:25 +00:00 committed by Alexandre Julliard
parent 10b3402c43
commit bc381a6a3f
4 changed files with 26 additions and 1 deletions

View File

@ -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 */

View File

@ -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*);

View File

@ -109,6 +109,7 @@ XPolygonRegion
XPutBackEvent
XPutImage
XQueryColor
XQueryColors
XQueryKeymap
XQueryPointer
XQueryTree

View File

@ -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;