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

View File

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

View File

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

View File

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