DX6 more compatibility.

Michael Karcher wine at mkarcher.dialup.fu-berlin.de
Fri Jun 27 06:22:51 CDT 2008


Am Freitag, den 27.06.2008, 11:26 +0200 schrieb slawek:
> I have one game, that needs DX6, but lowest clone version of DX is 7.
That statement is wrong. dlls/ddraw implements DirectDraw 1 to 7. Core
functionality for surfaces and DX7 special functions are in surface.c,
whereas DX1-5 surfaces are implemented in surface_thunks.c.

The problem you identified is nevertheless real. DirectDraw6 comes with
IDirectDrawSurface4, which is currently (as the vtable layout is
compatible) implemented via IDirectDrawSurface7 (there is no
IDirectDrawSurface{5,6}), so the DX6 version of surface directly uses
the DX7 code, and does not use the relaxed thunk from
IDirectDrawSurface3 (which is also used for IDirectDrawSurface and
IDirectDrawSurface2).

If I get it right, the correct fix is to add a thunk vtable for
IDirectDraw4 that uses relaxed parameter checks on AddAttachedSurface.

Regards,
  Michael Karcher




More information about the wine-devel mailing list