wine/dlls/ddraw surface_main.c
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Nov 14 06:27:55 CST 2005
ChangeSet ID: 21255
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/11/14 06:27:55
Modified files:
dlls/ddraw : surface_main.c
Log message:
Lionel Ulmer <lionel.ulmer at free.fr>
Use the front buffer palette for DC operations on off-screen buffers.
Patch: http://cvs.winehq.org/patch.py?id=21255
Old revision New revision Changes Path
1.8 1.9 +25 -0 wine/dlls/ddraw/surface_main.c
Index: wine/dlls/ddraw/surface_main.c
diff -u -p wine/dlls/ddraw/surface_main.c:1.8 wine/dlls/ddraw/surface_main.c:1.9
--- wine/dlls/ddraw/surface_main.c:1.8 14 Nov 2005 12:27:55 -0000
+++ wine/dlls/ddraw/surface_main.c 14 Nov 2005 12:27:55 -0000
@@ -900,6 +900,31 @@ Main_DirectDrawSurface_GetDC(LPDIRECTDRA
}
hr = This->get_dc(This, &This->hDC);
+
+ if ((This->surface_desc.u4.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
+ (This->palette == NULL)) {
+ IDirectDrawImpl *ddraw = This->ddraw_owner;
+ IDirectDrawSurfaceImpl *surf;
+
+ for (surf = ddraw->surfaces; surf != NULL; surf = surf->next_ddraw) {
+ if (((surf->surface_desc.ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_FRONTBUFFER)) == (DDSCAPS_PRIMARYSURFACE | DDSCAPS_FRONTBUFFER)) &&
+ (surf->palette != NULL)) {
+ RGBQUAD col[256];
+ IDirectDrawPaletteImpl *pal = surf->palette;
+ unsigned int n;
+ for (n=0; n<256; n++) {
+ col[n].rgbRed = pal->palents[n].peRed;
+ col[n].rgbGreen = pal->palents[n].peGreen;
+ col[n].rgbBlue = pal->palents[n].peBlue;
+ col[n].rgbReserved = 0;
+ }
+ SetDIBColorTable(This->hDC, 0, 256, col);
+ break;
+ }
+ }
+
+ }
+
if (SUCCEEDED(hr))
{
TRACE("returning %p\n",This->hDC);
More information about the wine-cvs
mailing list