From a0c80f3e830bd9f752ae8c4dd92b530ad074fc8e Mon Sep 17 00:00:00 2001 From: Toni Spets Date: Sat, 2 Apr 2011 21:05:14 +0300 Subject: [PATCH] Change palette data_rgb to external RGBQUAD array for software rendering, it was not used before --- palette.c | 10 +++++++++- palette.h | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) 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;