diff --git a/palette.c b/palette.c index 027f9f1..22b0941 100644 --- a/palette.c +++ b/palette.c @@ -35,7 +35,13 @@ HRESULT __stdcall ddraw_palette_SetEntries(IDirectDrawPaletteImpl *This, DWORD d for(i=0;i<256;i++) { This->data_bgr[i] = (lpEntries[i].peBlue<<16)|(lpEntries[i].peGreen<<8)|lpEntries[i].peRed; - This->data_rgb[i] = (lpEntries[i].peRed<<16)|(lpEntries[i].peGreen<<8)|(lpEntries[i].peBlue); + if (This->data_rgb) + { + This->data_rgb[i].rgbRed = lpEntries[i].peRed; + This->data_rgb[i].rgbGreen = lpEntries[i].peGreen; + This->data_rgb[i].rgbBlue = lpEntries[i].peBlue; + This->data_rgb[i].rgbReserved = 0; + } } return DD_OK; @@ -105,6 +111,8 @@ HRESULT __stdcall ddraw_CreatePalette(IDirectDrawImpl *This, DWORD dwFlags, LPPA printf(" Palette = %p\n", Palette); *lpDDPalette = (LPDIRECTDRAWPALETTE)Palette; + Palette->data_rgb = NULL; + ddraw_palette_SetEntries(Palette, dwFlags, 0, 256, lpDDColorArray); ddraw_palette_AddRef(Palette); diff --git a/palette.h b/palette.h index 9e6f0f2..ee4d978 100644 --- a/palette.h +++ b/palette.h @@ -31,7 +31,7 @@ typedef struct IDirectDrawPaletteImpl ULONG Ref; int data_bgr[256]; - int data_rgb[256]; + RGBQUAD *data_rgb; } IDirectDrawPaletteImpl;