[PATCH 1/3] include: Add defines for D2D1_PROPERTY_BINDING.
Signed-off-by: Ziqing Hui <zhui(a)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, -- 2.25.1
Signed-off-by: Ziqing Hui <zhui(a)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); } -- 2.25.1
On Wed, 11 May 2022 at 13:56, Ziqing Hui <zhui(a)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(a)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); -- 2.25.1
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(a)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.
participants (5)
-
Henri Verbeet -
Henri Verbeet -
Marvin -
Nikolay Sivov -
Ziqing Hui