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
February 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
755 discussions
Start a n
N
ew thread
Francois Gouget : shell32/tests: Take into account the Windows 10 DDE race condition.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: c8bc68ecb4d8b4c2adc429fef23f13b3795643b2 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=c8bc68ecb4d8b4c2adc429fef…
Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Tue Feb 16 02:50:14 2016 +0100 shell32/tests: Take into account the Windows 10 DDE race condition. Also improve the description of this race condition. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/shell32/tests/shlexec.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/dlls/shell32/tests/shlexec.c b/dlls/shell32/tests/shlexec.c index 9cfe3de..e003356 100644 --- a/dlls/shell32/tests/shlexec.c +++ b/dlls/shell32/tests/shlexec.c @@ -146,6 +146,7 @@ static char* getChildString(const char* sect, const char* key) * ***/ +#define CHILD_DDE_TIMEOUT 2500 static DWORD ddeInst; static HSZ hszTopic; static char ddeExec[MAX_PATH], ddeApplication[MAX_PATH]; @@ -270,7 +271,7 @@ static void doChild(int argc, char** argv) hdde = DdeNameService(ddeInst, hszApplication, 0, DNS_REGISTER | DNS_FILTEROFF); ok(hdde != NULL, "DdeNameService() failed le=%u\n", GetLastError()); - timer = SetTimer(NULL, 0, 2500, childTimeout); + timer = SetTimer(NULL, 0, CHILD_DDE_TIMEOUT, childTimeout); dde_ready = OpenEventA(EVENT_MODIFY_STATE, FALSE, "winetest_shlexec_dde_ready"); SetEvent(dde_ready); @@ -2350,18 +2351,23 @@ static void test_dde(void) GetLastError() == ERROR_FILE_NOT_FOUND && strcmp(winetest_platform, "windows") == 0) { - /* Windows 10 does not call WaitForInputIdle() for DDE, which - * breaks the tests. So force the call by adding - * SEE_MASK_WAITFORINPUTIDLE. + /* Windows 10 does not call WaitForInputIdle() for DDE which creates + * a race condition as the DDE server may not have time to start up. + * When that happens the test fails with the above results and we + * compensate by forcing the WaitForInputIdle() call. */ trace("Adding SEE_MASK_WAITFORINPUTIDLE for Windows 10\n"); ddeflags |= SEE_MASK_WAITFORINPUTIDLE; delete_test_association(".sde"); + Sleep(CHILD_DDE_TIMEOUT); continue; } okShell(32 < rc, "failed: rc=%lu err=%u\n", rc, GetLastError()); if (test->ddeexec) - okShell(waitforinputidle_count == 1, "WaitForInputIdle() was called %u times\n", waitforinputidle_count); + okShell(waitforinputidle_count == 1 || + broken(waitforinputidle_count == 0) /* Win10 race */, + "WaitForInputIdle() was called %u times\n", + waitforinputidle_count); else okShell(waitforinputidle_count == 0, "WaitForInputIdle() was called %u times for a non-DDE case\n", waitforinputidle_count);
1
0
0
0
Francois Gouget : shell32/tests: Use todo_wine_if() in tests.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: e48a569434855a3d91b083f282ae66c0674f728f URL:
http://source.winehq.org/git/wine.git/?a=commit;h=e48a569434855a3d91b083f28…
Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Tue Feb 16 02:49:48 2016 +0100 shell32/tests: Use todo_wine_if() in tests. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/shell32/tests/shlexec.c | 185 ++++++++----------------------------------- 1 file changed, 31 insertions(+), 154 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=e48a569434855a3d91b08…
1
0
0
0
André Hentschel : advapi32/tests: Use todo_wine_if() in tests.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: 4684dc2bfbf739ceae27694a4cefcdcbe6f33560 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=4684dc2bfbf739ceae27694a4…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Mon Feb 15 23:14:46 2016 +0100 advapi32/tests: Use todo_wine_if() in tests. Signed-off-by: André Hentschel <nerv(a)dawncrow.de> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/advapi32/tests/security.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 742ede1..881b3ec 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -5210,11 +5210,8 @@ static void test_named_pipe_security(HANDLE token) ok(ret, "DuplicateHandle error %d\n", GetLastError()); access = get_obj_access(dup); - if (map[i].todo) -todo_wine - ok(access == map[i].mapped, "%d: expected %#x, got %#x\n", i, map[i].mapped, access); - else - ok(access == map[i].mapped, "%d: expected %#x, got %#x\n", i, map[i].mapped, access); + todo_wine_if (map[i].todo) + ok(access == map[i].mapped, "%d: expected %#x, got %#x\n", i, map[i].mapped, access); CloseHandle(dup); }
1
0
0
0
André Hentschel : reg/tests: Use todo_wine_if() in tests.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: d15a807c3cdd5f7d5cdcf8e5a7abcb198d9b0fc5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d15a807c3cdd5f7d5cdcf8e5a…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Mon Feb 15 23:14:42 2016 +0100 reg/tests: Use todo_wine_if() in tests. Signed-off-by: André Hentschel <nerv(a)dawncrow.de> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/reg/tests/reg.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c index 80fc7d3..4b780b0 100644 --- a/programs/reg/tests/reg.c +++ b/programs/reg/tests/reg.c @@ -72,17 +72,11 @@ static void verify_reg_(unsigned line, HKEY hkey, const char* value, if (err != ERROR_SUCCESS) return; - if (todo & TODO_REG_TYPE) - todo_wine lok(type == exp_type, "got wrong type %d, expected %d\n", type, exp_type); - else + todo_wine_if (todo & TODO_REG_TYPE) lok(type == exp_type, "got wrong type %d, expected %d\n", type, exp_type); - if (todo & TODO_REG_SIZE) - todo_wine lok(size == exp_size, "got wrong size %d, expected %d\n", size, exp_size); - else + todo_wine_if (todo & TODO_REG_SIZE) lok(size == exp_size, "got wrong size %d, expected %d\n", size, exp_size); - if (todo & TODO_REG_DATA) - todo_wine lok(memcmp(data, exp_data, size) == 0, "got wrong data\n"); - else + todo_wine_if (todo & TODO_REG_DATA) lok(memcmp(data, exp_data, size) == 0, "got wrong data\n"); }
1
0
0
0
André Hentschel : wininet/tests: Use todo_wine_if() in tests.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: 676e615613f3cf70f0e1e9ca9569813a8add9504 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=676e615613f3cf70f0e1e9ca9…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Mon Feb 15 23:14:40 2016 +0100 wininet/tests: Use todo_wine_if() in tests. Signed-off-by: André Hentschel <nerv(a)dawncrow.de> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wininet/tests/http.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c index ee347f9..36710b7 100644 --- a/dlls/wininet/tests/http.c +++ b/dlls/wininet/tests/http.c @@ -207,9 +207,7 @@ static void _test_status_code(unsigned line, HINTERNET req, DWORD excode, BOOL i size = sizeof(code); res = HttpQueryInfoA(req, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &code, &size, NULL); ok_(__FILE__,line)(res, "[1] HttpQueryInfoA(HTTP_QUERY_STATUS_CODE|number) failed: %u\n", GetLastError()); - if (is_todo) - todo_wine ok_(__FILE__,line)(code == excode, "code = %d, expected %d\n", code, excode); - else + todo_wine_if (is_todo) ok_(__FILE__,line)(code == excode, "code = %d, expected %d\n", code, excode); ok_(__FILE__,line)(size == sizeof(code), "size = %u\n", size); @@ -218,10 +216,8 @@ static void _test_status_code(unsigned line, HINTERNET req, DWORD excode, BOOL i size = sizeof(code); res = HttpQueryInfoA(req, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &code, &size, &index); ok_(__FILE__,line)(res, "[2] HttpQueryInfoA(HTTP_QUERY_STATUS_CODE|number index) failed: %u\n", GetLastError()); - if (is_todo) - todo_wine ok_(__FILE__,line)(code == excode, "code = %d, expected %d\n", code, excode); - else - ok_(__FILE__,line)(!index, "index = %d, expected 0\n", code); + todo_wine_if (is_todo) + ok_(__FILE__,line)(!index, "index = %d, expected 0\n", index); ok_(__FILE__,line)(size == sizeof(code), "size = %u\n", size); sprintf(exbuf, "%u", excode); @@ -229,9 +225,7 @@ static void _test_status_code(unsigned line, HINTERNET req, DWORD excode, BOOL i size = sizeof(bufa); res = HttpQueryInfoA(req, HTTP_QUERY_STATUS_CODE, bufa, &size, NULL); ok_(__FILE__,line)(res, "[3] HttpQueryInfoA(HTTP_QUERY_STATUS_CODE) failed: %u\n", GetLastError()); - if (is_todo) - todo_wine ok_(__FILE__,line)(!strcmp(bufa, exbuf), "unexpected status code %s, expected %s\n", bufa, exbuf); - else + todo_wine_if (is_todo) ok_(__FILE__,line)(!strcmp(bufa, exbuf), "unexpected status code %s, expected %s\n", bufa, exbuf); ok_(__FILE__,line)(size == strlen(exbuf), "unexpected size %d for \"%s\"\n", size, exbuf); @@ -244,9 +238,7 @@ static void _test_status_code(unsigned line, HINTERNET req, DWORD excode, BOOL i size = sizeof(bufw); res = HttpQueryInfoW(req, HTTP_QUERY_STATUS_CODE, bufw, &size, NULL); ok_(__FILE__,line)(res, "[5] HttpQueryInfoW(HTTP_QUERY_STATUS_CODE) failed: %u\n", GetLastError()); - if (is_todo) - todo_wine ok_(__FILE__,line)(!strcmp_wa(bufw, exbuf), "unexpected status code %s, expected %s\n", bufa, exbuf); - else + todo_wine_if (is_todo) ok_(__FILE__,line)(!strcmp_wa(bufw, exbuf), "unexpected status code %s, expected %s\n", bufa, exbuf); ok_(__FILE__,line)(size == strlen(exbuf)*sizeof(WCHAR), "unexpected size %d for \"%s\"\n", size, exbuf); @@ -291,10 +283,8 @@ static void _test_request_flags(unsigned line, HINTERNET req, DWORD exflags, BOO /* FIXME: Remove once we have INTERNET_REQFLAG_CACHE_WRITE_DISABLED implementation */ flags &= ~INTERNET_REQFLAG_CACHE_WRITE_DISABLED; - if(!is_todo) + todo_wine_if (is_todo) ok_(__FILE__,line)(flags == exflags, "flags = %x, expected %x\n", flags, exflags); - else - todo_wine ok_(__FILE__,line)(flags == exflags, "flags = %x, expected %x\n", flags, exflags); } #define test_http_version(a) _test_http_version(__LINE__,a)
1
0
0
0
André Hentschel : gdiplus/tests: Use todo_wine_if() in tests.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: 1ff3264debed2900af9cc3242779ec37836d8a2b URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1ff3264debed2900af9cc3242…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Mon Feb 15 23:14:36 2016 +0100 gdiplus/tests: Use todo_wine_if() in tests. Signed-off-by: André Hentschel <nerv(a)dawncrow.de> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/gdiplus/tests/graphicspath.c | 11 ++--------- dlls/gdiplus/tests/image.c | 14 ++++---------- dlls/gdiplus/tests/metafile.c | 22 +++++----------------- 3 files changed, 11 insertions(+), 36 deletions(-) diff --git a/dlls/gdiplus/tests/graphicspath.c b/dlls/gdiplus/tests/graphicspath.c index aa44911..400123c 100644 --- a/dlls/gdiplus/tests/graphicspath.c +++ b/dlls/gdiplus/tests/graphicspath.c @@ -87,10 +87,7 @@ static void ok_path(GpPath* path, const path_test_t *expected, INT expected_size return; } - if(todo_size) todo_wine - ok(size == expected_size, "Path size %d does not match expected size %d\n", - size, expected_size); - else + todo_wine_if (todo_size) ok(size == expected_size, "Path size %d does not match expected size %d\n", size, expected_size); @@ -113,11 +110,7 @@ static void ok_path(GpPath* path, const path_test_t *expected, INT expected_size stringify_point_type(expected[eidx].type, ename); stringify_point_type(types[idx], name); - if (expected[eidx].todo || numskip) todo_wine - ok(match, "Expected #%d: %s (%.1f,%.1f) but got %s (%.1f,%.1f)\n", eidx, - ename, expected[eidx].X, expected[eidx].Y, - name, points[idx].X, points[idx].Y); - else + todo_wine_if (expected[eidx].todo || numskip) ok(match, "Expected #%d: %s (%.1f,%.1f) but got %s (%.1f,%.1f)\n", eidx, ename, expected[eidx].X, expected[eidx].Y, name, points[idx].X, points[idx].Y); diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c index 6be4a5b..6a51714 100644 --- a/dlls/gdiplus/tests/image.c +++ b/dlls/gdiplus/tests/image.c @@ -55,9 +55,7 @@ static void expect_guid(REFGUID expected, REFGUID got, int line, BOOL todo) WideCharToMultiByte(CP_ACP, 0, bufferW, sizeof(bufferW)/sizeof(bufferW[0]), buffer, sizeof(buffer), NULL, NULL); StringFromGUID2(expected, bufferW, sizeof(bufferW)/sizeof(bufferW[0])); WideCharToMultiByte(CP_ACP, 0, bufferW, sizeof(bufferW)/sizeof(bufferW[0]), buffer2, sizeof(buffer2), NULL, NULL); - if(todo) - todo_wine ok_(__FILE__, line)(IsEqualGUID(expected, got), "Expected %s, got %s\n", buffer2, buffer); - else + todo_wine_if (todo) ok_(__FILE__, line)(IsEqualGUID(expected, got), "Expected %s, got %s\n", buffer2, buffer); } @@ -4298,10 +4296,8 @@ static void test_DrawImage_scale(void) expect(Ok, status); match = memcmp(dst_8x1, td[i].image, sizeof(dst_8x1)) == 0; - if (!match && td[i].todo) - todo_wine ok(match, "%d: data should match\n", i); - else - ok(match, "%d: data should match\n", i); + todo_wine_if (!match && td[i].todo) + ok(match, "%d: data should match\n", i); if (!match) { UINT i, size = sizeof(dst_8x1); @@ -4679,9 +4675,7 @@ static void test_supported_encoders(void) ok(hr == S_OK, "CreateStreamOnHGlobal error %#x\n", hr); status = GdipSaveImageToStream((GpImage *)bm, stream, &clsid, NULL); - if (td[i].todo) - todo_wine ok(status == Ok, "GdipSaveImageToStream error %d\n", status); - else + todo_wine_if (td[i].todo) ok(status == Ok, "GdipSaveImageToStream error %d\n", status); IStream_Release(stream); diff --git a/dlls/gdiplus/tests/metafile.c b/dlls/gdiplus/tests/metafile.c index a4b3f59..0c52718 100644 --- a/dlls/gdiplus/tests/metafile.c +++ b/dlls/gdiplus/tests/metafile.c @@ -47,11 +47,7 @@ typedef struct emfplus_check_state static void check_record(int count, const char *desc, const struct emfplus_record *expected, const struct emfplus_record *actual) { - if (expected->todo) - todo_wine ok(expected->record_type == actual->record_type, - "%s.%i: Expected record type 0x%x, got 0x%x\n", desc, count, - expected->record_type, actual->record_type); - else + todo_wine_if (expected->todo) ok(expected->record_type == actual->record_type, "%s.%i: Expected record type 0x%x, got 0x%x\n", desc, count, expected->record_type, actual->record_type); @@ -142,9 +138,7 @@ static void check_emfplus(HENHMETAFILE hemf, const emfplus_record *expected, con EnumEnhMetaFile(0, hemf, enum_emf_proc, &state, NULL); - if (expected[state.count].todo) - todo_wine ok(expected[state.count].record_type == 0, "%s: Got %i records, expecting more\n", desc, state.count); - else + todo_wine_if (expected[state.count].todo) ok(expected[state.count].record_type == 0, "%s: Got %i records, expecting more\n", desc, state.count); } @@ -196,9 +190,7 @@ static void check_metafile(GpMetafile *metafile, const emfplus_record *expected, 3, src_rect, src_unit, enum_metafile_proc, &state, NULL); expect(Ok, stat); - if (expected[state.count].todo) - todo_wine ok(expected[state.count].record_type == 0, "%s: Got %i records, expecting more\n", desc, state.count); - else + todo_wine_if (expected[state.count].todo) ok(expected[state.count].record_type == 0, "%s: Got %i records, expecting more\n", desc, state.count); GdipDeleteGraphics(graphics); @@ -216,17 +208,13 @@ static BOOL CALLBACK play_metafile_proc(EmfPlusRecordType record_type, unsigned if (state->expected[state->count].record_type) { - if (state->expected[state->count].playback_todo) - todo_wine ok(stat == Ok, "%s.%i: GdipPlayMetafileRecord failed with stat %i\n", state->desc, state->count, stat); - else + todo_wine_if (state->expected[state->count].playback_todo) ok(stat == Ok, "%s.%i: GdipPlayMetafileRecord failed with stat %i\n", state->desc, state->count, stat); state->count++; } else { - if (state->expected[state->count].playback_todo) - todo_wine ok(0, "%s: too many records\n", state->desc); - else + todo_wine_if (state->expected[state->count].playback_todo) ok(0, "%s: too many records\n", state->desc); return FALSE;
1
0
0
0
André Hentschel : crypt32/tests: Use todo_wine_if() in tests.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: ad1a4ecdc5713f064a7af2296f1969cd1abbcf66 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ad1a4ecdc5713f064a7af2296…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Mon Feb 15 23:14:32 2016 +0100 crypt32/tests: Use todo_wine_if() in tests. Signed-off-by: André Hentschel <nerv(a)dawncrow.de> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/crypt32/tests/chain.c | 90 ++++++---------------------------------------- dlls/crypt32/tests/store.c | 11 ++---- dlls/crypt32/tests/str.c | 55 +++++----------------------- 3 files changed, 20 insertions(+), 136 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=ad1a4ecdc5713f064a7af…
1
0
0
0
Nikolay Sivov : include: Add initial dwrite_3.idl.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: 9cf095a1d4224c5a535b10e3156e5e746b462b7d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=9cf095a1d4224c5a535b10e31…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Feb 16 02:25:39 2016 +0300 include: Add initial dwrite_3.idl. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/Makefile.in | 1 + include/dwrite_3.idl | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 216 insertions(+) diff --git a/include/Makefile.in b/include/Makefile.in index 010abe5..8224e28 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -58,6 +58,7 @@ IDL_SRCS = \ dwrite.idl \ dwrite_1.idl \ dwrite_2.idl \ + dwrite_3.idl \ dxgi.idl \ dxgi1_2.idl \ dxva2api.idl \ diff --git a/include/dwrite_3.idl b/include/dwrite_3.idl new file mode 100644 index 0000000..410e693 --- /dev/null +++ b/include/dwrite_3.idl @@ -0,0 +1,215 @@ +/* + * Copyright 2016 Nikolay Sivov for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "dwrite_2.idl"; + +interface IDWriteFontFaceReference; +interface IDWriteFontFace3; +interface IDWriteFont3; +interface IDWriteFontSet; + +typedef enum DWRITE_LOCALITY +{ + DWRITE_LOCALITY_REMOTE, + DWRITE_LOCALITY_PARTIAL, + DWRITE_LOCALITY_LOCAL +} DWRITE_LOCALITY; + +typedef enum DWRITE_RENDERING_MODE1 +{ + DWRITE_RENDERING_MODE1_DEFAULT, + DWRITE_RENDERING_MODE1_ALIASED, + DWRITE_RENDERING_MODE1_GDI_CLASSIC, + DWRITE_RENDERING_MODE1_GDI_NATURAL, + DWRITE_RENDERING_MODE1_NATURAL, + DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC, + DWRITE_RENDERING_MODE1_OUTLINE, + DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC_DOWNSAMPLED +} DWRITE_RENDERING_MODE1; + +[ + local, + object, + uuid(b7924baa-391b-412a-8c5c-e44cc2d867dc) +] +interface IDWriteRenderingParams3 : IDWriteRenderingParams2 +{ + DWRITE_RENDERING_MODE1 GetRenderingMode1(); +} + +[ + local, + object, + uuid(da20d8ef-812a-4c43-9802-62ec4abd7adf) +] +interface IDWriteFontFamily1 : IDWriteFontFamily +{ + DWRITE_LOCALITY GetFontLocality(UINT32 index); + HRESULT GetFont(UINT32 index, IDWriteFont3 **font); + HRESULT GetFontFaceReference(UINT32 index, IDWriteFontFaceReference **reference); +} + +[ + local, + object, + uuid(53585141-d9f8-4095-8321-d73cf6bd116c) +] +interface IDWriteFontCollection1 : IDWriteFontCollection +{ + HRESULT GetFontSet(IDWriteFontSet **fontset); + HRESULT GetFontFamily(UINT32 index, IDWriteFontFamily1 **family); +} + +[ + local, + object, + uuid(5e7fa7ca-dde3-424c-89f0-9fcd6fed58cd) +] +interface IDWriteFontFaceReference : IUnknown +{ + HRESULT CreateFontFace(IDWriteFontFace3 **fontface); + HRESULT CreateFontFaceWithSimulations(DWRITE_FONT_SIMULATIONS simulations, + IDWriteFontFace3 **fontface); + BOOL Equals(IDWriteFontFaceReference *reference); + UINT32 GetFontFaceIndex(); + DWRITE_FONT_SIMULATIONS GetSimulations(); + HRESULT GetFontFile(IDWriteFontFile **fontfile); + UINT64 GetLocalFileSize(); + UINT64 GetFileSize(); + HRESULT GetFileTime(FILETIME *writetime); + DWRITE_LOCALITY GetLocality(); + HRESULT EnqueueFontDownloadRequest(); + HRESULT EnqueueCharacterDownloadRequest(WCHAR const *chars, UINT32 count); + HRESULT EnqueueGlyphDownloadRequest(UINT16 const *glyphs, UINT32 count); + HRESULT EnqueueFileFragmentDownloadRequest(UINT64 offset, UINT64 size); +} + +[ + local, + object, + uuid(da20d8ef-812a-4c43-9802-62ec4abd7ade) +] +interface IDWriteFontList1 : IDWriteFontList +{ + DWRITE_LOCALITY GetFontLocality(UINT32 index); + HRESULT GetFont(UINT32 index, IDWriteFont3 **font); + HRESULT GetFontFaceReference(UINT32 index, IDWriteFontFaceReference **reference); +} + +[ + local, + object, + uuid(d37d7598-09be-4222-a236-2081341cc1f2) +] +interface IDWriteFontFace3 : IDWriteFontFace2 +{ + HRESULT GetFontFaceReference(IDWriteFontFaceReference **reference); + void GetPanose(DWRITE_PANOSE *panose); + DWRITE_FONT_WEIGHT GetWeight(); + DWRITE_FONT_STRETCH GetStretch(); + DWRITE_FONT_STYLE GetStyle(); + HRESULT GetFamilyNames(IDWriteLocalizedStrings **names); + HRESULT GetFaceNames(IDWriteLocalizedStrings **names); + HRESULT GetInformationalStrings(DWRITE_INFORMATIONAL_STRING_ID stringid, + IDWriteLocalizedStrings **strings, + BOOL *exists); + BOOL HasCharacter(UINT32 character); + HRESULT GetRecommendedRenderingMode( + FLOAT emsize, + FLOAT dpi_x, + FLOAT dpi_y, + DWRITE_MATRIX const *transform, + BOOL is_sideways, + DWRITE_OUTLINE_THRESHOLD threshold, + DWRITE_MEASURING_MODE measuring_mode, + IDWriteRenderingParams *params, + DWRITE_RENDERING_MODE1 *rendering_mode, + DWRITE_GRID_FIT_MODE *gridfit_mode); + BOOL IsCharacterLocal(UINT32 character); + BOOL IsGlyphLocal(UINT16 glyph); + HRESULT AreCharactersLocal(WCHAR const *characters, + UINT32 count, BOOL enqueue_if_not, BOOL *are_local); + HRESULT AreGlyphsLocal(UINT16 *const glyphs, UINT32 count, + BOOL enqueue_if_not, BOOL *are_local); +} + +[ + local, + object, + uuid(cfee3140-1257-47ca-8b85-31bfcf3f2d0e) +] +interface IDWriteStringList : IUnknown +{ + UINT32 GetCount(); + HRESULT GetLocaleNameLength(UINT32 index, UINT32 *length); + HRESULT GetLocaleName(UINT32 index, WCHAR *name, UINT32 size); + HRESULT GetStringLength(UINT32 index, UINT32 *length); + HRESULT GetString(UINT32 index, WCHAR *string, UINT32 size); +} + +typedef struct DWRITE_LINE_METRICS1 +{ + UINT32 length; + UINT32 trailingWhitespaceLength; + UINT32 newlineLength; + FLOAT height; + FLOAT baseline; + BOOL isTrimmed; + FLOAT leadingBefore; + FLOAT leadingAfter; +} DWRITE_LINE_METRICS1; + +typedef enum DWRITE_FONT_LINE_GAP_USAGE +{ + DWRITE_FONT_LINE_GAP_USAGE_DEFAULT, + DWRITE_FONT_LINE_GAP_USAGE_DISABLED, + DWRITE_FONT_LINE_GAP_USAGE_ENABLED +} DWRITE_FONT_LINE_GAP_USAGE; + +typedef struct DWRITE_LINE_SPACING +{ + DWRITE_LINE_SPACING_METHOD method; + FLOAT height; + FLOAT baseline; + FLOAT leadingBefore; + DWRITE_FONT_LINE_GAP_USAGE fontLineGapUsage; +} DWRITE_LINE_SPACING; + +[ + local, + object, + uuid(f67e0edd-9e3d-4ecc-8c32-4183253dfe70) +] +interface IDWriteTextFormat2 : IDWriteTextFormat1 +{ + HRESULT SetLineSpacing(DWRITE_LINE_SPACING const *spacing); + HRESULT GetLineSpacing(DWRITE_LINE_SPACING *spacing); +} + +[ + local, + object, + uuid(07ddcd52-020e-4de8-ac33-6c953d83f92d) +] +interface IDWriteTextLayout3 : IDWriteTextLayout2 +{ + HRESULT InvalidateLayout(); + HRESULT SetLineSpacing(DWRITE_LINE_SPACING const *spacing); + HRESULT GetLineSpacing(DWRITE_LINE_SPACING *spacing); + HRESULT GetLineMetrics(DWRITE_LINE_METRICS1 *metrics, UINT32 max_count, UINT32 *count); +}
1
0
0
0
Nikolay Sivov : dwrite: Always use system font collection to create fallback fonts.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: 5ec7a860bf7e5822f397c5b900836235b29d19a8 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5ec7a860bf7e5822f397c5b90…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Feb 16 00:59:27 2016 +0300 dwrite: Always use system font collection to create fallback fonts. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dwrite/analyzer.c | 41 +++++++++++++++++++---------------------- dlls/dwrite/tests/layout.c | 1 - 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c index 30f54d7..891ace4 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -199,6 +199,7 @@ static const struct fallback_mapping fontfallback_neutral_data[] = { struct dwrite_fontfallback { IDWriteFontFallback IDWriteFontFallback_iface; IDWriteFactory2 *factory; + IDWriteFontCollection *systemcollection; const struct fallback_mapping *mappings; UINT32 count; }; @@ -1810,8 +1811,7 @@ static HRESULT fallback_map_characters(IDWriteFont *font, const WCHAR *text, UIN } static HRESULT fallback_get_fallback_font(struct dwrite_fontfallback *fallback, const WCHAR *text, UINT32 length, - IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style, DWRITE_FONT_STRETCH stretch, - UINT32 *mapped_length, IDWriteFont **mapped_font) + DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style, DWRITE_FONT_STRETCH stretch, UINT32 *mapped_length, IDWriteFont **mapped_font) { const struct fallback_mapping *mapping; HRESULT hr; @@ -1823,7 +1823,7 @@ static HRESULT fallback_get_fallback_font(struct dwrite_fontfallback *fallback, } /* now let's see what fallback can handle */ - hr = create_matching_font(collection, mapping->family, weight, style, stretch, mapped_font); + hr = create_matching_font(fallback->systemcollection, mapping->family, weight, style, stretch, mapped_font); if (FAILED(hr)) { WARN("failed to create fallback font %s for range [0x%x,0x%x], 0x%08x\n", debugstr_w(mapping->family), mapping->range.first, mapping->range.last, hr); @@ -1865,21 +1865,14 @@ static HRESULT WINAPI fontfallback_MapCharacters(IDWriteFontFallback *iface, IDW if (length == 0) return S_OK; - if (!basecollection) { - hr = IDWriteFactory2_GetSystemFontCollection(fallback->factory, &basecollection, FALSE); - if (FAILED(hr)) - return hr; - } - else - IDWriteFontCollection_AddRef(basecollection); + if (!basecollection) + basecollection = fallback->systemcollection; hr = get_text_source_ptr(source, position, length, &text, &buff); if (FAILED(hr)) goto done; if (basefamily && *basefamily) { - IDWriteFont *mapped_font; - hr = create_matching_font(basecollection, basefamily, weight, style, stretch, ret_font); if (FAILED(hr)) goto done; @@ -1887,25 +1880,27 @@ static HRESULT WINAPI fontfallback_MapCharacters(IDWriteFontFallback *iface, IDW hr = fallback_map_characters(*ret_font, text, length, mapped_length); if (FAILED(hr)) goto done; + } - if (!*mapped_length) { - hr = fallback_get_fallback_font(fallback, text, length, basecollection, weight, style, stretch, mapped_length, &mapped_font); - if (FAILED(hr)) { + if (!*mapped_length) { + IDWriteFont *mapped_font; + + hr = fallback_get_fallback_font(fallback, text, length, weight, style, stretch, mapped_length, &mapped_font); + if (FAILED(hr)) { + /* fallback wasn't found, keep base font if any, so we can get at least some visual output */ + if (*ret_font) { *mapped_length = length; hr = S_OK; - goto done; } - else { + } + else { + if (*ret_font) IDWriteFont_Release(*ret_font); - *ret_font = mapped_font; - } + *ret_font = mapped_font; } } - else - hr = fallback_get_fallback_font(fallback, text, length, basecollection, weight, style, stretch, mapped_length, ret_font); done: - IDWriteFontCollection_Release(basecollection); heap_free(buff); return hr; } @@ -1931,6 +1926,7 @@ HRESULT create_system_fontfallback(IDWriteFactory2 *factory, IDWriteFontFallback fallback->factory = factory; fallback->mappings = fontfallback_neutral_data; fallback->count = sizeof(fontfallback_neutral_data)/sizeof(fontfallback_neutral_data[0]); + IDWriteFactory2_GetSystemFontCollection(fallback->factory, &fallback->systemcollection, FALSE); *ret = &fallback->IDWriteFontFallback_iface; return S_OK; @@ -1939,5 +1935,6 @@ HRESULT create_system_fontfallback(IDWriteFactory2 *factory, IDWriteFontFallback void release_system_fontfallback(IDWriteFontFallback *iface) { struct dwrite_fontfallback *fallback = impl_from_IDWriteFontFallback(iface); + IDWriteFontCollection_Release(fallback->systemcollection); heap_free(fallback); } diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c index b3e0df0..0fe9151 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c @@ -4200,7 +4200,6 @@ static HRESULT WINAPI fontcollection_FindFamilyName(IDWriteFontCollection *iface *exists = TRUE; return S_OK; } -todo_wine ok(0, "unexpected call, name %s\n", wine_dbgstr_w(name)); return E_NOTIMPL; }
1
0
0
0
Nikolay Sivov : dwrite: Add fallback data for some of Japanese ranges.
by Alexandre Julliard
16 Feb '16
16 Feb '16
Module: wine Branch: master Commit: 1a92176b6741cc27e3ea2d472d6365bc281b7ca5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1a92176b6741cc27e3ea2d472…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Feb 16 00:59:26 2016 +0300 dwrite: Add fallback data for some of Japanese ranges. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dwrite/analyzer.c | 23 ++++++++++++++++------- dlls/dwrite/tests/layout.c | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c index 1b52eb7..30f54d7 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -191,6 +191,8 @@ struct fallback_mapping { }; static const struct fallback_mapping fontfallback_neutral_data[] = { + { { 0x3000, 0x30ff }, meiryoW }, /* CJK Symbols and Punctuation, Hiragana, Katakana */ + { { 0x31f0, 0x31ff }, meiryoW }, /* Katakana Phonetic Extensions */ { { 0x4e00, 0x9fff }, meiryoW }, /* CJK Unified Ideographs */ }; @@ -1736,16 +1738,23 @@ static ULONG WINAPI fontfallback_Release(IDWriteFontFallback *iface) return IDWriteFactory2_Release(fallback->factory); } -static const struct fallback_mapping *find_fallback_mapping(struct dwrite_fontfallback *fallback, UINT32 ch) +static int compare_fallback_mapping(const void *a, const void *b) { - UINT32 i; + UINT32 ch = *(UINT32*)a; + struct fallback_mapping *mapping = (struct fallback_mapping*)b; - for (i = 0; i < fallback->count; i++) { - if (fallback->mappings[i].range.first <= ch && fallback->mappings[i].range.last >= ch) - return &fallback->mappings[i]; - } + if (ch > mapping->range.last) + return 1; + else if (ch < mapping->range.first) + return -1; + else + return 0; +} - return NULL; +static const struct fallback_mapping *find_fallback_mapping(struct dwrite_fontfallback *fallback, UINT32 ch) +{ + return bsearch(&ch, fallback->mappings, fallback->count, sizeof(*fallback->mappings), + compare_fallback_mapping); } HRESULT create_matching_font(IDWriteFontCollection *collection, const WCHAR *name, diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c index 0fe9151..b3e0df0 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c @@ -4200,6 +4200,7 @@ static HRESULT WINAPI fontcollection_FindFamilyName(IDWriteFontCollection *iface *exists = TRUE; return S_OK; } +todo_wine ok(0, "unexpected call, name %s\n", wine_dbgstr_w(name)); return E_NOTIMPL; }
1
0
0
0
← Newer
1
...
29
30
31
32
33
34
35
...
76
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
Results per page:
10
25
50
100
200