mirror of
https://github.com/reactos/reactos.git
synced 2025-06-06 01:40:36 +00:00
Fix regression in RealizePalette. Send broadcast message if palette was changed.
svn path=/trunk/; revision=31621
This commit is contained in:
parent
6880f63f6f
commit
b5c759cceb
7 changed files with 25 additions and 6 deletions
|
@ -373,7 +373,7 @@ typedef struct _DC
|
||||||
ULONG lucExcLock;
|
ULONG lucExcLock;
|
||||||
PVOID Tid;
|
PVOID Tid;
|
||||||
|
|
||||||
DHPDEV PDev; // GDIDEVICE.hPDev
|
DHPDEV PDev; // <- GDIDEVICE.hPDev DHPDEV for device.
|
||||||
INT DC_Type;
|
INT DC_Type;
|
||||||
INT DC_Flags;
|
INT DC_Flags;
|
||||||
PVOID pPDev; // PGDIDEVICE
|
PVOID pPDev; // PGDIDEVICE
|
||||||
|
|
|
@ -14,6 +14,6 @@ const PALETTEENTRY* FASTCALL COLOR_GetSystemPaletteTemplate (VOID);
|
||||||
COLORREF STDCALL COLOR_LookupNearestColor (PALETTEENTRY* palPalEntry, INT size, COLORREF color);
|
COLORREF STDCALL COLOR_LookupNearestColor (PALETTEENTRY* palPalEntry, INT size, COLORREF color);
|
||||||
INT STDCALL COLOR_PaletteLookupExactIndex (PALETTEENTRY* palPalEntry, INT size, COLORREF col);
|
INT STDCALL COLOR_PaletteLookupExactIndex (PALETTEENTRY* palPalEntry, INT size, COLORREF col);
|
||||||
INT STDCALL COLOR_PaletteLookupPixel(PALETTEENTRY *palPalEntry, INT size, XLATEOBJ *XlateObj, COLORREF col, BOOL skipReserved);
|
INT STDCALL COLOR_PaletteLookupPixel(PALETTEENTRY *palPalEntry, INT size, XLATEOBJ *XlateObj, COLORREF col, BOOL skipReserved);
|
||||||
UINT STDCALL NtGdiRealizePalette (HDC);
|
UINT FASTCALL IntGdiRealizePalette (HDC);
|
||||||
|
|
||||||
#endif /* _WIN32K_COLOR_H */
|
#endif /* _WIN32K_COLOR_H */
|
||||||
|
|
|
@ -12,5 +12,6 @@ IntInvalidateWindows(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags);
|
||||||
BOOL FASTCALL
|
BOOL FASTCALL
|
||||||
IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, PW32THREAD Thread,
|
IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, PW32THREAD Thread,
|
||||||
MSG *Message, BOOL Remove);
|
MSG *Message, BOOL Remove);
|
||||||
|
INT FASTCALL UserRealizePalette(HDC);
|
||||||
|
|
||||||
#endif /* _WIN32K_PAINTING_H */
|
#endif /* _WIN32K_PAINTING_H */
|
||||||
|
|
|
@ -477,7 +477,7 @@ NtUserCallOneParam(
|
||||||
RETURN (UserReleaseDC(NULL, (HDC) Param, FALSE));
|
RETURN (UserReleaseDC(NULL, (HDC) Param, FALSE));
|
||||||
|
|
||||||
case ONEPARAM_ROUTINE_REALIZEPALETTE:
|
case ONEPARAM_ROUTINE_REALIZEPALETTE:
|
||||||
RETURN (NtGdiRealizePalette((HDC) Param));
|
RETURN (UserRealizePalette((HDC) Param));
|
||||||
}
|
}
|
||||||
DPRINT1("Calling invalid routine number 0x%x in NtUserCallOneParam(), Param=0x%x\n",
|
DPRINT1("Calling invalid routine number 0x%x in NtUserCallOneParam(), Param=0x%x\n",
|
||||||
Routine, Param);
|
Routine, Param);
|
||||||
|
|
|
@ -1886,6 +1886,24 @@ cleanup:
|
||||||
return Ret;
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INT
|
||||||
|
FASTCALL
|
||||||
|
UserRealizePalette(HDC hdc)
|
||||||
|
{
|
||||||
|
HWND hWnd;
|
||||||
|
DWORD Ret;
|
||||||
|
|
||||||
|
Ret = IntGdiRealizePalette(hdc);
|
||||||
|
if (Ret) // There was a change.
|
||||||
|
{
|
||||||
|
hWnd = IntWindowFromDC(hdc);
|
||||||
|
if (hWnd) // Send broadcast if dc is associated with a window.
|
||||||
|
{ // FYI: Thread locked in CallOneParam.
|
||||||
|
co_IntSendMessage((HWND)HWND_BROADCAST, WM_PALETTECHANGED, (WPARAM)hWnd, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
|
|
|
@ -125,7 +125,7 @@ IntAnimatePalette(HPALETTE hPal,
|
||||||
if (dc->w.hPalette == hPal)
|
if (dc->w.hPalette == hPal)
|
||||||
{
|
{
|
||||||
DC_UnlockDc(dc);
|
DC_UnlockDc(dc);
|
||||||
NtGdiRealizePalette(hDC);
|
IntGdiRealizePalette(hDC);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
DC_UnlockDc(dc);
|
DC_UnlockDc(dc);
|
||||||
|
@ -484,7 +484,7 @@ A logical palette is a buffer between color-intensive applications and the syste
|
||||||
the dc palette.
|
the dc palette.
|
||||||
-- If it is an RGB palette, then an XLATEOBJ is created between the RGB values and the dc palette.
|
-- If it is an RGB palette, then an XLATEOBJ is created between the RGB values and the dc palette.
|
||||||
*/
|
*/
|
||||||
UINT STDCALL NtGdiRealizePalette(HDC hDC)
|
UINT FASTCALL IntGdiRealizePalette(HDC hDC)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* This function doesn't do any real work now and there's plenty
|
* This function doesn't do any real work now and there's plenty
|
||||||
|
|
|
@ -805,7 +805,7 @@ IntGdiCreateDC(PUNICODE_STRING Driver,
|
||||||
NewDC->IsIC = CreateAsIC;
|
NewDC->IsIC = CreateAsIC;
|
||||||
|
|
||||||
NewDC->PDev = PrimarySurface.hPDev;
|
NewDC->PDev = PrimarySurface.hPDev;
|
||||||
if(pUMdhpdev) pUMdhpdev = NewDC->PDev;
|
if(pUMdhpdev) pUMdhpdev = NewDC->PDev; // set DHPDEV for device.
|
||||||
NewDC->pPDev = (PVOID)&PrimarySurface;
|
NewDC->pPDev = (PVOID)&PrimarySurface;
|
||||||
NewDC->w.hBitmap = (HBITMAP)PrimarySurface.pSurface;
|
NewDC->w.hBitmap = (HBITMAP)PrimarySurface.pSurface;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue