Ah, I thought this was going a bit too well ;) I'll fix the issues and
send it in again. Regarding a fix, would something as simple as the
following be acceptable?
(in dlls/ddraw/direct3d.c)
@@ -263,6 +263,12 @@ IDirect3DImpl_7_EnumDevices(IDirect3D7 *iface,
return hr;
}
Callback(interface_name, device_name, &ddesc, Context);
+
+ ddesc.deviceGUID = IID_IDirect3DHALDevice;
+ Callback(interface_name, device_name, &ddesc, Context);
+
+ ddesc.deviceGUID = IID_IDirect3DRGBDevice;
+ Callback(interface_name, device_name, &ddesc, Context);
[..]
If so, I'll wrap it up together with the tests.
Thanks for the guidance,
David
On 9/7/07, Stefan Dösinger <stefandoesinger at gmx.at> wrote:
> Am Donnerstag, 6. September 2007 16:02:59 schrieb David Hedberg:
> > This patch adds tests to check the devices enumerated by
> > IDirect3D7_EnumDevices . At least two games rely on the behavior
> > tested by one of the test in this patch.
> If wine behaves incorrectly and your test fails on wine, you have to send a
> fix before or in the same patch as the test. Alexandre has some scripts that
> run the conformance tests after each patch and refuses all patches that cause
> in test failures.
>> If you do not know how to fix the bug, or want to keep it unfixed for some
> other reason(e.g. the incorrect behavior is hard to fix and considered
> harmless), then you can mark the test as todo_wine. Then the tests script
> will ignore failures in the test. However, Alexandre will drop a note and ask
> for further explanation if a test marked todo_wine succeeds(e.g. we had a
> test that succeeded or failed for some time based on the features graphics
> driver).
>> todo_wine test(2 + 2 == 3.99998, "This is my test marked as TODO\n"); /*
> Microsoft does something insane here */
>> Other things:
> + if(!memcmp(&lpdd7->deviceGUID, &IID_IDirect3DRGBDevice,
> sizeof(IID_IDirect3DRGBDevice)))
>> You can use IsEqualGUID here. Sorry for not spotting this earlier.
>> + IDirect3D7_EnumDevices(lpD3D, (LPD3DENUMDEVICESCALLBACK7)
> enumDevicesCallbackTest7, &d3d7et);
> To get more compiler checks, you shouldn't cast the function to the right
> type, but use void *d3d7et, and cast it to the right pointer in your
> function. Debugging a wrong function pointer is a nasty thing ;-)
>>>