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