Signed-off-by: Ziqing Hui zhui@codeweavers.com --- include/d2d1effectauthor.idl | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/include/d2d1effectauthor.idl b/include/d2d1effectauthor.idl index b53aa515e85..a58ec35b4b5 100644 --- a/include/d2d1effectauthor.idl +++ b/include/d2d1effectauthor.idl @@ -18,6 +18,12 @@
import "d2d1_1.idl";
+typedef HRESULT (__stdcall *PD2D1_PROPERTY_SET_FUNCTION)(IUnknown *effect, + const BYTE *data, UINT32 data_size); + +typedef HRESULT (__stdcall *PD2D1_PROPERTY_GET_FUNCTION)(const IUnknown *effect, + BYTE *data, UINT32 data_size, UINT32 *actual_size); + typedef enum D2D1_FILTER { D2D1_FILTER_MIN_MAG_MIP_POINT = 0x00, @@ -39,6 +45,13 @@ typedef enum D2D1_FEATURE D2D1_FEATURE_FORCE_DWORD = 0xffffffff } D2D1_FEATURE;
+typedef struct D2D1_PROPERTY_BINDING +{ + const WCHAR *propertyName; + PD2D1_PROPERTY_SET_FUNCTION setFunction; + PD2D1_PROPERTY_GET_FUNCTION getFunction; +} D2D1_PROPERTY_BINDING; + typedef enum D2D1_CHANNEL_DEPTH { D2D1_CHANNEL_DEPTH_DEFAULT = 0x0,
Signed-off-by: Ziqing Hui zhui@codeweavers.com --- dlls/d2d1/tests/d2d1.c | 49 ++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 16 deletions(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index ca80a8e946b..232a7e4a157 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -9955,6 +9955,36 @@ static void test_mt_factory(BOOL d3d11) ID2D1Factory_Release(factory); }
+static void *create_factory(const GUID *iid, UINT32 *factory_version) +{ + IUnknown *factory, *tmp; + unsigned int i; + + static const GUID *factory_iid[] = + { + &IID_ID2D1Factory, + &IID_ID2D1Factory1, + &IID_ID2D1Factory2, + &IID_ID2D1Factory3, + }; + + if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, iid, NULL, (void **)&factory))) + return NULL; + + if (factory_version) + { + for (i = 0; i < ARRAY_SIZE(factory_iid); ++i) + { + if (FAILED(IUnknown_QueryInterface(factory, factory_iid[i], (void **)&tmp))) + break; + IUnknown_Release(tmp); + } + *factory_version = i - 1; + } + + return factory; +} + static void test_effect(BOOL d3d11) { unsigned int i, j, min_inputs, max_inputs, str_size, input_count, factory_version; @@ -9963,9 +9993,7 @@ static void test_effect(BOOL d3d11) ID2D1Image *image_a, *image_b; struct d2d1_test_context ctx; ID2D1DeviceContext *context; - ID2D1Factory1 *factory1; - ID2D1Factory2 *factory2; - ID2D1Factory3 *factory3; + ID2D1Factory1 *factory; ID2D1Bitmap *bitmap; ID2D1Effect *effect; D2D1_SIZE_U size; @@ -9995,23 +10023,12 @@ static void test_effect(BOOL d3d11) if (!init_test_context(&ctx, d3d11)) return;
- if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory1))) + if (!(factory = create_factory(&IID_ID2D1Factory1, &factory_version))) { win_skip("ID2D1Factory1 is not supported.\n"); release_test_context(&ctx); return; } - factory_version = 1; - if (SUCCEEDED(ID2D1Factory1_QueryInterface(factory1, &IID_ID2D1Factory2, (void **)&factory2))) - { - ID2D1Factory2_Release(factory2); - factory_version = 2; - } - if (SUCCEEDED(ID2D1Factory1_QueryInterface(factory1, &IID_ID2D1Factory3, (void **)&factory3))) - { - ID2D1Factory3_Release(factory3); - factory_version = 3; - } if (factory_version < 3) win_skip("ID2D1Factory%u is not supported.\n", factory_version + 1);
@@ -10161,7 +10178,7 @@ static void test_effect(BOOL d3d11) }
ID2D1DeviceContext_Release(context); - ID2D1Factory1_Release(factory1); + ID2D1Factory1_Release(factory); release_test_context(&ctx); }
On Wed, 11 May 2022 at 13:56, Ziqing Hui zhui@codeweavers.com wrote:
+static void *create_factory(const GUID *iid, UINT32 *factory_version) +{
- IUnknown *factory, *tmp;
- unsigned int i;
- static const GUID *factory_iid[] =
- {
&IID_ID2D1Factory,
&IID_ID2D1Factory1,
&IID_ID2D1Factory2,
&IID_ID2D1Factory3,
- };
You'll want the array itself to also be const. (I.e., "static const GUID *const factory_iid[]".)
Signed-off-by: Ziqing Hui zhui@codeweavers.com --- dlls/d2d1/tests/d2d1.c | 207 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 232a7e4a157..9689e8bc635 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -28,6 +28,9 @@ #include "dwrite.h" #include "wincodec.h" #include "wine/heap.h" +#include "d2d1effectauthor.h" + +DEFINE_GUID(CLSID_TestEffect, 0xb9ee12e9,0x32d9,0xe659,0xac,0x61,0x2d,0x7c,0xea,0x69,0x28,0x78);
static HRESULT (WINAPI *pD2D1CreateDevice)(IDXGIDevice *dxgi_device, const D2D1_CREATION_PROPERTIES *properties, ID2D1Device **device); @@ -118,6 +121,13 @@ struct expected_geometry_figure const struct geometry_segment *segments; };
+struct effect_impl +{ + ID2D1EffectImpl ID2D1EffectImpl_iface; + LONG refcount; + UINT integer; +}; + static void queue_d3d1x_test(void (*test)(BOOL d3d11), BOOL d3d11) { if (mt_test_count >= mt_tests_size) @@ -10182,6 +10192,202 @@ static void test_effect(BOOL d3d11) release_test_context(&ctx); }
+static inline struct effect_impl *impl_from_ID2D1EffectImpl(ID2D1EffectImpl *iface) +{ + return CONTAINING_RECORD(iface, struct effect_impl, ID2D1EffectImpl_iface); +} + +static HRESULT STDMETHODCALLTYPE effect_impl_QueryInterface(ID2D1EffectImpl *iface, REFIID iid, void **out) +{ + if (IsEqualGUID(iid, &IID_ID2D1EffectImpl) + || IsEqualGUID(iid, &IID_IUnknown)) + { + *out = iface; + return S_OK; + } + + *out = NULL; + return E_NOINTERFACE; +} + +static ULONG STDMETHODCALLTYPE effect_impl_AddRef(ID2D1EffectImpl *iface) +{ + struct effect_impl *effect_impl = impl_from_ID2D1EffectImpl(iface); + ULONG refcount = InterlockedIncrement(&effect_impl->refcount); + return refcount; +} + +static ULONG STDMETHODCALLTYPE effect_impl_Release(ID2D1EffectImpl *iface) +{ + struct effect_impl *effect_impl = impl_from_ID2D1EffectImpl(iface); + ULONG refcount = InterlockedDecrement(&effect_impl->refcount); + return refcount; +} + +static HRESULT STDMETHODCALLTYPE effect_impl_Initialize(ID2D1EffectImpl *iface, + ID2D1EffectContext *context,ID2D1TransformGraph *graph) +{ + return S_OK; +} + +static HRESULT STDMETHODCALLTYPE effect_impl_PrepareForRender(ID2D1EffectImpl *iface, D2D1_CHANGE_TYPE type) +{ + return S_OK; +} + +static HRESULT STDMETHODCALLTYPE effect_impl_SetGraph(ID2D1EffectImpl *iface, ID2D1TransformGraph *graph) +{ + return E_NOTIMPL; +} + +static const ID2D1EffectImplVtbl effect_impl_vtbl = +{ + effect_impl_QueryInterface, + effect_impl_AddRef, + effect_impl_Release, + effect_impl_Initialize, + effect_impl_PrepareForRender, + effect_impl_SetGraph, +}; + +static HRESULT STDMETHODCALLTYPE effect_impl_create(IUnknown **effect_impl) +{ + struct effect_impl *object; + + if (!(object = heap_alloc(sizeof(*object)))) + return E_OUTOFMEMORY; + + object->ID2D1EffectImpl_iface.lpVtbl = &effect_impl_vtbl; + object->refcount = 1; + + *effect_impl = (IUnknown *)&object->ID2D1EffectImpl_iface; + return S_OK; +} + +static HRESULT STDMETHODCALLTYPE effect_impl_set_integer(IUnknown *iface, + const BYTE *data, UINT32 data_size) +{ + struct effect_impl *effect_impl = impl_from_ID2D1EffectImpl((ID2D1EffectImpl *)iface); + + if (!data || data_size != sizeof(effect_impl->integer)) + return E_INVALIDARG; + + effect_impl->integer = *((UINT *)data); + + return S_OK; +} + +static HRESULT STDMETHODCALLTYPE effect_impl_get_integer(const IUnknown *iface, + BYTE *data, UINT32 data_size, UINT32 *actual_size) +{ + struct effect_impl *effect_impl = impl_from_ID2D1EffectImpl((ID2D1EffectImpl *)iface); + + if (!data || data_size != sizeof(effect_impl->integer)) + return E_INVALIDARG; + + *((UINT *)data) = effect_impl->integer; + if (actual_size) + *actual_size = sizeof(effect_impl->integer); + + return S_OK; +} + +#define EFFECT_XML(x) L###x + +static void test_register_effect(BOOL d3d11) +{ + D2D1_PROPERTY_BINDING binding, invalid_binding; + struct d2d1_test_context ctx; + ID2D1Factory1 *factory; + HRESULT hr; + + const WCHAR *effect_xml = EFFECT_XML + ( + <?xml version='1.0'?> + <Effect> + <Property name='DisplayName' type='string' value='TestEffect'/> + <Property name='Author' type='string' value='The Wine Project'/> + <Property name='Category' type='string' value='Test'/> + <Property name='Description' type='string' value='Test effect.'/> + <Inputs> + <Input name='Source'/> + </Inputs> + <Property name='Integer' type='uint32'> + <Property name='DisplayName' type='string' value='Integer'/> + <Property name='Min' type='uint32' value='0'/> + <Property name='Max' type='uint32' value='100'/> + <Property name='Default' type='uint32' value='10'/> + </Property> + </Effect> + ); + + binding.propertyName = L"Integer"; + binding.setFunction = effect_impl_set_integer; + binding.getFunction = effect_impl_get_integer; + + if (!init_test_context(&ctx, d3d11)) + return; + + if (!(factory = create_factory(&IID_ID2D1Factory1, NULL))) + { + win_skip("ID2D1Factory1 is not supported.\n"); + release_test_context(&ctx); + return; + } + + /* Register effect once */ + hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, + effect_xml, &binding, 1, effect_impl_create); + todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); + todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); + todo_wine ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); + + /* Register effect with invalid binding */ + invalid_binding = binding; + invalid_binding.propertyName = L"deadbeef"; + hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, + effect_xml, &invalid_binding, 1, effect_impl_create); + todo_wine ok(hr == D2DERR_INVALID_PROPERTY, "Got unexpected hr %#lx.\n", hr); + ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); + + invalid_binding = binding; + invalid_binding.setFunction = NULL; + hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, + effect_xml, &invalid_binding, 1, effect_impl_create); + todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); + + invalid_binding = binding; + invalid_binding.getFunction = NULL; + hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, + effect_xml, &invalid_binding, 1, effect_impl_create); + todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); + + /* Register effect multiple times */ + hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, + effect_xml, &binding, 1, effect_impl_create); + todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, + effect_xml, &binding, 1, effect_impl_create); + todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); + todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); + todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); + todo_wine ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); + + /* Unregister builtin effect */ + hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_D2D1Composite); + todo_wine ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); + + ID2D1Factory1_Release(factory); + release_test_context(&ctx); +} + static void test_effect_2d_affine(BOOL d3d11) { D2D1_MATRIX_3X2_F rotate, scale, skew; @@ -10973,6 +11179,7 @@ START_TEST(d2d1) queue_d3d10_test(test_colour_space); queue_test(test_geometry_group); queue_test(test_mt_factory); + queue_test(test_register_effect); queue_test(test_effect); queue_test(test_effect_2d_affine); queue_test(test_effect_crop);
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=114448
Your paranoid android.
=== build (build log) ===
../wine/include/windef.h:130:30: error: unknown type name ‘do_not_use_this_in_wine’ /usr/share/mingw-w64/include/d2d1effectauthor.h:105:18: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token ../wine/include/windef.h:130:30: error: unknown type name ‘do_not_use_this_in_wine’ /usr/share/mingw-w64/include/d2d1effectauthor.h:124:16: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token ../wine/include/windef.h:130:30: error: unknown type name ‘do_not_use_this_in_wine’ /usr/share/mingw-w64/include/d2d1effectauthor.h:129:16: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:154:29: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:172:32: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:190:27: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:210:25: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:233:30: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:250:26: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:271:30: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:288:31: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:313:34: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:331:31: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:349:32: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:369:32: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:387:42: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:405:30: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:445:27: error: expected identifier or ‘(’ before ‘:’ token ../wine/dlls/d2d1/tests/d2d1.c:126:5: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10195:61: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10200:61: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10213:51: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10220:52: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10227:57: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10228:9: error: unknown type name ‘ID2D1EffectContext’ ../wine/dlls/d2d1/tests/d2d1.c:10228:37: error: unknown type name ‘ID2D1TransformGraph’ ../wine/dlls/d2d1/tests/d2d1.c:10233:63: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10238:55: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10238:79: error: unknown type name ‘ID2D1TransformGraph’ ../wine/dlls/d2d1/tests/d2d1.c:10243:14: error: unknown type name ‘ID2D1EffectImplVtbl’ ../wine/dlls/d2d1/tests/d2d1.c:10245:5: error: ‘effect_impl_QueryInterface’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10246:5: error: ‘effect_impl_AddRef’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10247:5: error: ‘effect_impl_Release’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10248:5: error: ‘effect_impl_Initialize’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10249:5: error: ‘effect_impl_PrepareForRender’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10250:5: error: ‘effect_impl_SetGraph’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10260:34: error: request for member ‘lpVtbl’ in something not a structure or union ../wine/dlls/d2d1/tests/d2d1.c:10270:66: error: ‘ID2D1EffectImpl’ undeclared (first use in this function) ../wine/dlls/d2d1/tests/d2d1.c:10270:83: error: expected expression before ‘)’ token ../wine/dlls/d2d1/tests/d2d1.c:10283:66: error: ‘ID2D1EffectImpl’ undeclared (first use in this function) ../wine/dlls/d2d1/tests/d2d1.c:10283:83: error: expected expression before ‘)’ token Makefile:16599: recipe for target 'dlls/d2d1/tests/d2d1.cross.o' failed Task: The exe32 Wine build failed
=== debian11 (32 bit report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Arabic:Morocco report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit German report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit French report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Hebrew:Israel report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Hindi:India report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Japanese:Japan report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Chinese:China report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit WoW report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (64 bit WoW report) ===
d2d1: d2d1: Timeout
Hi Henri,
I'm pretty confused why this patch has build failures on testbot. The patch is built well on my local machine. I try to figure out the reason. But get blocked here.
Could you please help me figure out why it fails? I wonder maybe there are some COM module build rules I don't know.
Thanks, Ziqing
On 5/11/22 8:28 PM, Marvin wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=114448
Your paranoid android.
=== build (build log) ===
../wine/include/windef.h:130:30: error: unknown type name ‘do_not_use_this_in_wine’ /usr/share/mingw-w64/include/d2d1effectauthor.h:105:18: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token ../wine/include/windef.h:130:30: error: unknown type name ‘do_not_use_this_in_wine’ /usr/share/mingw-w64/include/d2d1effectauthor.h:124:16: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token ../wine/include/windef.h:130:30: error: unknown type name ‘do_not_use_this_in_wine’ /usr/share/mingw-w64/include/d2d1effectauthor.h:129:16: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:154:29: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:172:32: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:190:27: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:210:25: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:233:30: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:250:26: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:271:30: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:288:31: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:313:34: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:331:31: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:349:32: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:369:32: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:387:42: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:405:30: error: expected identifier or ‘(’ before ‘:’ token /usr/share/mingw-w64/include/d2d1effectauthor.h:445:27: error: expected identifier or ‘(’ before ‘:’ token ../wine/dlls/d2d1/tests/d2d1.c:126:5: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10195:61: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10200:61: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10213:51: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10220:52: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10227:57: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10228:9: error: unknown type name ‘ID2D1EffectContext’ ../wine/dlls/d2d1/tests/d2d1.c:10228:37: error: unknown type name ‘ID2D1TransformGraph’ ../wine/dlls/d2d1/tests/d2d1.c:10233:63: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10238:55: error: unknown type name ‘ID2D1EffectImpl’ ../wine/dlls/d2d1/tests/d2d1.c:10238:79: error: unknown type name ‘ID2D1TransformGraph’ ../wine/dlls/d2d1/tests/d2d1.c:10243:14: error: unknown type name ‘ID2D1EffectImplVtbl’ ../wine/dlls/d2d1/tests/d2d1.c:10245:5: error: ‘effect_impl_QueryInterface’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10246:5: error: ‘effect_impl_AddRef’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10247:5: error: ‘effect_impl_Release’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10248:5: error: ‘effect_impl_Initialize’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10249:5: error: ‘effect_impl_PrepareForRender’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10250:5: error: ‘effect_impl_SetGraph’ undeclared here (not in a function) ../wine/dlls/d2d1/tests/d2d1.c:10260:34: error: request for member ‘lpVtbl’ in something not a structure or union ../wine/dlls/d2d1/tests/d2d1.c:10270:66: error: ‘ID2D1EffectImpl’ undeclared (first use in this function) ../wine/dlls/d2d1/tests/d2d1.c:10270:83: error: expected expression before ‘)’ token ../wine/dlls/d2d1/tests/d2d1.c:10283:66: error: ‘ID2D1EffectImpl’ undeclared (first use in this function) ../wine/dlls/d2d1/tests/d2d1.c:10283:83: error: expected expression before ‘)’ token Makefile:16599: recipe for target 'dlls/d2d1/tests/d2d1.cross.o' failed Task: The exe32 Wine build failed
=== debian11 (32 bit report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Arabic:Morocco report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit German report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit French report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Hebrew:Israel report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Hindi:India report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Japanese:Japan report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit Chinese:China report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (32 bit WoW report) ===
d2d1: d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10341: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10359: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10366: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10372: Test succeeded inside todo block: Got unexpected hr 0. d2d1.c:10375: Test succeeded inside todo block: Got unexpected hr 0.
=== debian11 (64 bit WoW report) ===
d2d1: d2d1: Timeout
On 5/11/22 14:56, Ziqing Hui wrote:
Signed-off-by: Ziqing Hui zhui@codeweavers.com
--- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -28,6 +28,9 @@ #include "dwrite.h" #include "wincodec.h" #include "wine/heap.h" +#include "d2d1effectauthor.h"
+DEFINE_GUID(CLSID_TestEffect, 0xb9ee12e9,0x32d9,0xe659,0xac,0x61,0x2d,0x7c,0xea,0x69,0x28,0x78);
Hi, Ziqing.
I don't know if that will indirectly help with testbot build failure, but note that you should add this new d2d1 header to uuid library, instead of using it here under initguid.