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
November 2016
----- 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
465 discussions
Start a n
N
ew thread
Alistair Leslie-Hughes : d3d10core: Check parameter in ID3D10Device CreateRenderTargetView.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: a48375c14e24bf090047b5e2c53beb40ca6d6890 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a48375c14e24bf090047b5e2c…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Mon Nov 28 06:43:35 2016 +0000 d3d10core: Check parameter in ID3D10Device CreateRenderTargetView. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d10core/tests/device.c | 3 +++ dlls/d3d11/device.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/dlls/d3d10core/tests/device.c b/dlls/d3d10core/tests/device.c index 260128f..18e6753 100644 --- a/dlls/d3d10core/tests/device.c +++ b/dlls/d3d10core/tests/device.c @@ -2219,6 +2219,9 @@ static void test_create_rendertarget_view(void) U(rtv_desc).Buffer.ElementOffset = 0; U(rtv_desc).Buffer.ElementWidth = 64; + hr = ID3D10Device_CreateRenderTargetView(device, NULL, &rtv_desc, &rtview); + ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); + expected_refcount = get_refcount((IUnknown *)device) + 1; hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)buffer, &rtv_desc, &rtview); ok(SUCCEEDED(hr), "Failed to create a rendertarget view, hr %#x.\n", hr); diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 178b184..1765591 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -4590,6 +4590,9 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateRenderTargetView(ID3D10Devic TRACE("iface %p, resource %p, desc %p, view %p.\n", iface, resource, desc, view); + if (!resource) + return E_INVALIDARG; + if (FAILED(hr = ID3D10Resource_QueryInterface(resource, &IID_ID3D11Resource, (void **)&d3d11_resource))) { ERR("Resource does not implement ID3D11Resource.\n");
1
0
0
0
Alistair Leslie-Hughes : d3d10_1: Check parameter in ID3D10Device1 CreateShaderResourceView1.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: 21f46b8fed5fdce172fa87766dd680e004a73701 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=21f46b8fed5fdce172fa87766…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Mon Nov 28 06:43:20 2016 +0000 d3d10_1: Check parameter in ID3D10Device1 CreateShaderResourceView1. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d10_1/tests/d3d10_1.c | 3 +++ dlls/d3d11/device.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/dlls/d3d10_1/tests/d3d10_1.c b/dlls/d3d10_1/tests/d3d10_1.c index 6007a3b..e1d6d4c 100644 --- a/dlls/d3d10_1/tests/d3d10_1.c +++ b/dlls/d3d10_1/tests/d3d10_1.c @@ -371,6 +371,9 @@ static void test_create_shader_resource_view(void) U(srv_desc).Buffer.ElementOffset = 0; U(srv_desc).Buffer.ElementWidth = 64; + hr = ID3D10Device1_CreateShaderResourceView1(device, NULL, &srv_desc, &srview); + ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); + expected_refcount = get_refcount((IUnknown *)device) + 1; hr = ID3D10Device1_CreateShaderResourceView1(device, (ID3D10Resource *)buffer, &srv_desc, &srview); ok(SUCCEEDED(hr), "Failed to create a shader resource view, hr %#x\n", hr); diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 19c55ff..178b184 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -4551,6 +4551,9 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateShaderResourceView1(ID3D10De TRACE("iface %p, resource %p, desc %p, view %p.\n", iface, resource, desc, view); + if (!resource) + return E_INVALIDARG; + if (FAILED(hr = ID3D10Resource_QueryInterface(resource, &IID_ID3D11Resource, (void **)&d3d11_resource))) { ERR("Resource does not implement ID3D11Resource.\n");
1
0
0
0
Alistair Leslie-Hughes : d3d11: Check parameter in ID3D11Device CreateRenderTargetView.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: 7b0f3762827b6ec57287a00aafed0ca8a01410f8 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=7b0f3762827b6ec57287a00aa…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Mon Nov 28 06:43:08 2016 +0000 d3d11: Check parameter in ID3D11Device CreateRenderTargetView. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d11/device.c | 3 +++ dlls/d3d11/tests/d3d11.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index fd51aa2..19c55ff 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -2223,6 +2223,9 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateRenderTargetView(ID3D11Devic TRACE("iface %p, resource %p, desc %p, view %p.\n", iface, resource, desc, view); + if (!resource) + return E_INVALIDARG; + if (FAILED(hr = d3d_rendertarget_view_create(device, resource, desc, &object))) return hr; diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index 515cd02..703800f 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -2979,6 +2979,9 @@ static void test_create_rendertarget_view(void) U(rtv_desc).Buffer.ElementOffset = 0; U(rtv_desc).Buffer.ElementWidth = 64; + hr = ID3D11Device_CreateRenderTargetView(device, NULL, &rtv_desc, &rtview); + ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); + expected_refcount = get_refcount((IUnknown *)device) + 1; hr = ID3D11Device_CreateRenderTargetView(device, (ID3D11Resource *)buffer, &rtv_desc, &rtview); ok(SUCCEEDED(hr), "Failed to create a rendertarget view, hr %#x.\n", hr);
1
0
0
0
Alistair Leslie-Hughes : d3d11: Check parameter in ID3D11Device CreateShaderResourceView.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: 576395c71f018ba7421fb56a777f2aea88a38f89 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=576395c71f018ba7421fb56a7…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Mon Nov 28 06:42:56 2016 +0000 d3d11: Check parameter in ID3D11Device CreateShaderResourceView. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d11/device.c | 3 +++ dlls/d3d11/tests/d3d11.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 1cb033d..fd51aa2 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -2186,6 +2186,9 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateShaderResourceView(ID3D11Dev TRACE("iface %p, resource %p, desc %p, view %p.\n", iface, resource, desc, view); + if (!resource) + return E_INVALIDARG; + if (FAILED(hr = d3d_shader_resource_view_create(device, resource, desc, &object))) return hr; diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index 496b715..515cd02 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -3283,6 +3283,9 @@ static void test_create_shader_resource_view(void) U(srv_desc).Buffer.ElementOffset = 0; U(srv_desc).Buffer.ElementWidth = 64; + hr = ID3D11Device_CreateShaderResourceView(device, NULL, &srv_desc, &srview); + ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); + expected_refcount = get_refcount((IUnknown *)device) + 1; hr = ID3D11Device_CreateShaderResourceView(device, (ID3D11Resource *)buffer, &srv_desc, &srview); ok(SUCCEEDED(hr), "Failed to create a shader resource view, hr %#x.\n", hr);
1
0
0
0
Huw Davies : shell32/tests: Add some uuids present on Windows 10.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: b70821a74d1d0116e1c875f221917c7044bbcadd URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b70821a74d1d0116e1c875f22…
Author: Huw Davies <huw(a)codeweavers.com> Date: Tue Nov 29 14:05:39 2016 +0000 shell32/tests: Add some uuids present on Windows 10. Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/shell32/tests/ebrowser.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dlls/shell32/tests/ebrowser.c b/dlls/shell32/tests/ebrowser.c index 56d20dc..c04a2b4 100644 --- a/dlls/shell32/tests/ebrowser.c +++ b/dlls/shell32/tests/ebrowser.c @@ -71,6 +71,10 @@ DEFINE_GUID(IID_UnknownInterface17, 0x3d5d8c60, 0x21e4, 0x4b03, 0x83,0xb8, 0xc DEFINE_GUID(IID_UnknownInterface18, 0x1fc45c07, 0x9e35, 0x4276, 0xad,0x7f, 0x08,0x60,0x3a,0xa0,0xf6,0x0f); DEFINE_GUID(IID_UnknownInterface19, 0xacd9b67a, 0xceab, 0x4c6c, 0x90,0xa1, 0xe8,0x57,0xc6,0x59,0xe3,0x9d); DEFINE_GUID(IID_UnknownInterface20, 0xd0fe6f62, 0xdea4, 0x46c9, 0x9d,0xae, 0x36,0xcb,0x13,0x99,0x78,0xfa); +DEFINE_GUID(IID_UnknownInterface21, 0x732c1ccd, 0xbc5c, 0x4065, 0x88,0xcb, 0xfb,0x5b,0xce,0xa7,0x1f,0x66); +DEFINE_GUID(IID_UnknownInterface22, 0xc13b3d3a, 0x10d6, 0x43f5, 0x98,0xdb, 0xb7,0xdd,0xd9,0x87,0xb3,0x3d); +DEFINE_GUID(IID_UnknownInterface23, 0x2e228ba3, 0xea25, 0x4378, 0x97,0xb6, 0xd5,0x74,0xfa,0xeb,0xa3,0x56); +DEFINE_GUID(IID_UnknownInterface24, 0xd56a2092, 0x7dbf, 0x4144, 0xa1,0x10, 0xc2,0x96,0x3a,0x70,0x98,0x32); static HWND hwnd; @@ -960,6 +964,13 @@ static void test_SetSite(void) { &IID_UnknownInterface16, &IID_UnknownInterface16, 0, NULL }, { &IID_UnknownInterface17, &IID_UnknownInterface17, 0, NULL }, { &IID_UnknownInterface17, &IID_UnknownInterface19, 0, NULL }, + /* Win 10 */ + { &IID_UnknownInterface21, &IID_UnknownInterface21, 0, NULL }, + { &IID_UnknownInterface21, &IID_IFileDialog, 0, NULL }, + { &IID_UnknownInterface22, &IID_UnknownInterface22, 0, NULL }, + { &IID_UnknownInterface23, &IID_UnknownInterface23, 0, NULL }, + { &IID_UnknownInterface24, &IID_UnknownInterface24, 0, NULL }, + { &IID_UnknownInterface24, &IID_IFileDialog, 0, NULL }, /* Other services requested in Vista, Windows 2008 but not in Windows 7 */ { &IID_IBrowserSettings_Vista, &IID_IBrowserSettings_Vista, 0, NULL },
1
0
0
0
Nikolay Sivov : wbemdisp: Return interface pointers from QI, not object pointers.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: b47462d777c65d711ee00f325861bd6785522d34 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b47462d777c65d711ee00f325…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Nov 29 14:10:51 2016 +0300 wbemdisp: Return interface pointers from QI, not object pointers. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wbemdisp/locator.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index a8b1568..fece94f 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -155,7 +155,7 @@ static HRESULT WINAPI object_QueryInterface( IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown )) { - *ppvObject = object; + *ppvObject = iface; } else { @@ -399,7 +399,7 @@ static HRESULT WINAPI objectset_QueryInterface( IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown )) { - *ppvObject = objectset; + *ppvObject = iface; } else { @@ -630,7 +630,7 @@ static HRESULT WINAPI enumvar_QueryInterface( if (IsEqualGUID( riid, &IID_IEnumVARIANT ) || IsEqualGUID( riid, &IID_IUnknown )) { - *ppvObject = enumvar; + *ppvObject = iface; } else { @@ -763,7 +763,7 @@ static HRESULT WINAPI services_QueryInterface( IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown )) { - *ppvObject = services; + *ppvObject = iface; } else {
1
0
0
0
Flávio J. Saraiva : cmd/tests: Add tests for chaining rules of pipe and else.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: c0a5b1eab95bb9839fa2debe384af47ec6d66b68 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=c0a5b1eab95bb9839fa2debe3…
Author: Flávio J. Saraiva <flaviojs2005(a)gmail.com> Date: Mon Nov 28 18:28:29 2016 +0000 cmd/tests: Add tests for chaining rules of pipe and else. Signed-off-by: Flávio J. Saraiva <flaviojs2005(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/cmd/tests/test_builtins.cmd | 118 +++++++++++++++++++++++++++++-- programs/cmd/tests/test_builtins.cmd.exp | 78 ++++++++++++++++++++ 2 files changed, 191 insertions(+), 5 deletions(-) diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index cf32481..b49f90a 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -252,10 +252,15 @@ echo %ErrorLevel% set WINE_FOO= echo ------------ Testing chains ------------ -rem brackets precede '&&', '||' and '&' -rem '&&' precedes '||' and '&' -rem '||' precedes '&' -rem 'a && b || c & d' is equivalent to '(((a && b) || c) & d)' +rem The chain operators have the following bottom-up precedence: +rem 'else' precedes nothing and matches the closest unmatched 'if' in the same bracket depth +rem '&' precedes 'else' +rem '||' precedes '&' and 'else' +rem '&&' precedes '||', '&' and 'else' +rem '|' precedes '&&', '||', '&' and 'else' +rem +rem Example: 'if 1==1 if 2==2 if 3==3 a | b && c || d & e else f else g' is interpreted as +rem 'if 1==1 (if 2==2 (if 3==3 ((((a | b) && c) || d) & e) else f) else g)' goto :cfailend :cfail echo %1 @@ -301,6 +306,8 @@ call :cfail k1||call :cfail k2&&call :cfail k3 echo --- call :cfail l1||call :cfail l2||call :cfail l3 echo --- chain brackets +rem Brackets are like regular commands, they support redirections +rem and have the same precedence as regular commands. echo a1&(echo a2&echo a3) echo b1&(echo b2&&echo b3) echo c1&(echo c2||echo c3) @@ -329,7 +336,108 @@ call :cfail p1||(call :cfail p2&call :cfail p3) call :cfail q1||(call :cfail q2&&call :cfail q3) echo --- call :cfail r1||(call :cfail r2||call :cfail r3) - +echo --- chain pipe +rem Piped commands run at the same time, so the print order varies. +rem Additionally, they don't run in the batch script context, as shown by +rem 'call :existing_label|echo read the error message'. +(echo a 1>&2|echo a 1>&2) 2>&1 +echo --- +echo b1|echo b2 +echo c1&&echo c2|echo c3 +echo d1||echo d2|echo d3 +echo --- +echo e1&echo e2|echo e3 +echo f1|echo f2&&echo f3 +echo g1|echo g2||echo g3 +echo --- +echo h1|echo h2&echo h3 +echo i1|echo i2|echo i3 +echo --- chain pipe input +rem The output data of the left side of a pipe can dissapear, probably +rem because it finished too fast and closed the pipe before it could be read, +rem which means we can get broken results for the tests of this section. +echo @echo off> tmp.cmd +echo set IN=X>> tmp.cmd +echo set /p IN=%%1:>> tmp.cmd +echo setlocal EnableDelayedExpansion>> tmp.cmd +echo echo [!IN!,%%1]>> tmp.cmd +echo endlocal>> tmp.cmd +echo set IN=>> tmp.cmd +echo a1|cmd /ctmp.cmd a2 +echo b1|cmd /ctmp.cmd b2|cmd /ctmp.cmd b3 +echo c1|cmd /ctmp.cmd c2|cmd /ctmp.cmd c3|cmd /ctmp.cmd c4 +echo d1|call tmp.cmd d2 +echo e1|call tmp.cmd e2|call tmp.cmd e3 +echo f1|call tmp.cmd f2|call tmp.cmd f3|call tmp.cmd f4 +rem FIXME these 3 tests cause "unexpected end of output" +rem test : echo g1|tmp.cmd g2 +rem result: g2:[g1,g2] +rem test : echo h1|tmp.cmd h2|tmp.cmd h3 +rem result: h3:[h2:[h1,h2],h3]@or_broken@h3:[h2:,h3] +rem test : echo i1|tmp.cmd i2|tmp.cmd i3|tmp.cmd i4 +rem result: i4:[i3:[i2:[i1,i2],i3],i4]@or_broken@i4:[i3:[i2:,i3],i4]@or_broken@i4:[i3:,i4] +del tmp.cmd +echo --- chain else +rem Command arguments are gready and eat up the 'else' unless terminated by +rem brackets, which means the 'else' can only be recognized when the +rem 'if true' command chain ends with brackets. +if 1==1 if 2==2 if 3==3 (echo a1) else (echo a2) else echo a3 +if 1==1 if 2==2 if 3==0 (echo b1) else (echo b2) else echo b3 +echo --- +if 1==1 if 2==0 if 3==3 (echo c1) else (echo c2) else echo c3 +echo --- +if 1==1 if 2==0 if 3==0 (echo d1) else (echo d2) else echo d3 +echo --- +if 1==0 if 2==2 if 3==3 (echo e1) else (echo e2) else echo e3 +echo --- +if 1==0 if 2==2 if 3==0 (echo f1) else (echo f2) else echo f3 +echo --- +if 1==0 if 2==0 if 3==3 (echo g1) else (echo g2) else echo g3 +echo --- +if 1==0 if 2==0 if 3==0 (echo h1) else (echo h2) else echo h3 +echo --- +echo --- chain else (if true) +if 1==1 echo a1 else echo a2 +if 1==1 echo b1|echo b2 else echo b3 +if 1==1 echo c1&&echo c2 else echo c3 +if 1==1 echo d1||echo d2 else echo d3 +echo --- +if 1==1 echo e1&echo e2 else echo e3 +if 1==1 echo f1 else echo f2|echo f3 +if 1==1 echo g1 else echo g2&&echo g3 +if 1==1 echo h1 else echo h2||echo h3 +echo --- +if 1==1 echo i1 else echo i2&echo i3 +if 1==1 echo j1|(echo j2) else echo j3 +echo --- +if 1==1 echo k1&&(echo k2) else echo k3 +if 1==1 echo l1||(echo l2) else echo l3 +echo --- +if 1==1 echo m1&(echo m2) else echo m3 +if 1==1 (echo n1) else echo n2|echo n3 +if 1==1 (echo o1) else echo o2&&echo o3 +if 1==1 (echo p1) else echo p2||echo p3 +if 1==1 (echo q1) else echo q2&echo q3 +echo --- chain else (if false) +if 1==0 echo a1 else echo a2 +if 1==0 echo b1|echo b2 else echo b3 +if 1==0 echo c1&&echo c2 else echo c3 +if 1==0 echo d1||echo d2 else echo d3 +if 1==0 echo e1&echo e2 else echo e3 +if 1==0 echo f1 else echo f2|echo f3 +if 1==0 echo g1 else echo g2&&echo g3 +if 1==0 echo h1 else echo h2||echo h3 +if 1==0 echo i1 else echo i2&echo i3 +if 1==0 echo j1|(echo j2) else echo j3 +echo --- +if 1==0 echo k1&&(echo k2) else echo k3 +if 1==0 echo l1||(echo l2) else echo l3 +if 1==0 echo m1&(echo m2) else echo m3 +if 1==0 (echo n1) else echo n2|echo n3 +if 1==0 (echo o1) else echo o2&&echo o3 +if 1==0 (echo p1) else echo p2||echo p3 +echo --- +if 1==0 (echo q1) else echo q2&echo q3 echo ------------ Testing 'set' ------------ call :setError 0 rem Remove any WINE_FOO* WINE_BA* environment variables from shell before proceeding diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 58f6fae..2df4311 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -363,6 +363,84 @@ q2 r1 r2 r3 +--- chain pipe +@todo_wine@a@space@ +@todo_wine@a@space@ +--- +b2 +c1 +c3 +d1 +@todo_wine@--- +e1 +e3 +f2 +f3 +g2 +@todo_wine@--- +h2 +h3 +i3 +--- chain pipe input +a2:[a1,a2] +b3:[b2:[b1,b2],b3]@or_broken@b3:[b2:,b3] +c4:[c3:[c2:[c1,c2],c3],c4]@or_broken@c4:[c3:[c2:,c3],c4]@or_broken@c4:[c3:,c4] +d2:[d1,d2] +e3:[e2:[e1,e2],e3]@or_broken@e3:[e2:,e3] +f4:[f3:[f2:[f1,f2],f3],f4]@or_broken@f4:[f3:[f2:,f3],f4]@or_broken@f4:[f3:,f4] +--- chain else +a1 +b2 +@todo_wine@--- +@todo_wine@c3 +@todo_wine@--- +@todo_wine@d3 +@todo_wine@--- +@todo_wine@--- +@todo_wine@--- +@todo_wine@--- +@todo_wine@--- +--- chain else (if true) +a1 else echo a2 +b2 else echo b3 +c1 +c2 else echo c3 +d1 +@todo_wine@--- +e1 +e2 else echo e3 +f3 +g1 else echo g2 +g3 +h1 else echo h2 +@todo_wine@--- +i1 else echo i2 +i3 +@todo_wine@j2@space@ +@todo_wine@--- +k1 +k2 +l1 +@todo_wine@--- +m1 +m2 +n1 +o1 +p1 +q1 +--- chain else (if false) +@todo_wine@j3 +--- +k3 +l3 +m3 +n3 +o2 +o3 +p2 +@todo_wine@--- +q2 +q3 ------------ Testing 'set' ------------ 1 0
1
0
0
0
Bruno Jesus : msacm32/tests: Beginnings of a custom driver test.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: f3f49a29d5e4004b544a014beac124c9cc716ca1 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f3f49a29d5e4004b544a014be…
Author: Bruno Jesus <00cpxxx(a)gmail.com> Date: Tue Nov 29 04:10:37 2016 -0200 msacm32/tests: Beginnings of a custom driver test. Signed-off-by: Bruno Jesus <00cpxxx(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msacm32/tests/Makefile.in | 2 +- dlls/msacm32/tests/msacm.c | 166 +++++++++++++++++++++++++++++++++++++++++ include/msacmdrv.h | 1 + 3 files changed, 168 insertions(+), 1 deletion(-) diff --git a/dlls/msacm32/tests/Makefile.in b/dlls/msacm32/tests/Makefile.in index 1b8a2f2..dba7cfe 100644 --- a/dlls/msacm32/tests/Makefile.in +++ b/dlls/msacm32/tests/Makefile.in @@ -1,5 +1,5 @@ TESTDLL = msacm32.dll -IMPORTS = msacm32 +IMPORTS = msacm32 winmm C_SRCS = \ msacm.c diff --git a/dlls/msacm32/tests/msacm.c b/dlls/msacm32/tests/msacm.c index 5ec4717..0816cb0 100644 --- a/dlls/msacm32/tests/msacm.c +++ b/dlls/msacm32/tests/msacm.c @@ -31,6 +31,7 @@ #define NOBITMAP #include "mmreg.h" #include "msacm.h" +#include "msacmdrv.h" static BOOL CALLBACK FormatTagEnumProc(HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd, @@ -829,9 +830,174 @@ todo_wine ok(rc == MMSYSERR_INVALPARAM, "failed with error 0x%x\n", rc); } +static struct +{ + struct + { + int load, free, open, close, enable, disable, install, + remove, details, notify, querycfg, about; + } driver; + struct + { + int tag_details, details, suggest; + } format; + struct + { + int open, close, size, convert, prepare, unprepare, reset; + } stream; + int other; +} driver_calls; + +LRESULT CALLBACK acm_driver_func(DWORD_PTR id, HDRVR handle, UINT msg, LPARAM param1, LPARAM param2) +{ + switch (msg) + { + /* Driver messages */ + case DRV_LOAD: + driver_calls.driver.load++; + return 1; + case DRV_FREE: + driver_calls.driver.free++; + return 1; + case DRV_OPEN: + driver_calls.driver.open++; + return 1; + case DRV_CLOSE: + driver_calls.driver.close++; + return 1; + case DRV_ENABLE: + driver_calls.driver.enable++; + return 1; + case DRV_DISABLE: + driver_calls.driver.disable++; + return 1; + case DRV_QUERYCONFIGURE: + driver_calls.driver.querycfg++; + return 1; + case DRV_INSTALL: + driver_calls.driver.install++; + return DRVCNF_RESTART; + case DRV_REMOVE: + driver_calls.driver.remove++; + return DRVCNF_RESTART; + case ACMDM_DRIVER_ABOUT: + driver_calls.driver.about++; + return MMSYSERR_NOTSUPPORTED; + case ACMDM_DRIVER_DETAILS: + { + ACMDRIVERDETAILSA *ptr = (ACMDRIVERDETAILSA *)param1; + + /* copied from pcmconverter.c */ + ptr->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC; + ptr->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED; + ptr->wMid = MM_MICROSOFT; + ptr->wPid = MM_MSFT_ACM_PCM; + ptr->vdwACM = 0x01000000; + ptr->vdwDriver = 0x01000000; + ptr->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CONVERTER; + ptr->cFormatTags = 1; + ptr->cFilterTags = 0; + ptr->hicon = NULL; + strcpy(ptr->szShortName, "TEST-CODEC"); + strcpy(ptr->szLongName, "Wine Test Codec"); + strcpy(ptr->szCopyright, "Brought to you by the Wine team..."); + strcpy(ptr->szLicensing, "Refer to LICENSE file"); + ptr->szFeatures[0] = 0; + + driver_calls.driver.details++; + break; + } + case ACMDM_DRIVER_NOTIFY: + driver_calls.driver.notify++; + return MMSYSERR_NOTSUPPORTED; + + /* Format messages */ + case ACMDM_FORMATTAG_DETAILS: + driver_calls.format.tag_details++; + break; + case ACMDM_FORMAT_DETAILS: + driver_calls.format.details++; + break; + case ACMDM_FORMAT_SUGGEST: + driver_calls.format.suggest++; + break; + + /* Stream messages */ + case ACMDM_STREAM_OPEN: + driver_calls.stream.open++; + break; + case ACMDM_STREAM_CLOSE: + driver_calls.stream.close++; + break; + case ACMDM_STREAM_SIZE: + driver_calls.stream.size++; + break; + case ACMDM_STREAM_CONVERT: + driver_calls.stream.convert++; + break; + case ACMDM_STREAM_RESET: + driver_calls.stream.reset++; + return MMSYSERR_NOTSUPPORTED; + case ACMDM_STREAM_PREPARE: + driver_calls.stream.prepare++; + break; + case ACMDM_STREAM_UNPREPARE: + driver_calls.stream.unprepare++; + break; + + default: + driver_calls.other++; + return DefDriverProc(id, handle, msg, param1, param2); + } + return MMSYSERR_NOERROR; +} + +static void test_acmDriverAdd(void) +{ + MMRESULT res; + HACMDRIVERID drvid; + union + { + ACMDRIVERDETAILSA drv_details; + } acm; + + /* Driver load steps: + * - acmDriverAdd checks the passed parameters + * - DRV_LOAD message is sent - required + * - DRV_ENABLE message is sent - required + * - DRV_OPEN message is sent - required + * - DRV_DETAILS message is sent - required + * - ACMDM_FORMATTAG_DETAILS message is sent - optional + * - DRV_QUERYCONFIGURE message is sent - optional + * - ACMDM_DRIVER_ABOUT message is sent - optional + */ + + res = acmDriverAddA(&drvid, GetModuleHandleA(NULL), (LPARAM)acm_driver_func, 0, ACM_DRIVERADDF_FUNCTION); + ok(res == MMSYSERR_NOERROR, "Expected 0, got %d\n", res); +todo_wine + ok(driver_calls.driver.open == 1, "Expected 1, got %d\n", driver_calls.driver.open); + ok(driver_calls.driver.details == 1, "Expected 1, got %d\n", driver_calls.driver.details); + + memset(&acm, 0, sizeof(acm)); + res = acmDriverDetailsA(drvid, &acm.drv_details, 0); + ok(res == MMSYSERR_INVALPARAM, "Expected 11, got %d\n", res); + + acm.drv_details.cbStruct = sizeof(acm.drv_details); + res = acmDriverDetailsA(drvid, &acm.drv_details, 0); + ok(res == MMSYSERR_NOERROR, "Expected 0, got %d\n", res); +todo_wine + ok(driver_calls.driver.open == 1, "Expected 1, got %d\n", driver_calls.driver.open); + ok(driver_calls.driver.details == 2, "Expected 2, got %d\n", driver_calls.driver.details); +todo_wine + ok(driver_calls.driver.close == 0, "Expected 0, got %d\n", driver_calls.driver.close); +} + START_TEST(msacm) { driver_tests(); test_prepareheader(); test_acmFormatSuggest(); + /* Test acmDriverAdd in the end as it may conflict + * with other tests due to codec lookup order */ + test_acmDriverAdd(); } diff --git a/include/msacmdrv.h b/include/msacmdrv.h index 3933ea1..09249fc 100644 --- a/include/msacmdrv.h +++ b/include/msacmdrv.h @@ -44,6 +44,7 @@ #define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1) #define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10) +#define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11) #define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20) #define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21)
1
0
0
0
Nikolay Sivov : ntdll: Fix RtlAssert() prototype.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: 1289a860de18934c31f5f60ffbe967fe0bf4e968 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1289a860de18934c31f5f60ff…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Nov 29 09:50:19 2016 +0300 ntdll: Fix RtlAssert() prototype. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/ntdll.spec | 2 +- dlls/ntdll/rtl.c | 5 +++-- dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 4fd944e..57f00c0 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -448,7 +448,7 @@ @ stdcall RtlAreBitsClear(ptr long long) @ stdcall RtlAreBitsSet(ptr long long) # @ stub RtlAssert2 -@ stdcall RtlAssert(ptr ptr long long) +@ stdcall RtlAssert(ptr ptr long str) # @ stub RtlCancelTimer @ stdcall -norelay RtlCaptureContext(ptr) @ stdcall RtlCaptureStackBackTrace(long long ptr ptr) diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c index 3e985d5..c309e10 100644 --- a/dlls/ntdll/rtl.c +++ b/dlls/ntdll/rtl.c @@ -564,9 +564,10 @@ void WINAPI RtlCopyMemory(void *dest, const void *src, SIZE_T len) * NOTES * Not implemented in non-debug versions. */ -void WINAPI RtlAssert(LPVOID x1,LPVOID x2,DWORD x3, DWORD x4) +void WINAPI RtlAssert(void *assertion, void *filename, ULONG linenumber, char *message) { - FIXME("(%p,%p,0x%08x,0x%08x),stub\n",x1,x2,x3,x4); + FIXME("(%s, %s, %u, %s): stub\n", debugstr_a((char*)assertion), debugstr_a((char*)filename), + linenumber, debugstr_a(message)); } /************************************************************************* diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index b379beb..50c442a 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -945,7 +945,7 @@ @ stdcall RtlAreAnyAccessesGranted(long long) ntdll.RtlAreAnyAccessesGranted @ stdcall RtlAreBitsClear(ptr long long) ntdll.RtlAreBitsClear @ stdcall RtlAreBitsSet(ptr long long) ntdll.RtlAreBitsSet -@ stdcall RtlAssert(ptr ptr long long) ntdll.RtlAssert +@ stdcall RtlAssert(ptr ptr long str) ntdll.RtlAssert @ stdcall -norelay RtlCaptureContext(ptr) ntdll.RtlCaptureContext @ stdcall RtlCaptureStackBackTrace(long long ptr ptr) ntdll.RtlCaptureStackBackTrace @ stdcall RtlCharToInteger(ptr long ptr) ntdll.RtlCharToInteger
1
0
0
0
Nikolay Sivov : shell32: Added stub implementation of ICustomDestinationList.
by Alexandre Julliard
29 Nov '16
29 Nov '16
Module: wine Branch: master Commit: 6d89f58ec2935b5e8bebef34e7fbe89291ccc6f7 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6d89f58ec2935b5e8bebef34e…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Nov 29 09:22:54 2016 +0300 shell32: Added stub implementation of ICustomDestinationList. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/shell32/shell32_classes.idl | 6 ++ dlls/shell32/shell32_main.h | 2 + dlls/shell32/shellitem.c | 171 ++++++++++++++++++++++++++++++++++++++- dlls/shell32/shellole.c | 1 + 4 files changed, 179 insertions(+), 1 deletion(-) diff --git a/dlls/shell32/shell32_classes.idl b/dlls/shell32/shell32_classes.idl index f0131e7..68ce2b5 100644 --- a/dlls/shell32/shell32_classes.idl +++ b/dlls/shell32/shell32_classes.idl @@ -148,3 +148,9 @@ coclass KnownFolderManager { interface IKnownFolderManager; } threading(apartment), uuid(53bd6b4e-3780-4693-afc3-7161c2f3ee9c) ] coclass MruLongList { } + +[ + helpstring("Custom Destination List"), + threading(apartment), + uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6) +] coclass DestinationList { interface ICustomDestinationList; } diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h index 8cd1318..47be9c9 100644 --- a/dlls/shell32/shell32_main.h +++ b/dlls/shell32/shell32_main.h @@ -110,6 +110,8 @@ HRESULT IShellLink_ConstructFromFile(IUnknown * pUnkOuter, REFIID riid, LPCITEMI LPEXTRACTICONA IExtractIconA_Constructor(LPCITEMIDLIST) DECLSPEC_HIDDEN; LPEXTRACTICONW IExtractIconW_Constructor(LPCITEMIDLIST) DECLSPEC_HIDDEN; +HRESULT WINAPI CustomDestinationList_Constructor(IUnknown *outer, REFIID riid, void **obj) DECLSPEC_HIDDEN; + /* initialisation for FORMATETC */ #define InitFormatEtc(fe, cf, med) \ {\ diff --git a/dlls/shell32/shellitem.c b/dlls/shell32/shellitem.c index b0af6d6..57f5fa6 100644 --- a/dlls/shell32/shellitem.c +++ b/dlls/shell32/shellitem.c @@ -44,17 +44,25 @@ typedef struct _ShellItem { IPersistIDList IPersistIDList_iface; } ShellItem; +typedef struct _CustomDestinationList { + ICustomDestinationList ICustomDestinationList_iface; + LONG ref; +} CustomDestinationList; + static inline ShellItem *impl_from_IShellItem2(IShellItem2 *iface) { return CONTAINING_RECORD(iface, ShellItem, IShellItem2_iface); } - static inline ShellItem *impl_from_IPersistIDList( IPersistIDList *iface ) { return CONTAINING_RECORD(iface, ShellItem, IPersistIDList_iface); } +static inline CustomDestinationList *impl_from_ICustomDestinationList( ICustomDestinationList *iface ) +{ + return CONTAINING_RECORD(iface, CustomDestinationList, ICustomDestinationList_iface); +} static HRESULT WINAPI ShellItem_QueryInterface(IShellItem2 *iface, REFIID riid, void **ppv) @@ -1322,3 +1330,164 @@ HRESULT WINAPI SHCreateShellItemArrayFromIDLists(UINT cidl, *psia = NULL; return ret; } + +static HRESULT WINAPI CustomDestinationList_QueryInterface(ICustomDestinationList *iface, REFIID riid, void **obj) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), obj); + + if (IsEqualIID(&IID_ICustomDestinationList, riid) || IsEqualIID(&IID_IUnknown, riid)) + { + *obj = &This->ICustomDestinationList_iface; + } + else { + FIXME("not implemented for %s\n", shdebugstr_guid(riid)); + *obj = NULL; + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*obj); + return S_OK; +} + +static ULONG WINAPI CustomDestinationList_AddRef(ICustomDestinationList *iface) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + ULONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p), new refcount=%i\n", This, ref); + + return ref; +} + +static ULONG WINAPI CustomDestinationList_Release(ICustomDestinationList *iface) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p), new refcount=%i\n", This, ref); + + if (ref == 0) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +static HRESULT WINAPI CustomDestinationList_SetAppID(ICustomDestinationList *iface, const WCHAR *appid) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p (%s): stub\n", This, debugstr_w(appid)); + + return E_NOTIMPL; +} + +static HRESULT WINAPI CustomDestinationList_BeginList(ICustomDestinationList *iface, UINT *min_slots, REFIID riid, void **obj) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p (%p %s %p): stub\n", This, min_slots, debugstr_guid(riid), obj); + + return E_NOTIMPL; +} + +static HRESULT WINAPI CustomDestinationList_AppendCategory(ICustomDestinationList *iface, const WCHAR *category, IObjectArray *array) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p (%s %p): stub\n", This, debugstr_w(category), array); + + return E_NOTIMPL; +} + +static HRESULT WINAPI CustomDestinationList_AppendKnownCategory(ICustomDestinationList *iface, KNOWNDESTCATEGORY category) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p (%d): stub\n", This, category); + + return E_NOTIMPL; +} + +static HRESULT WINAPI CustomDestinationList_AddUserTasks(ICustomDestinationList *iface, IObjectArray *tasks) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p (%p): stub\n", This, tasks); + + return E_NOTIMPL; +} + +static HRESULT WINAPI CustomDestinationList_CommitList(ICustomDestinationList *iface) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p: stub\n", This); + + return E_NOTIMPL; +} + +static HRESULT WINAPI CustomDestinationList_GetRemovedDestinations(ICustomDestinationList *iface, REFIID riid, void **obj) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p (%s %p): stub\n", This, debugstr_guid(riid), obj); + + return E_NOTIMPL; +} + +static HRESULT WINAPI CustomDestinationList_DeleteList(ICustomDestinationList *iface, const WCHAR *appid) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p (%s): stub\n", This, debugstr_w(appid)); + + return E_NOTIMPL; +} + +static HRESULT WINAPI CustomDestinationList_AbortList(ICustomDestinationList *iface) +{ + CustomDestinationList *This = impl_from_ICustomDestinationList(iface); + + FIXME("%p: stub\n", This); + + return E_NOTIMPL; +} + +static const ICustomDestinationListVtbl CustomDestinationListVtbl = +{ + CustomDestinationList_QueryInterface, + CustomDestinationList_AddRef, + CustomDestinationList_Release, + CustomDestinationList_SetAppID, + CustomDestinationList_BeginList, + CustomDestinationList_AppendCategory, + CustomDestinationList_AppendKnownCategory, + CustomDestinationList_AddUserTasks, + CustomDestinationList_CommitList, + CustomDestinationList_GetRemovedDestinations, + CustomDestinationList_DeleteList, + CustomDestinationList_AbortList +}; + +HRESULT WINAPI CustomDestinationList_Constructor(IUnknown *outer, REFIID riid, void **obj) +{ + CustomDestinationList *list; + HRESULT hr; + + TRACE("%p %s %p\n", outer, debugstr_guid(riid), obj); + + if (outer) + return CLASS_E_NOAGGREGATION; + + if(!(list = HeapAlloc(GetProcessHeap(), 0, sizeof(*list)))) + return E_OUTOFMEMORY; + + list->ICustomDestinationList_iface.lpVtbl = &CustomDestinationListVtbl; + list->ref = 1; + + hr = ICustomDestinationList_QueryInterface(&list->ICustomDestinationList_iface, riid, obj); + ICustomDestinationList_Release(&list->ICustomDestinationList_iface); + return hr; +} diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c index f034951..dd54900 100644 --- a/dlls/shell32/shellole.c +++ b/dlls/shell32/shellole.c @@ -83,6 +83,7 @@ static const struct { {&CLSID_ExplorerBrowser,ExplorerBrowser_Constructor}, {&CLSID_KnownFolderManager, KnownFolderManager_Constructor}, {&CLSID_Shell, IShellDispatch_Constructor}, + {&CLSID_DestinationList, CustomDestinationList_Constructor}, {NULL, NULL} };
1
0
0
0
← Newer
1
2
3
4
5
6
7
8
...
47
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
Results per page:
10
25
50
100
200