Palette managing patch.
kenon at go2.pl
kenon at go2.pl
Sun Mar 11 14:51:50 CST 2001
Hello
I'm not enough familiar with wine/windows internals ,so I want someone
to check my patch before comitting to CVS.
Changelog:
Maciek Kaliszewski <kenon at go2.pl>
* dlls/ttydrv/palette.c, dlls/ttydrv/dc.c, dlls/ttydrv/ttydrv.h,
graphics/x11drv/palette.c, graphics/x11drv/init.c, objects/palette.c,
objects/color.c, windows/painting.c, include/palette.h,
include/x11drv.h
Sending WM_PALETTECHANGED message when it is really needed.
-------------- next part --------------
--- dlls/ttydrv/palette.c_or Sat Mar 10 23:21:55 2001
+++ dlls/ttydrv/palette.c Sat Mar 10 23:26:26 2001
@@ -112,3 +112,12 @@
return 0;
}
+
+/***********************************************************************
+ * TTYDRV_PALETTE_IsChanged
+ */
+BOOL TTYDRV_PALETTE_IsChanged()
+{
+ FIXME(" stub\n");
+ return 0;
+}
--- dlls/ttydrv/dc.c_or Sat Mar 10 23:24:06 2001
+++ dlls/ttydrv/dc.c Sat Mar 10 23:24:37 2001
@@ -133,7 +133,8 @@
{
TTYDRV_PALETTE_SetMapping,
TTYDRV_PALETTE_UpdateMapping,
- TTYDRV_PALETTE_IsDark
+ TTYDRV_PALETTE_IsDark,
+ TTYDRV_PALETTE_IsChanged
};
/* FIXME: Adapt to the TTY driver. Copied from the X11 driver */
--- dlls/ttydrv/ttydrv.h_or Sat Mar 10 23:25:14 2001
+++ dlls/ttydrv/ttydrv.h Sat Mar 10 23:25:47 2001
@@ -117,6 +117,7 @@
extern int TTYDRV_PALETTE_SetMapping(struct tagPALETTEOBJ *palPtr, UINT uStart, UINT uNum, BOOL mapOnly);
extern int TTYDRV_PALETTE_UpdateMapping(struct tagPALETTEOBJ *palPtr);
extern BOOL TTYDRV_PALETTE_IsDark(int pixel);
+extern BOOL TTYDRV_PALETTE_IsChanged();
/**************************************************************************
* TTY USER driver
--- graphics/x11drv/palette.c_or Sat Mar 10 03:45:10 2001
+++ graphics/x11drv/palette.c Sat Mar 10 22:45:52 2001
@@ -44,6 +44,7 @@
extern int COLOR_gapEnd;
extern int COLOR_gapFilled;
extern int COLOR_max;
+extern int COLOR_sysPalChanged;
extern const PALETTEENTRY COLOR_sysPalTemplate[NB_RESERVED_COLORS];
@@ -914,6 +915,7 @@
XColor color;
index = X11DRV_PALETTE_firstFree; /* ought to be available */
X11DRV_PALETTE_firstFree = X11DRV_PALETTE_freeList[index];
+ COLOR_sysPalChanged=1;
color.pixel = (X11DRV_PALETTE_PaletteToXPixel) ? X11DRV_PALETTE_PaletteToXPixel[index] : index;
color.red = palPtr->logpalette.palPalEntry[uStart].peRed << 8;
@@ -991,3 +993,9 @@
return (GetRValue(col) + GetGValue(col) + GetBValue(col)) <= 0x180;
}
+BOOL X11DRV_PALETTE_IsChanged()
+{
+ int retv=COLOR_sysPalChanged;
+ COLOR_sysPalChanged=0;
+ return retv;
+}
\ No newline at end of file
--- graphics/x11drv/init.c_or Sat Mar 10 22:46:07 2001
+++ graphics/x11drv/init.c Sat Mar 10 22:47:10 2001
@@ -140,7 +140,8 @@
{
X11DRV_PALETTE_SetMapping,
X11DRV_PALETTE_UpdateMapping,
- X11DRV_PALETTE_IsDark
+ X11DRV_PALETTE_IsDark,
+ X11DRV_PALETTE_IsChanged
};
DeviceCaps X11DRV_DevCaps = {
--- objects/palette.c_or Sat Mar 10 22:55:15 2001
+++ objects/palette.c Sat Mar 10 23:01:31 2001
@@ -87,6 +87,14 @@
lpPalE[i].peFlags = PC_SYS_USED | (lpPalE[i].peFlags & 0x07);
}
+/***********************************************************************
+ * PALETTE_IsChanged
+ */
+BOOL PALETTE_IsChanged()
+{
+ return PALETTE_Driver->pIsChanged();
+}
+
/***********************************************************************
* CreatePalette16 (GDI.360)
--- objects/color.c_or Sat Mar 10 22:39:56 2001
+++ objects/color.c Sat Mar 10 22:42:14 2001
@@ -22,6 +22,7 @@
*/
PALETTEENTRY *COLOR_sysPal = NULL; /* current system palette */
+int COLOR_sysPalChanged =0;
int COLOR_gapStart = 256;
int COLOR_gapEnd = -1;
--- windows/painting.c_or Sat Mar 10 22:56:58 2001
+++ windows/painting.c Sat Mar 10 23:00:28 2001
@@ -34,7 +34,7 @@
/* Last CTLCOLOR id */
#define CTLCOLOR_MAX CTLCOLOR_STATIC
-
+
/***********************************************************************
* WIN_HaveToDelayNCPAINT
*
@@ -1697,6 +1697,7 @@
return GDISelectPalette16( hDC, hPal, wBkgPalette);
}
+BOOL PALETTE_IsChanged();
/***********************************************************************
* RealizePalette (USER.283)
@@ -1706,7 +1707,7 @@
UINT16 realized = GDIRealizePalette16( hDC );
/* do not send anything if no colors were changed */
- if (realized && IsDCCurrentPalette16( hDC ))
+ if (PALETTE_IsChanged())
{
/* send palette change notification */
HWND hWnd = WindowFromDC( hDC );
--- include/palette.h_or Sat Mar 10 22:34:17 2001
+++ include/palette.h Sat Mar 10 22:56:34 2001
@@ -24,6 +24,7 @@
int (*pSetMapping)(struct tagPALETTEOBJ *, UINT, UINT, BOOL);
int (*pUpdateMapping)(struct tagPALETTEOBJ *);
BOOL (*pIsDark)(int pixel);
+ BOOL (*pIsChanged)();
} PALETTE_DRIVER;
extern PALETTE_DRIVER *PALETTE_Driver;
--- include/x11drv.h_or Sat Mar 10 22:48:25 2001
+++ include/x11drv.h Sat Mar 10 22:49:21 2001
@@ -303,6 +303,7 @@
extern int X11DRV_PALETTE_SetMapping(struct tagPALETTEOBJ *palPtr, UINT uStart, UINT uNum, BOOL mapOnly);
extern int X11DRV_PALETTE_UpdateMapping(struct tagPALETTEOBJ *palPtr);
extern BOOL X11DRV_PALETTE_IsDark(int pixel);
+extern BOOL X11DRV_PALETTE_IsChanged();
/**************************************************************************
* X11 USER driver
More information about the wine-patches
mailing list