winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
June 2022
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
791 discussions
Start a n
N
ew thread
Nikolay Sivov : d2d1/effect: Add D2D1_PROPERTY_CACHED property.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: 9c4aea6de150c94576babba3b4d41dba8cc9f472 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9c4aea6de150c94576babba3…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 26 19:10:32 2022 +0300 d2d1/effect: Add D2D1_PROPERTY_CACHED property. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/effect.c | 2 ++ dlls/d2d1/tests/d2d1.c | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dlls/d2d1/effect.c b/dlls/d2d1/effect.c index 5dc86cccb75..46e53693277 100644 --- a/dlls/d2d1/effect.c +++ b/dlls/d2d1/effect.c @@ -1029,6 +1029,8 @@ HRESULT d2d_effect_create(struct d2d_device_context *context, const CLSID *effec return E_FAIL; } + d2d_effect_properties_add(&object->properties, L"Cached", D2D1_PROPERTY_CACHED, D2D1_PROPERTY_TYPE_BOOL, L"false"); + *effect = &object->ID2D1Effect_iface; TRACE("Created effect %p.\n", *effect); diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 7eaf3427e50..874d977f56f 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -10416,11 +10416,11 @@ static void test_effect(BOOL d3d11) ok(IsEqualGUID(&clsid, test->clsid), "Got unexpected clsid %s, expected %s.\n", debugstr_guid(&clsid), debugstr_guid(test->clsid)); - hr = ID2D1Effect_GetValue(effect, D2D1_PROPERTY_CACHED, - D2D1_PROPERTY_TYPE_BOOL, (BYTE *)&cached, sizeof(cached)); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); - if (hr == S_OK) - ok(cached == FALSE, "Got unexpected cached %d.\n", cached); + cached = TRUE; + hr = ID2D1Effect_GetValue(effect, D2D1_PROPERTY_CACHED, D2D1_PROPERTY_TYPE_BOOL, + (BYTE *)&cached, sizeof(cached)); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(cached == FALSE, "Got unexpected cached %d.\n", cached); hr = ID2D1Effect_GetValue(effect, D2D1_PROPERTY_PRECISION, D2D1_PROPERTY_TYPE_ENUM, (BYTE *)&precision, sizeof(precision));
1
0
0
0
Nikolay Sivov : d2d1/effect: Initial implementation of property access methods.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: bf0c621cbd165f829b88730e26a523bc4c17ea6e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=bf0c621cbd165f829b88730e…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 26 19:05:14 2022 +0300 d2d1/effect: Initial implementation of property access methods. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/effect.c | 202 +++++++++++++++++++++++++++++++++++++------------ dlls/d2d1/tests/d2d1.c | 3 +- include/d2d1_1.idl | 1 + 3 files changed, 155 insertions(+), 51 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=bf0c621cbd165f829b88…
1
0
0
0
Nikolay Sivov : d2d1/effect: Create effect instance properties from builtin effect description.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: 216e56ac3c01774117ce15d3d8cab9341ea78d65 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=216e56ac3c01774117ce15d3…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 26 18:42:43 2022 +0300 d2d1/effect: Create effect instance properties from builtin effect description. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/d2d1_private.h | 34 +++++++++++ dlls/d2d1/effect.c | 140 +++++++++++++++++++++++++++++++++++++++++++- dlls/d2d1/factory.c | 148 +---------------------------------------------- 3 files changed, 173 insertions(+), 149 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=216e56ac3c01774117ce…
1
0
0
0
Nikolay Sivov : d2d1/effect: Handle initial values for D2D1_PROPERTY_TYPE_BOOL.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: 2d29ec34bab4a7f38d00a2142b70156febccd116 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2d29ec34bab4a7f38d00a214…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 26 14:44:18 2022 +0300 d2d1/effect: Handle initial values for D2D1_PROPERTY_TYPE_BOOL. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/factory.c | 7 +++++++ dlls/d2d1/tests/d2d1.c | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c index 52e09033e6d..e2bc80e2f07 100644 --- a/dlls/d2d1/factory.c +++ b/dlls/d2d1/factory.c @@ -829,6 +829,7 @@ static HRESULT parse_effect_add_property(struct d2d_effect_properties *props, co { void *src = NULL; UINT32 _uint32; + BOOL _bool; p->data.offset = props->offset; p->size = sizes[type]; @@ -842,6 +843,12 @@ static HRESULT parse_effect_add_property(struct d2d_effect_properties *props, co _uint32 = wcstoul(value, NULL, 10); src = &_uint32; break; + case D2D1_PROPERTY_TYPE_BOOL: + if (!wcscmp(value, L"true")) _bool = TRUE; + else if (!wcscmp(value, L"false")) _bool = FALSE; + else return E_INVALIDARG; + src = &_bool; + break; case D2D1_PROPERTY_TYPE_IUNKNOWN: case D2D1_PROPERTY_TYPE_COLOR_CONTEXT: break; diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index f1cec1d7a0b..b893e9e8564 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -50,6 +50,10 @@ L"<?xml version='1.0'?> \ <Property name='Max' type='uint32' value='100'/> \ <Property name='Default' type='uint32' value='10'/> \ </Property> \ + <Property name='Bool' type='bool'> \ + <Property name='DisplayName' type='string' value='Bool property'/> \ + <Property name='Default' type='bool' value='false'/> \ + </Property> \ </Effect> \ ";
1
0
0
0
Nikolay Sivov : d2d1/effect: Set initial value for uint32 properties.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: 4a05b93d023ef8260c75e500efe53be421397a03 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4a05b93d023ef8260c75e500…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 26 14:22:05 2022 +0300 d2d1/effect: Set initial value for uint32 properties. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/factory.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c index 16e12d818bc..52e09033e6d 100644 --- a/dlls/d2d1/factory.c +++ b/dlls/d2d1/factory.c @@ -827,10 +827,32 @@ static HRESULT parse_effect_add_property(struct d2d_effect_properties *props, co } else { + void *src = NULL; + UINT32 _uint32; + p->data.offset = props->offset; p->size = sizes[type]; props->offset += p->size; - /* FIXME: convert and write initial value */ + + if (value) + { + switch (p->type) + { + case D2D1_PROPERTY_TYPE_UINT32: + _uint32 = wcstoul(value, NULL, 10); + src = &_uint32; + break; + case D2D1_PROPERTY_TYPE_IUNKNOWN: + case D2D1_PROPERTY_TYPE_COLOR_CONTEXT: + break; + default: + FIXME("Initial value for property type %u is not handled.\n", p->type); + } + + if (src && p->size) memcpy(props->data.ptr + p->data.offset, src, p->size); + } + else if (p->size) + memset(props->data.ptr + p->data.offset, 0, p->size); } p->set_function = NULL; p->get_function = NULL;
1
0
0
0
Nikolay Sivov : d2d1: Move effect object creation to effect.c.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: c172b89588abef7c2fc4b26a5af843e817acbf0e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=c172b89588abef7c2fc4b26a…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 26 14:13:02 2022 +0300 d2d1: Move effect object creation to effect.c. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/d2d1_private.h | 4 ++-- dlls/d2d1/device.c | 28 +--------------------------- dlls/d2d1/effect.c | 43 ++++++++++++++++++++++++++++++++----------- 3 files changed, 35 insertions(+), 40 deletions(-) diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h index 9be553c72d8..82c0b91e06d 100644 --- a/dlls/d2d1/d2d1_private.h +++ b/dlls/d2d1/d2d1_private.h @@ -624,8 +624,8 @@ struct d2d_effect size_t input_count; }; -HRESULT d2d_effect_init(struct d2d_effect *effect, - struct d2d_effect_context *effect_context, const CLSID *effect_id) DECLSPEC_HIDDEN; +HRESULT d2d_effect_create(struct d2d_device_context *context, const CLSID *effect_id, + ID2D1Effect **effect) DECLSPEC_HIDDEN; static inline BOOL d2d_array_reserve(void **elements, size_t *capacity, size_t count, size_t size) { diff --git a/dlls/d2d1/device.c b/dlls/d2d1/device.c index 04a31992ba2..dc29f3b7cb6 100644 --- a/dlls/d2d1/device.c +++ b/dlls/d2d1/device.c @@ -1946,36 +1946,10 @@ static HRESULT STDMETHODCALLTYPE d2d_device_context_CreateEffect(ID2D1DeviceCont REFCLSID effect_id, ID2D1Effect **effect) { struct d2d_device_context *context = impl_from_ID2D1DeviceContext(iface); - struct d2d_effect_context *effect_context; - struct d2d_effect *object; - HRESULT hr; TRACE("iface %p, effect_id %s, effect %p.\n", iface, debugstr_guid(effect_id), effect); - if (!(effect_context = calloc(1, sizeof(*effect_context)))) - return E_OUTOFMEMORY; - d2d_effect_context_init(effect_context, context); - - if (!(object = calloc(1, sizeof(*object)))) - { - ID2D1EffectContext_Release(&effect_context->ID2D1EffectContext_iface); - return E_OUTOFMEMORY; - } - - hr = d2d_effect_init(object, effect_context, effect_id); - ID2D1EffectContext_Release(&effect_context->ID2D1EffectContext_iface); - if (FAILED(hr)) - { - WARN("Failed to initialise effect, hr %#lx.\n", hr); - free(object); - return hr; - } - - *effect = &object->ID2D1Effect_iface; - - TRACE("Created effect %p.\n", *effect); - - return S_OK; + return d2d_effect_create(context, effect_id, effect); } static HRESULT STDMETHODCALLTYPE d2d_device_context_ID2D1DeviceContext_CreateGradientStopCollection( diff --git a/dlls/d2d1/effect.c b/dlls/d2d1/effect.c index f1b877821c8..688f1055791 100644 --- a/dlls/d2d1/effect.c +++ b/dlls/d2d1/effect.c @@ -753,26 +753,47 @@ static const ID2D1ImageVtbl d2d_effect_image_vtbl = d2d_effect_image_GetFactory, }; -HRESULT d2d_effect_init(struct d2d_effect *effect, struct d2d_effect_context *effect_context, const CLSID *effect_id) +HRESULT d2d_effect_create(struct d2d_device_context *context, const CLSID *effect_id, + ID2D1Effect **effect) { + struct d2d_effect_context *effect_context; + struct d2d_effect *object; unsigned int i; - effect->ID2D1Effect_iface.lpVtbl = &d2d_effect_vtbl; - effect->ID2D1Image_iface.lpVtbl = &d2d_effect_image_vtbl; - effect->refcount = 1; + if (!(effect_context = calloc(1, sizeof(*effect_context)))) + return E_OUTOFMEMORY; + d2d_effect_context_init(effect_context, context); + + if (!(object = calloc(1, sizeof(*object)))) + { + ID2D1EffectContext_Release(&effect_context->ID2D1EffectContext_iface); + return E_OUTOFMEMORY; + } + + object->ID2D1Effect_iface.lpVtbl = &d2d_effect_vtbl; + object->ID2D1Image_iface.lpVtbl = &d2d_effect_image_vtbl; + object->refcount = 1; + object->effect_context = effect_context; for (i = 0; i < ARRAY_SIZE(builtin_effects); ++i) { if (IsEqualGUID(effect_id, builtin_effects[i].clsid)) { - effect->info = &builtin_effects[i]; - d2d_effect_SetInputCount(&effect->ID2D1Effect_iface, effect->info->default_input_count); - effect->effect_context = effect_context; - ID2D1EffectContext_AddRef(&effect_context->ID2D1EffectContext_iface); - return S_OK; + object->info = &builtin_effects[i]; + d2d_effect_SetInputCount(&object->ID2D1Effect_iface, object->info->default_input_count); + break; } } - WARN("Unsupported effect clsid %s.\n", debugstr_guid(effect_id)); - return E_FAIL; + if (i == ARRAY_SIZE(builtin_effects)) + { + ID2D1Effect_Release(&object->ID2D1Effect_iface); + return E_FAIL; + } + + *effect = &object->ID2D1Effect_iface; + + TRACE("Created effect %p.\n", *effect); + + return S_OK; }
1
0
0
0
Nikolay Sivov : d2d1/effect: Set property index.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: 8eff207c231a34294e28062778c6b5508d72332e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=8eff207c231a34294e280627…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 26 13:28:05 2022 +0300 d2d1/effect: Set property index. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/factory.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c index 0cb4b5df7d6..16e12d818bc 100644 --- a/dlls/d2d1/factory.c +++ b/dlls/d2d1/factory.c @@ -34,6 +34,7 @@ struct d2d_effect_property { WCHAR *name; D2D1_PROPERTY_TYPE type; + UINT32 index; union { size_t offset; @@ -50,6 +51,7 @@ struct d2d_effect_properties size_t offset; size_t size; size_t count; + size_t custom_count; struct { BYTE *ptr; @@ -766,7 +768,7 @@ static struct d2d_effect_property * parse_effect_get_property(const struct d2d_e } static HRESULT parse_effect_add_property(struct d2d_effect_properties *props, const WCHAR *name, - D2D1_PROPERTY_TYPE type, const WCHAR *value) + UINT32 index, D2D1_PROPERTY_TYPE type, const WCHAR *value) { static const UINT32 sizes[] = { @@ -814,6 +816,8 @@ static HRESULT parse_effect_add_property(struct d2d_effect_properties *props, co } p = &props->properties[props->count++]; + p->index = index; + if (p->index < 0x80000000) props->custom_count++; p->name = wcsdup(name); p->type = type; if (p->type == D2D1_PROPERTY_TYPE_STRING) @@ -834,11 +838,22 @@ static HRESULT parse_effect_add_property(struct d2d_effect_properties *props, co return S_OK; } +static UINT32 parse_effect_get_property_index(struct d2d_effect_properties *props, + const WCHAR *name) +{ + if (!wcscmp(name, L"DisplayName")) return D2D1_PROPERTY_DISPLAYNAME; + if (!wcscmp(name, L"Author")) return D2D1_PROPERTY_AUTHOR; + if (!wcscmp(name, L"Category")) return D2D1_PROPERTY_CATEGORY; + if (!wcscmp(name, L"Description")) return D2D1_PROPERTY_DESCRIPTION; + return props->custom_count; +} + static HRESULT parse_effect_property(IXmlReader *reader, struct d2d_effect_registration *effect) { WCHAR *name = NULL, *value = NULL; D2D1_PROPERTY_TYPE type; unsigned int depth; + UINT32 index; HRESULT hr; if (FAILED(hr = parse_effect_get_attribute(reader, L"name", &name))) @@ -865,7 +880,10 @@ static HRESULT parse_effect_property(IXmlReader *reader, struct d2d_effect_regis } if (SUCCEEDED(hr)) - hr = parse_effect_add_property(&effect->properties, name, type, value); + { + index = parse_effect_get_property_index(&effect->properties, name); + hr = parse_effect_add_property(&effect->properties, name, index, type, value); + } free(value); free(name);
1
0
0
0
Nikolay Sivov : d2d1/effect: Reserve a buffer for property values.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: 727878630b23ec046a91e4ce20d3686975c85a76 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=727878630b23ec046a91e4ce…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 26 13:20:23 2022 +0300 d2d1/effect: Reserve a buffer for property values. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/factory.c | 130 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 100 insertions(+), 30 deletions(-) diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c index 5c79d1791ff..0cb4b5df7d6 100644 --- a/dlls/d2d1/factory.c +++ b/dlls/d2d1/factory.c @@ -34,11 +34,30 @@ struct d2d_effect_property { WCHAR *name; D2D1_PROPERTY_TYPE type; - BYTE *value; + union + { + size_t offset; + void *ptr; + } data; + UINT32 size; PD2D1_PROPERTY_SET_FUNCTION set_function; PD2D1_PROPERTY_GET_FUNCTION get_function; }; +struct d2d_effect_properties +{ + struct d2d_effect_property *properties; + size_t offset; + size_t size; + size_t count; + struct + { + BYTE *ptr; + size_t size; + size_t count; + } data; +}; + struct d2d_effect_registration { struct list entry; @@ -47,22 +66,28 @@ struct d2d_effect_registration CLSID id; UINT32 input_count; - - struct d2d_effect_property *properties; - size_t property_size; - size_t property_count; + struct d2d_effect_properties properties; }; -static void d2d_effect_registration_cleanup(struct d2d_effect_registration *reg) +static void d2d_effect_properties_cleanup(struct d2d_effect_properties *props) { + struct d2d_effect_property *p; size_t i; - for (i = 0; i < reg->property_count; ++i) + for (i = 0; i < props->count; ++i) { - free(reg->properties[i].name); - free(reg->properties[i].value); + p = &props->properties[i]; + free(p->name); + if (p->type == D2D1_PROPERTY_TYPE_STRING) + free(p->data.ptr); } - free(reg->properties); + free(props->properties); + free(props->data.ptr); +} + +static void d2d_effect_registration_cleanup(struct d2d_effect_registration *reg) +{ + d2d_effect_properties_cleanup(®->properties); free(reg); } @@ -731,32 +756,80 @@ static struct d2d_effect_property * parse_effect_get_property(const struct d2d_e { unsigned int i; - for (i = 0; i < effect->property_count; ++i) + for (i = 0; i < effect->properties.count; ++i) { - if (!wcscmp(name, effect->properties[i].name)) - return &effect->properties[i]; + if (!wcscmp(name, effect->properties.properties[i].name)) + return &effect->properties.properties[i]; } return NULL; } -static HRESULT parse_effect_add_property(struct d2d_effect_registration *effect, WCHAR *name, - D2D1_PROPERTY_TYPE type, BYTE *value) +static HRESULT parse_effect_add_property(struct d2d_effect_properties *props, const WCHAR *name, + D2D1_PROPERTY_TYPE type, const WCHAR *value) { - struct d2d_effect_property *property; + static const UINT32 sizes[] = + { + 0, /* D2D1_PROPERTY_TYPE_UNKNOWN */ + 0, /* D2D1_PROPERTY_TYPE_STRING */ + sizeof(BOOL), /* D2D1_PROPERTY_TYPE_BOOL */ + sizeof(UINT32), /* D2D1_PROPERTY_TYPE_UINT32 */ + sizeof(INT32), /* D2D1_PROPERTY_TYPE_IN32 */ + sizeof(float), /* D2D1_PROPERTY_TYPE_FLOAT */ + 2 * sizeof(float), /* D2D1_PROPERTY_TYPE_VECTOR2 */ + 3 * sizeof(float), /* D2D1_PROPERTY_TYPE_VECTOR3 */ + 4 * sizeof(float), /* D2D1_PROPERTY_TYPE_VECTOR4 */ + 0, /* FIXME: D2D1_PROPERTY_TYPE_BLOB */ + sizeof(void *), /* D2D1_PROPERTY_TYPE_IUNKNOWN */ + sizeof(UINT32), /* D2D1_PROPERTY_TYPE_ENUM */ + 0, /* FIXME: D2D1_PROPERTY_TYPE_ARRAY */ + sizeof(CLSID), /* D2D1_PROPERTY_TYPE_CLSID */ + 6 * sizeof(float), /* D2D1_PROPERTY_TYPE_MATRIX_3X2 */ + 12 * sizeof(float), /* D2D1_PROPERTY_TYPE_MATRIX_4X3 */ + 16 * sizeof(float), /* D2D1_PROPERTY_TYPE_MATRIX_4X4 */ + 20 * sizeof(float), /* D2D1_PROPERTY_TYPE_MATRIX_5X4 */ + sizeof(void *), /* D2D1_PROPERTY_TYPE_COLOR_CONTEXT */ + }; + struct d2d_effect_property *p; + + assert(type >= D2D1_PROPERTY_TYPE_STRING && type <= D2D1_PROPERTY_TYPE_COLOR_CONTEXT); + + if (type == D2D1_PROPERTY_TYPE_BLOB || type == D2D1_PROPERTY_TYPE_ARRAY) + { + FIXME("Ignoring property %s of type %u.\n", wine_dbgstr_w(name), type); + return S_OK; + } - if (!d2d_array_reserve((void **)&effect->properties, &effect->property_size, - effect->property_count + 1, sizeof(*effect->properties))) + if (!d2d_array_reserve((void **)&props->properties, &props->size, props->count + 1, + sizeof(*props->properties))) { return E_OUTOFMEMORY; } - property = &effect->properties[effect->property_count++]; - property->name = name; - property->type = type; - property->value = value; - property->set_function = NULL; - property->get_function = NULL; + /* TODO: we could save some space for properties that have both getter and setter. */ + if (!d2d_array_reserve((void **)&props->data.ptr, &props->data.size, + props->data.size + sizes[type], sizeof(*props->data.ptr))) + { + return E_OUTOFMEMORY; + } + + p = &props->properties[props->count++]; + p->name = wcsdup(name); + p->type = type; + if (p->type == D2D1_PROPERTY_TYPE_STRING) + { + p->data.ptr = value ? wcsdup(value) : NULL; + p->size = value ? (wcslen(value) + 1) * sizeof(WCHAR) : 0; + } + else + { + p->data.offset = props->offset; + p->size = sizes[type]; + props->offset += p->size; + /* FIXME: convert and write initial value */ + } + p->set_function = NULL; + p->get_function = NULL; return S_OK; } @@ -792,13 +865,10 @@ static HRESULT parse_effect_property(IXmlReader *reader, struct d2d_effect_regis } if (SUCCEEDED(hr)) - hr = parse_effect_add_property(effect, name, type, (BYTE *)value); + hr = parse_effect_add_property(&effect->properties, name, type, value); - if (FAILED(hr)) - { - free(value); - free(name); - } + free(value); + free(name); return hr; }
1
0
0
0
Brendan Shanks : wbemprox: Use return length from NtQuerySystemInformationEx().
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: 9c3201ad68e02b9917e6aa7360fb71da9f94b61d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9c3201ad68e02b9917e6aa73…
Author: Brendan Shanks <bshanks(a)codeweavers.com> Date: Wed Jun 22 21:06:43 2022 -0700 wbemprox: Use return length from NtQuerySystemInformationEx(). --- dlls/wbemprox/builtin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c index 725f3816ad9..4ac52918f6f 100644 --- a/dlls/wbemprox/builtin.c +++ b/dlls/wbemprox/builtin.c @@ -1533,7 +1533,7 @@ static UINT get_logical_processor_count( UINT *num_physical, UINT *num_packages if (status != STATUS_INFO_LENGTH_MISMATCH) return get_processor_count(); if (!(buf = malloc( len ))) return get_processor_count(); - status = NtQuerySystemInformationEx( SystemLogicalProcessorInformationEx, &all, sizeof(all), buf, len, NULL ); + status = NtQuerySystemInformationEx( SystemLogicalProcessorInformationEx, &all, sizeof(all), buf, len, &len ); if (status != STATUS_SUCCESS) { free( buf );
1
0
0
0
Zhiyi Zhang : light.msstyles: Add Vista+ header parts.
by Alexandre Julliard
27 Jun '22
27 Jun '22
Module: wine Branch: master Commit: ab82ff093aa716e8927ca782585d44d399b7fe77 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ab82ff093aa716e8927ca782…
Author: Zhiyi Zhang <zzhang(a)codeweavers.com> Date: Thu Jun 2 17:16:11 2022 +0800 light.msstyles: Add Vista+ header parts. Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com> --- dlls/light.msstyles/Makefile.in | 29 +++ dlls/light.msstyles/blue_header.bmp | Bin 618 -> 714 bytes dlls/light.msstyles/blue_header.svg | 13 +- dlls/light.msstyles/blue_header_dropdown.bmp | Bin 0 -> 1002 bytes dlls/light.msstyles/blue_header_dropdown.svg | 4 + .../light.msstyles/blue_header_dropdown_filter.bmp | Bin 0 -> 1002 bytes .../light.msstyles/blue_header_dropdown_filter.svg | 10 + .../blue_header_dropdown_filter_glyph_10px.bmp | Bin 0 -> 1218 bytes .../blue_header_dropdown_filter_glyph_10px.svg | 8 + .../blue_header_dropdown_filter_glyph_12px.bmp | Bin 0 -> 1578 bytes .../blue_header_dropdown_filter_glyph_12px.svg | 8 + .../blue_header_dropdown_filter_glyph_15px.bmp | Bin 0 -> 2658 bytes .../blue_header_dropdown_filter_glyph_15px.svg | 8 + .../blue_header_dropdown_filter_glyph_19px.bmp | Bin 0 -> 4242 bytes .../blue_header_dropdown_filter_glyph_19px.svg | 8 + .../blue_header_dropdown_filter_glyph_23px.bmp | Bin 0 -> 6210 bytes .../blue_header_dropdown_filter_glyph_23px.svg | 8 + .../blue_header_dropdown_glyph_10px.bmp | Bin 0 -> 858 bytes .../blue_header_dropdown_glyph_10px.svg | 9 + .../blue_header_dropdown_glyph_13px.bmp | Bin 0 -> 1334 bytes .../blue_header_dropdown_glyph_13px.svg | 9 + .../blue_header_dropdown_glyph_17px.bmp | Bin 0 -> 1974 bytes .../blue_header_dropdown_glyph_17px.svg | 9 + .../blue_header_dropdown_glyph_21px.bmp | Bin 0 -> 3162 bytes .../blue_header_dropdown_glyph_21px.svg | 9 + .../blue_header_dropdown_glyph_29px.bmp | Bin 0 -> 5706 bytes .../blue_header_dropdown_glyph_29px.svg | 9 + .../blue_header_dropdown_glyph_7px.bmp | Bin 0 -> 474 bytes .../blue_header_dropdown_glyph_7px.svg | 9 + .../blue_header_dropdown_glyph_9px.bmp | Bin 0 -> 678 bytes .../blue_header_dropdown_glyph_9px.svg | 9 + dlls/light.msstyles/blue_header_item.bmp | Bin 2538 -> 5898 bytes dlls/light.msstyles/blue_header_item.svg | 70 ++++--- dlls/light.msstyles/blue_header_overflow.bmp | Bin 0 -> 1482 bytes dlls/light.msstyles/blue_header_overflow.svg | 5 + .../blue_header_overflow_glyph_10px.bmp | Bin 0 -> 858 bytes .../blue_header_overflow_glyph_10px.svg | 13 ++ .../blue_header_overflow_glyph_12px.bmp | Bin 0 -> 1194 bytes .../blue_header_overflow_glyph_12px.svg | 13 ++ .../blue_header_overflow_glyph_16px.bmp | Bin 0 -> 1930 bytes .../blue_header_overflow_glyph_16px.svg | 13 ++ .../blue_header_overflow_glyph_20px.bmp | Bin 0 -> 3338 bytes .../blue_header_overflow_glyph_20px.svg | 11 ++ .../blue_header_overflow_glyph_24px.bmp | Bin 0 -> 4170 bytes .../blue_header_overflow_glyph_24px.svg | 13 ++ .../blue_header_overflow_glyph_32px.bmp | Bin 0 -> 7306 bytes .../blue_header_overflow_glyph_32px.svg | 13 ++ .../blue_header_overflow_glyph_8px.bmp | Bin 0 -> 586 bytes .../blue_header_overflow_glyph_8px.svg | 13 ++ .../light.msstyles/blue_header_sort_arrow_13px.bmp | Bin 0 -> 658 bytes .../light.msstyles/blue_header_sort_arrow_13px.svg | 9 + .../light.msstyles/blue_header_sort_arrow_16px.bmp | Bin 0 -> 970 bytes .../light.msstyles/blue_header_sort_arrow_16px.svg | 9 + .../light.msstyles/blue_header_sort_arrow_17px.bmp | Bin 0 -> 2314 bytes .../light.msstyles/blue_header_sort_arrow_17px.svg | 9 + .../light.msstyles/blue_header_sort_arrow_20px.bmp | Bin 0 -> 1338 bytes .../light.msstyles/blue_header_sort_arrow_20px.svg | 9 + .../light.msstyles/blue_header_sort_arrow_26px.bmp | Bin 0 -> 2010 bytes .../light.msstyles/blue_header_sort_arrow_26px.svg | 9 + .../light.msstyles/blue_header_sort_arrow_39px.bmp | Bin 0 -> 4818 bytes .../light.msstyles/blue_header_sort_arrow_39px.svg | 9 + .../light.msstyles/blue_header_sort_arrow_52px.bmp | Bin 0 -> 8458 bytes .../light.msstyles/blue_header_sort_arrow_52px.svg | 9 + dlls/light.msstyles/light.rc | 203 ++++++++++++++++++++- 64 files changed, 544 insertions(+), 45 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=ab82ff093aa716e8927c…
1
0
0
0
← Newer
1
...
12
13
14
15
16
17
18
...
80
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Results per page:
10
25
50
100
200