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
September 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
1 participants
553 discussions
Start a n
N
ew thread
Robert Wilhelm : scrrun: Test whether IFolder_get_Path() returns an absolute path.
by Alexandre Julliard
06 Sep '22
06 Sep '22
Module: wine Branch: master Commit: 4e360e8d428a383ff49546e91701a1bd43ffcc7d URL:
https://gitlab.winehq.org/wine/wine/-/commit/4e360e8d428a383ff49546e91701a1…
Author: Robert Wilhelm <robert.wilhelm(a)gmx.net> Date: Mon Sep 5 20:35:19 2022 +0200 scrrun: Test whether IFolder_get_Path() returns an absolute path. --- dlls/scrrun/tests/filesystem.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 59f5859c556..98652ecf523 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -27,6 +27,7 @@ #include "olectl.h" #include "oleauto.h" #include "dispex.h" +#include "shlwapi.h" #include "wine/test.h" @@ -927,7 +928,9 @@ static void test_BuildPath(void) static void test_GetFolder(void) { - WCHAR buffW[MAX_PATH]; + static const WCHAR dir[] = L"test_dir"; + + WCHAR buffW[MAX_PATH], temp_path[MAX_PATH], prev_path[MAX_PATH]; IFolder *folder; HRESULT hr; BSTR str; @@ -959,6 +962,22 @@ static void test_GetFolder(void) SysFreeString(str); test_provideclassinfo(folder, &CLSID_Folder); IFolder_Release(folder); + + GetCurrentDirectoryW(MAX_PATH, prev_path); + GetTempPathW(MAX_PATH, temp_path); + SetCurrentDirectoryW(temp_path); + ok(CreateDirectoryW(dir, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(dir)); + str = SysAllocString(dir); + hr = IFileSystem3_GetFolder(fs3, str, &folder); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + SysFreeString(str); + hr = IFolder_get_Path(folder, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine ok(!PathIsRelativeW(str), "path %s is relative.\n", wine_dbgstr_w(str)); + SysFreeString(str); + IFolder_Release(folder); + RemoveDirectoryW(dir); + SetCurrentDirectoryW(prev_path); } static void _test_clone(IEnumVARIANT *enumvar, BOOL position_inherited, LONG count, int line)
1
0
0
0
Nikolay Sivov : dwrite: Handle higher planes characters in line breaking logic.
by Alexandre Julliard
06 Sep '22
06 Sep '22
Module: wine Branch: master Commit: 28efff385528864a88bc30c5a12ccbc976a31c3c URL:
https://gitlab.winehq.org/wine/wine/-/commit/28efff385528864a88bc30c5a12ccb…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Sep 6 07:26:01 2022 +0300 dwrite: Handle higher planes characters in line breaking logic. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/dwrite/analyzer.c | 161 +++++++++++++++++++++++++++---------------------- 1 file changed, 88 insertions(+), 73 deletions(-) diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c index 6c3dc7e40d1..5489efa93b8 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -732,8 +732,16 @@ static HRESULT analyze_script(struct text_source_context *context, IDWriteTextAn return IDWriteTextAnalysisSink_SetScriptAnalysis(sink, pos, length, &sa); } -struct linebreaking_state { +struct break_index +{ + unsigned int index; + UINT8 length; +}; + +struct linebreaking_state +{ DWRITE_LINE_BREAKPOINT *breakpoints; + struct break_index *breaks; UINT32 count; }; @@ -804,19 +812,36 @@ static BOOL has_strong_condition(DWRITE_BREAK_CONDITION old_condition, DWRITE_BR static inline void set_break_condition(UINT32 pos, enum BreakConditionLocation location, DWRITE_BREAK_CONDITION condition, struct linebreaking_state *state) { - if (location == BreakConditionBefore) { - if (has_strong_condition(state->breakpoints[pos].breakConditionBefore, condition)) + unsigned int index = state->breaks[pos].index; + + if (location == BreakConditionBefore) + { + if (has_strong_condition(state->breakpoints[index].breakConditionBefore, condition)) return; - state->breakpoints[pos].breakConditionBefore = condition; - if (pos > 0) - state->breakpoints[pos-1].breakConditionAfter = condition; + state->breakpoints[index].breakConditionBefore = condition; + if (pos) + { + --pos; + + index = state->breaks[pos].index; + if (state->breaks[pos].length > 1) index++; + + state->breakpoints[index].breakConditionAfter = condition; + } } - else { - if (has_strong_condition(state->breakpoints[pos].breakConditionAfter, condition)) + else + { + if (state->breaks[pos].length > 1) index++; + + if (has_strong_condition(state->breakpoints[index].breakConditionAfter, condition)) return; - state->breakpoints[pos].breakConditionAfter = condition; + state->breakpoints[index].breakConditionAfter = condition; + if (pos + 1 < state->count) - state->breakpoints[pos+1].breakConditionBefore = condition; + { + index = state->breaks[pos + 1].index; + state->breakpoints[index].breakConditionBefore = condition; + } } } @@ -826,43 +851,72 @@ BOOL lb_is_newline_char(WCHAR ch) return c == b_LF || c == b_NL || c == b_CR || c == b_BK; } -static HRESULT analyze_linebreaks(const WCHAR *text, UINT32 count, DWRITE_LINE_BREAKPOINT *breakpoints) +static HRESULT analyze_linebreaks(IDWriteTextAnalysisSource *source, UINT32 position, + UINT32 length, DWRITE_LINE_BREAKPOINT *breakpoints) { + struct text_source_context context; struct linebreaking_state state; + struct break_index *breaks; + unsigned int count, index; short *break_class; - int i, j; + int i = 0, j; + HRESULT hr; - if (!(break_class = calloc(count, sizeof(*break_class)))) - return E_OUTOFMEMORY; + if (FAILED(hr = text_source_context_init(&context, source, position, length))) return hr; - state.breakpoints = breakpoints; - state.count = count; + if (!(breaks = calloc(length, sizeof(*breaks)))) + return E_OUTOFMEMORY; - for (i = 0; i < count; i++) + if (!(break_class = calloc(length, sizeof(*break_class)))) { - break_class[i] = get_table_entry_32(wine_linebreak_table, text[i]); + free(breaks); + return E_OUTOFMEMORY; + } - breakpoints[i].breakConditionBefore = DWRITE_BREAK_CONDITION_NEUTRAL; - breakpoints[i].breakConditionAfter = DWRITE_BREAK_CONDITION_NEUTRAL; - breakpoints[i].isWhitespace = !!iswspace(text[i]); - breakpoints[i].isSoftHyphen = text[i] == 0x00ad /* Unicode Soft Hyphen */; - breakpoints[i].padding = 0; + count = index = 0; + while (!text_source_get_next_u32_char(&context)) + { + break_class[count] = get_table_entry_32(wine_linebreak_table, context.ch); + breaks[count].length = text_source_get_char_length(&context); + breaks[count].index = index; /* LB1 - resolve some classes. TODO: use external algorithms for these classes. */ - switch (break_class[i]) + switch (break_class[count]) { case b_AI: case b_SA: case b_SG: case b_XX: - break_class[i] = b_AL; + break_class[count] = b_AL; break; case b_CJ: - break_class[i] = b_NS; + break_class[count] = b_NS; break; } + + breakpoints[index].breakConditionBefore = DWRITE_BREAK_CONDITION_NEUTRAL; + breakpoints[index].breakConditionAfter = DWRITE_BREAK_CONDITION_NEUTRAL; + breakpoints[index].isWhitespace = context.ch < 0xffff ? !!iswspace(context.ch) : 0; + breakpoints[index].isSoftHyphen = context.ch == 0x00ad /* Unicode Soft Hyphen */; + breakpoints[index].padding = 0; + ++index; + + if (breaks[count].length > 1) + { + breakpoints[index] = breakpoints[index - 1]; + /* Never break in surrogate pairs. */ + breakpoints[index - 1].breakConditionAfter = DWRITE_BREAK_CONDITION_MAY_NOT_BREAK; + breakpoints[index].breakConditionBefore = DWRITE_BREAK_CONDITION_MAY_NOT_BREAK; + ++index; + } + + ++count; } + state.breakpoints = breakpoints; + state.breaks = breaks; + state.count = count; + /* LB2 - never break at the start */ set_break_condition(0, BreakConditionBefore, DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, &state); /* LB3 - always break at the end. */ @@ -1193,6 +1247,8 @@ static HRESULT analyze_linebreaks(const WCHAR *text, UINT32 count, DWRITE_LINE_B } free(break_class); + free(breaks); + return S_OK; } @@ -1332,64 +1388,23 @@ static HRESULT WINAPI dwritetextanalyzer_AnalyzeNumberSubstitution(IDWriteTextAn } static HRESULT WINAPI dwritetextanalyzer_AnalyzeLineBreakpoints(IDWriteTextAnalyzer2 *iface, - IDWriteTextAnalysisSource* source, UINT32 position, UINT32 length, IDWriteTextAnalysisSink* sink) + IDWriteTextAnalysisSource *source, UINT32 position, UINT32 length, IDWriteTextAnalysisSink *sink) { - DWRITE_LINE_BREAKPOINT *breakpoints = NULL; - WCHAR *buff = NULL; - const WCHAR *text; + DWRITE_LINE_BREAKPOINT *breakpoints; HRESULT hr; - UINT32 len; TRACE("%p, %u, %u, %p.\n", source, position, length, sink); - if (length == 0) + if (!length) return S_OK; - /* get some, check for length */ - text = NULL; - len = 0; - hr = IDWriteTextAnalysisSource_GetTextAtPosition(source, position, &text, &len); - if (FAILED(hr)) return hr; - - if (len < length) { - UINT32 read; - - if (!(buff = calloc(length, sizeof(*buff)))) - return E_OUTOFMEMORY; - if (text) - memcpy(buff, text, len*sizeof(WCHAR)); - read = len; - - while (read < length && text) { - text = NULL; - len = 0; - hr = IDWriteTextAnalysisSource_GetTextAtPosition(source, position+read, &text, &len); - if (FAILED(hr)) - goto done; - if (!text) - break; - memcpy(&buff[read], text, min(len, length-read)*sizeof(WCHAR)); - read += len; - } - - text = buff; - } - if (!(breakpoints = calloc(length, sizeof(*breakpoints)))) - { - hr = E_OUTOFMEMORY; - goto done; - } - - hr = analyze_linebreaks(text, length, breakpoints); - if (FAILED(hr)) - goto done; + return E_OUTOFMEMORY; - hr = IDWriteTextAnalysisSink_SetLineBreakpoints(sink, position, length, breakpoints); + if (SUCCEEDED(hr = analyze_linebreaks(source, position, length, breakpoints))) + hr = IDWriteTextAnalysisSink_SetLineBreakpoints(sink, position, length, breakpoints); -done: free(breakpoints); - free(buff); return hr; }
1
0
0
0
Nikolay Sivov : dwrite/bidi: Prepare for characters above BMP.
by Alexandre Julliard
06 Sep '22
06 Sep '22
Module: wine Branch: master Commit: 4a7a979e7971084f0e3791b490a28676a8fee9f0 URL:
https://gitlab.winehq.org/wine/wine/-/commit/4a7a979e7971084f0e3791b490a286…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Sep 6 07:24:53 2022 +0300 dwrite/bidi: Prepare for characters above BMP. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/dwrite/analyzer.c | 121 ++++++++----------- dlls/dwrite/bidi.c | 273 ++++++++++++++++++++++--------------------- dlls/dwrite/dwrite_private.h | 11 +- 3 files changed, 199 insertions(+), 206 deletions(-)
1
0
0
0
Nikolay Sivov : dwrite: Handle higher planes when setting DWRITE_SCRIPT_SHAPES_NO_VISUAL.
by Alexandre Julliard
06 Sep '22
06 Sep '22
Module: wine Branch: master Commit: d8584a16edef716b2f2690d8043e5b60d5d08da4 URL:
https://gitlab.winehq.org/wine/wine/-/commit/d8584a16edef716b2f2690d8043e5b…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sat Sep 3 11:13:32 2022 +0300 dwrite: Handle higher planes when setting DWRITE_SCRIPT_SHAPES_NO_VISUAL. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/dwrite/analyzer.c | 27 ++++++++++++++++----------- dlls/dwrite/tests/analyzer.c | 10 ++++++++++ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c index 72d3aada285..8d7053a066e 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -654,17 +654,22 @@ static DWRITE_SCRIPT_ANALYSIS get_char_sa(UINT32 c) sa.script = get_char_script(c); sa.shapes = DWRITE_SCRIPT_SHAPES_DEFAULT; - if ((c >= 0x0001 && c <= 0x001f) || - (c >= 0x007f && c <= 0x009f) || - (c == 0x00ad) /* SOFT HYPHEN */ || - (c >= 0x200b && c <= 0x200f) || - (c >= 0x2028 && c <= 0x202e) || - (c >= 0x2060 && c <= 0x2064) || - (c >= 0x2066 && c <= 0x206f) || - (c == 0xfeff) || - (c == 0xfff9) || - (c == 0xfffa) || - (c == 0xfffb)) + if ((c >= 0x0001 && c <= 0x001f) /* C0 controls */ + || (c >= 0x007f && c <= 0x009f) /* DELETE, C1 controls */ + || (c == 0x00ad) /* SOFT HYPHEN */ + || (c >= 0x200b && c <= 0x200f) /* ZWSP, ZWNJ, ZWJ, LRM, RLM */ + || (c >= 0x2028 && c <= 0x202e) /* Line/paragraph separators, LRE, RLE, PDF, LRO, RLO */ + || (c >= 0x2060 && c <= 0x2064) /* WJ, invisible operators */ + || (c >= 0x2066 && c <= 0x2069) /* LRI, RLI, FSI, PDI */ + || (c >= 0x206a && c <= 0x206f) /* Deprecated control characters */ + || (c == 0xfeff) /* ZWBNSP */ + || (c == 0xfff9) /* Interlinear annotation */ + || (c == 0xfffa) + || (c == 0xfffb) + || (c >= 0x1bca0 && c <= 0x1bca3) /* Shorthand format controls */ + || (c >= 0x1d173 && c <= 0x1d17a) /* Musical symbols: beams and slurs */ + || (c == 0xe0001) /* Language tag, deprecated */ + || (c >= 0xe0020 && c <= 0xe007f)) /* Tag components */ { sa.shapes = DWRITE_SCRIPT_SHAPES_NO_VISUAL; } diff --git a/dlls/dwrite/tests/analyzer.c b/dlls/dwrite/tests/analyzer.c index aac0fcc0e01..0363293197e 100644 --- a/dlls/dwrite/tests/analyzer.c +++ b/dlls/dwrite/tests/analyzer.c @@ -1026,6 +1026,16 @@ static struct sa_test sa_tests[] = { {0xd805,0xde80,0}, 1, { { 0, 2, DWRITE_SCRIPT_SHAPES_DEFAULT } } }, + { + /* Musical symbols, U+1D173 */ + {0xd834,0xdd73,0}, 1, + { { 0, 2, DWRITE_SCRIPT_SHAPES_NO_VISUAL } } + }, + { + /* Tags, U+E0020 */ + {0xdb40,0xdc20,0}, 1, + { { 0, 2, DWRITE_SCRIPT_SHAPES_NO_VISUAL } } + }, /* keep this as end test data marker */ { {0} } };
1
0
0
0
Francois Gouget : tests: Allow marking unreliable tests as flaky.
by Alexandre Julliard
06 Sep '22
06 Sep '22
Module: wine Branch: master Commit: f9b836b1c1d259b4c780d9388ec1d5fb25a83287 URL:
https://gitlab.winehq.org/wine/wine/-/commit/f9b836b1c1d259b4c780d9388ec1d5…
Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Wed Jun 1 14:29:23 2022 +0200 tests: Allow marking unreliable tests as flaky. --- include/wine/test.h | 89 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 77 insertions(+), 12 deletions(-) diff --git a/include/wine/test.h b/include/wine/test.h index 3782c6eeeb6..505f0daaaf4 100644 --- a/include/wine/test.h +++ b/include/wine/test.h @@ -44,6 +44,9 @@ extern int winetest_time; /* running in interactive mode? */ extern int winetest_interactive; +/* always count flaky tests as successful (BOOL) */ +extern int winetest_allow_flaky; + /* report successful tests (BOOL) */ extern int winetest_report_success; @@ -59,6 +62,9 @@ extern void winetest_ignore_exceptions( BOOL ignore ); extern void winetest_start_todo( int is_todo ); extern int winetest_loop_todo(void); extern void winetest_end_todo(void); +extern void winetest_start_flaky( int is_flaky ); +extern int winetest_loop_flaky(void); +extern void winetest_end_flaky(void); extern int winetest_get_mainargs( char*** pargv ); extern LONG winetest_get_failures(void); extern void winetest_add_failures( LONG new_failures ); @@ -111,6 +117,13 @@ extern void winetest_pop_context(void); #define trace trace_(__FILE__, __LINE__) #define wait_child_process wait_child_process_(__FILE__, __LINE__) +#define flaky_if(is_flaky) for (winetest_start_flaky(is_flaky); \ + winetest_loop_flaky(); \ + winetest_end_flaky()) +#define flaky flaky_if(TRUE) +#define flaky_wine flaky_if(!strcmp(winetest_platform, "wine")) +#define flaky_wine_if(is_flaky) flaky_if((is_flaky) && !strcmp(winetest_platform, "wine")) + #define todo_if(is_todo) for (winetest_start_todo(is_todo); \ winetest_loop_todo(); \ winetest_end_todo()) @@ -194,6 +207,9 @@ int winetest_interactive = 0; /* current platform */ const char *winetest_platform = "windows"; +/* always count flaky tests as successful (BOOL) */ +int winetest_allow_flaky; + /* report successful tests (BOOL) */ int winetest_report_success = 0; @@ -211,6 +227,7 @@ static const struct test *current_test; /* test currently being run */ static LONG successes; /* number of successful tests */ static LONG failures; /* number of failures */ +static LONG flaky_failures; /* number of failures inside flaky block */ static LONG skipped; /* number of skipped test chunks */ static LONG todo_successes; /* number of successful tests inside todo block */ static LONG todo_failures; /* number of failures inside todo block */ @@ -226,6 +243,8 @@ struct tls_data { const char* current_file; /* file of current check */ int current_line; /* line of current check */ + unsigned int flaky_level; /* current flaky nesting level */ + int flaky_do_loop; unsigned int todo_level; /* current todo nesting level */ int todo_do_loop; char *str_pos; /* position in debug buffer */ @@ -283,10 +302,12 @@ const char *winetest_elapsed(void) static const char color_reset[] = "\e[0m"; static const char color_dark_red[] = "\e[31m"; +static const char color_dark_purple[] = "\e[35m"; static const char color_green[] = "\e[32m"; static const char color_yellow[] = "\e[33m"; static const char color_blue[] = "\e[34m"; static const char color_bright_red[] = "\e[1;91m"; +static const char color_bright_purple[] = "\e[1;95m"; static void winetest_printf( const char *msg, ... ) __WINE_PRINTF_ATTR(1,2); static void winetest_printf( const char *msg, ... ) @@ -359,11 +380,21 @@ int winetest_vok( int condition, const char *msg, va_list args ) { if (condition) { - if (winetest_color) printf( color_dark_red ); - winetest_print_context( "Test succeeded inside todo block: " ); - vprintf(msg, args); + if (data->flaky_level) + { + if (winetest_color) printf( color_dark_purple ); + winetest_print_context( "Test succeeded inside flaky todo block: " ); + vprintf(msg, args); + InterlockedIncrement(&flaky_failures); + } + else + { + if (winetest_color) printf( color_dark_red ); + winetest_print_context( "Test succeeded inside todo block: " ); + vprintf(msg, args); + InterlockedIncrement(&todo_failures); + } if (winetest_color) printf( color_reset ); - InterlockedIncrement(&todo_failures); return 0; } else @@ -389,11 +420,21 @@ int winetest_vok( int condition, const char *msg, va_list args ) { if (!condition) { - if (winetest_color) printf( color_bright_red ); - winetest_print_context( "Test failed: " ); - vprintf(msg, args); + if (data->flaky_level) + { + if (winetest_color) printf( color_bright_purple ); + winetest_print_context( "Test marked flaky: " ); + vprintf(msg, args); + InterlockedIncrement(&flaky_failures); + } + else + { + if (winetest_color) printf( color_bright_red ); + winetest_print_context( "Test failed: " ); + vprintf(msg, args); + InterlockedIncrement(&failures); + } if (winetest_color) printf( color_reset ); - InterlockedIncrement(&failures); return 0; } else @@ -470,6 +511,27 @@ void winetest_win_skip( const char *msg, ... ) va_end(valist); } +void winetest_start_flaky( int is_flaky ) +{ + struct tls_data *data = get_tls_data(); + data->flaky_level = (data->flaky_level << 1) | (is_flaky != 0); + data->flaky_do_loop = 1; +} + +int winetest_loop_flaky(void) +{ + struct tls_data *data = get_tls_data(); + int do_flaky = data->flaky_do_loop; + data->flaky_do_loop = 0; + return do_flaky; +} + +void winetest_end_flaky(void) +{ + struct tls_data *data = get_tls_data(); + data->flaky_level >>= 1; +} + void winetest_start_todo( int is_todo ) { struct tls_data *data = get_tls_data(); @@ -615,14 +677,16 @@ static int run_test( const char *name ) printf( "%04x:%s:%s Silenced %d todos, %d skips and %d traces.\n", (UINT)GetCurrentProcessId(), test->name, winetest_elapsed(), (UINT)muted_todo_successes, (UINT)muted_skipped, (UINT)muted_traces); - printf( "%04x:%s:%s %d tests executed (%d marked as todo, %d %s), %d skipped.\n", + printf( "%04x:%s:%s %d tests executed (%d marked as todo, %d as flaky, %d %s), %d skipped.\n", (UINT)GetCurrentProcessId(), test->name, winetest_elapsed(), - (UINT)(successes + failures + todo_successes + todo_failures), - (UINT)todo_successes, (UINT)(failures + todo_failures), + (UINT)(successes + failures + flaky_failures + todo_successes + todo_failures), + (UINT)todo_successes, (UINT)flaky_failures, (UINT)(failures + todo_failures), (failures + todo_failures != 1) ? "failures" : "failure", (UINT)skipped ); } - status = (failures + todo_failures < 255) ? failures + todo_failures : 255; + status = failures + todo_failures; + if (!winetest_allow_flaky) status += flaky_failures; + if (status > 255) status = 255; return status; } @@ -694,6 +758,7 @@ int main( int argc, char **argv ) } if (GetEnvironmentVariableA( "WINETEST_DEBUG", p, sizeof(p) )) winetest_debug = atoi(p); if (GetEnvironmentVariableA( "WINETEST_INTERACTIVE", p, sizeof(p) )) winetest_interactive = atoi(p); + if (GetEnvironmentVariableA( "WINETEST_ALLOW_FLAKY", p, sizeof(p) )) winetest_allow_flaky = atoi(p); if (GetEnvironmentVariableA( "WINETEST_REPORT_SUCCESS", p, sizeof(p) )) winetest_report_success = atoi(p); if (GetEnvironmentVariableA( "WINETEST_TIME", p, sizeof(p) )) winetest_time = atoi(p); winetest_last_time = winetest_start_time = GetTickCount();
1
0
0
0
Alexandre Julliard : user32/tests: Remove checks that rely on the absolute position of a top-level window.
by Alexandre Julliard
06 Sep '22
06 Sep '22
Module: wine Branch: master Commit: e37769b108f8578e7d13ee276ad290ff463c3bd2 URL:
https://gitlab.winehq.org/wine/wine/-/commit/e37769b108f8578e7d13ee276ad290…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Tue Sep 6 17:32:55 2022 +0200 user32/tests: Remove checks that rely on the absolute position of a top-level window. --- dlls/user32/tests/msg.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 9c77bdc7c09..610228c3559 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -10128,15 +10128,6 @@ static LRESULT WINAPI ParentMsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam case WM_MOUSEMOVE: case WM_NCMOUSEMOVE: return 0; - - case WM_ERASEBKGND: - { - RECT rc; - INT ret = GetClipBox((HDC)wParam, &rc); - - trace("WM_ERASEBKGND: GetClipBox()=%d, %s\n", ret, wine_dbgstr_rect(&rc)); - break; - } } msg.hwnd = hwnd; @@ -10525,7 +10516,6 @@ static LRESULT CALLBACK MsgConversionProcW(HWND hwnd, UINT uMsg, WPARAM wParam, switch (uMsg) { case CB_FINDSTRINGEXACT: - trace("String: %p\n", (LPCWSTR)lParam); if (!lstrcmpW((LPCWSTR)lParam, wszUnicode)) return 1; if (!lstrcmpW((LPCWSTR)lParam, wszAnsi)) @@ -13656,11 +13646,11 @@ static void test_TrackMouseEvent(void) static const struct message WmSetWindowRgn[] = { { WM_WINDOWPOSCHANGING, sent|wparam|lparam, SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE |SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE, 0 }, - { WM_NCCALCSIZE, sent|wparam|lparam, 1, 0xf }, + { WM_NCCALCSIZE, sent|wparam, 1 }, { WM_NCPAINT, sent|optional }, /* wparam != 1 */ { WM_GETTEXT, sent|defwinproc|optional }, { WM_ERASEBKGND, sent|optional }, - { WM_WINDOWPOSCHANGED, sent|wparam|lparam, SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE, 0xf }, + { WM_WINDOWPOSCHANGED, sent|wparam, SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE }, { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam|winevent_hook_todo, 0, 0 }, { 0 } }; @@ -13668,17 +13658,17 @@ static const struct message WmSetWindowRgn[] = { static const struct message WmSetWindowRgn_no_redraw[] = { { WM_WINDOWPOSCHANGING, sent|wparam|lparam, SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE |SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOREDRAW, 0 }, - { WM_NCCALCSIZE, sent|wparam|lparam, 1, 0xf }, - { WM_WINDOWPOSCHANGED, sent|wparam|lparam, SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOREDRAW, 0xf }, + { WM_NCCALCSIZE, sent|wparam, 1 }, + { WM_WINDOWPOSCHANGED, sent|wparam, SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOREDRAW }, { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam|winevent_hook_todo, 0, 0 }, { 0 } }; static const struct message WmSetWindowRgn_clear[] = { { WM_WINDOWPOSCHANGING, sent/*|wparam|lparam*/, SWP_NOACTIVATE|SWP_FRAMECHANGED - |SWP_NOSIZE|SWP_NOMOVE/*|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE only on some Windows versions */, 0xf + |SWP_NOSIZE|SWP_NOMOVE/*|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE only on some Windows versions */ /* Some newer Windows versions set window coordinates instead of zeros in WINDOWPOS structure */}, - { WM_NCCALCSIZE, sent|wparam|lparam, 1, 0xf }, + { WM_NCCALCSIZE, sent|wparam, 1 }, { WM_NCPAINT, sent|optional }, { WM_GETTEXT, sent|defwinproc|optional }, { WM_ERASEBKGND, sent|optional }, /* FIXME: remove optional once Wine is fixed */
1
0
0
0
Alexandre Julliard : kernel32/tests: Don't test console flags that are modified by WINETEST_COLOR=1.
by Alexandre Julliard
06 Sep '22
06 Sep '22
Module: wine Branch: master Commit: e031f355b097bcc652fdced003989a93ed3fad50 URL:
https://gitlab.winehq.org/wine/wine/-/commit/e031f355b097bcc652fdced003989a…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Tue Sep 6 13:30:21 2022 +0200 kernel32/tests: Don't test console flags that are modified by WINETEST_COLOR=1. --- dlls/kernel32/tests/process.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c index 4a6451a23fe..287e84642be 100644 --- a/dlls/kernel32/tests/process.c +++ b/dlls/kernel32/tests/process.c @@ -1573,6 +1573,10 @@ static void test_Console(void) SetConsoleMode(startup.hStdInput, modeIn); SetConsoleMode(startup.hStdOutput, modeOut); + /* don't test flag that is changed at startup if WINETEST_COLOR is set */ + modeOut = (modeOut & ~ENABLE_VIRTUAL_TERMINAL_PROCESSING) | + (modeOutC & ENABLE_VIRTUAL_TERMINAL_PROCESSING); + cpInC = GetConsoleCP(); cpOutC = GetConsoleOutputCP();
1
0
0
0
Lorenzo Ferrillo : comctl32: Support passing bitmap and icon resource ID as a string when creating static control.
by Alexandre Julliard
05 Sep '22
05 Sep '22
Module: wine Branch: master Commit: c1db36686c7adb1f117e2aeecbd024949fc1e6ae URL:
https://gitlab.winehq.org/wine/wine/-/commit/c1db36686c7adb1f117e2aeecbd024…
Author: Lorenzo Ferrillo <lorenzofersteam(a)live.it> Date: Sat Sep 3 19:25:45 2022 +0200 comctl32: Support passing bitmap and icon resource ID as a string when creating static control. Follow Up of Merge request !693 by Jacek Caban. The pull request changed properly the static control of user32, but didn't address the comctl32 static control. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=53581
--- dlls/comctl32/static.c | 10 ++++++++-- dlls/comctl32/tests/static.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/dlls/comctl32/static.c b/dlls/comctl32/static.c index c09655da903..25eee289204 100644 --- a/dlls/comctl32/static.c +++ b/dlls/comctl32/static.c @@ -437,6 +437,7 @@ static BOOL hasTextStyle( DWORD style ) static LRESULT CALLBACK STATIC_WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { + const WCHAR *window_name; LRESULT lResult = 0; LONG full_style = GetWindowLongW( hwnd, GWL_STYLE ); LONG style = full_style & SS_TYPEMASK; @@ -549,13 +550,18 @@ static LRESULT CALLBACK STATIC_WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, SetWindowPos(hwnd, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER); } + if (cs->lpszName && cs->lpszName[0] == 0xffff) + window_name = MAKEINTRESOURCEW(cs->lpszName[1]); + else + window_name = cs->lpszName; + switch (style) { case SS_ICON: { HICON hIcon; - hIcon = STATIC_LoadIconW(cs->hInstance, cs->lpszName, full_style); + hIcon = STATIC_LoadIconW(cs->hInstance, window_name, full_style); STATIC_SetIcon(hwnd, hIcon, full_style); } break; @@ -563,7 +569,7 @@ static LRESULT CALLBACK STATIC_WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, if ((ULONG_PTR)cs->hInstance >> 16) { HBITMAP hBitmap; - hBitmap = LoadBitmapW(cs->hInstance, cs->lpszName); + hBitmap = LoadBitmapW(cs->hInstance, window_name); STATIC_SetBitmap(hwnd, hBitmap, full_style); } break; diff --git a/dlls/comctl32/tests/static.c b/dlls/comctl32/tests/static.c index 756fed86fe0..551aca2720f 100644 --- a/dlls/comctl32/tests/static.c +++ b/dlls/comctl32/tests/static.c @@ -216,6 +216,8 @@ static void test_image(HBITMAP image, BOOL is_dib, BOOL is_premult, BOOL is_alph static void test_set_image(void) { + char resource[4]; + WCHAR resource_unicode[3]; HWND hwnd = create_static(SS_BITMAP); HBITMAP bmp1, bmp2, image; @@ -270,6 +272,33 @@ static void test_set_image(void) test_image(image, TRUE, FALSE, FALSE); + resource[0] = '\xff'; + resource[1] = PtrToUlong(MAKEINTRESOURCEW(IDB_BITMAP_1x1_32BPP)); + resource[2] = PtrToUlong(MAKEINTRESOURCEW(IDB_BITMAP_1x1_32BPP)) >> 8; + resource[3] = 0; + + resource_unicode[0] = 0xffff; + resource_unicode[1] = PtrToUlong(MAKEINTRESOURCEW(IDB_BITMAP_1x1_32BPP)); + resource_unicode[2] = 0; + + hwnd = CreateWindowW(L"Static", resource_unicode, WS_VISIBLE|WS_CHILD|SS_BITMAP, 5, 5, 100, 100, + hMainWnd, (HMENU)CTRL_ID, GetModuleHandleW(NULL), 0); + + bmp1 = (HBITMAP)SendMessageW(hwnd, STM_GETIMAGE, IMAGE_BITMAP, 0); + ok(bmp1 != NULL, "got NULL\n"); + ok(bmp1 != image, "bmp == image\n"); + test_image(bmp1, TRUE, TRUE, TRUE); + DestroyWindow(hwnd); + + hwnd = CreateWindowA("Static", resource, WS_VISIBLE|WS_CHILD|SS_BITMAP, 5, 5, 100, 100, + hMainWnd, (HMENU)CTRL_ID, GetModuleHandleW(NULL), 0); + + bmp1 = (HBITMAP)SendMessageA(hwnd, STM_GETIMAGE, IMAGE_BITMAP, 0); + ok(bmp1 != NULL, "got NULL\n"); + ok(bmp1 != image, "bmp == image\n"); + test_image(bmp1, TRUE, TRUE, TRUE); + DestroyWindow(hwnd); + DeleteObject(image); }
1
0
0
0
Francois Gouget : mshtml: Add trailing linefeeds to a couple of FIXME() messages.
by Alexandre Julliard
05 Sep '22
05 Sep '22
Module: wine Branch: master Commit: 2b5a4b75be10dd69f84060e9b4c5c3865dd360db URL:
https://gitlab.winehq.org/wine/wine/-/commit/2b5a4b75be10dd69f84060e9b4c5c3…
Author: Francois Gouget <fgouget(a)free.fr> Date: Thu Aug 25 11:55:42 2022 +0200 mshtml: Add trailing linefeeds to a couple of FIXME() messages. --- dlls/mshtml/omnavigator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 42e8149a602..c49f1b4f55f 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -2769,7 +2769,7 @@ static HRESULT WINAPI media_query_list_addListener(IWineMSHTMLMediaQueryList *if { struct media_query_list *media_query_list = impl_from_IWineMSHTMLMediaQueryList(iface); - FIXME("(%p)->(%s)", media_query_list, debugstr_variant(listener)); + FIXME("(%p)->(%s)\n", media_query_list, debugstr_variant(listener)); return E_NOTIMPL; } @@ -2778,7 +2778,7 @@ static HRESULT WINAPI media_query_list_removeListener(IWineMSHTMLMediaQueryList { struct media_query_list *media_query_list = impl_from_IWineMSHTMLMediaQueryList(iface); - FIXME("(%p)->(%s)", media_query_list, debugstr_variant(listener)); + FIXME("(%p)->(%s)\n", media_query_list, debugstr_variant(listener)); return E_NOTIMPL; }
1
0
0
0
Alexandros Frantzis : msvfw32: Use window name to determine if window is created using MCIWndCreate.
by Alexandre Julliard
05 Sep '22
05 Sep '22
Module: wine Branch: master Commit: 97e018f9a5f0ba360920747362f2e1270c0406b4 URL:
https://gitlab.winehq.org/wine/wine/-/commit/97e018f9a5f0ba360920747362f2e1…
Author: Alexandros Frantzis <alexandros.frantzis(a)collabora.com> Date: Tue Aug 30 10:20:42 2022 +0300 msvfw32: Use window name to determine if window is created using MCIWndCreate. The current version of the code incorrectly assumes that the lpszClass member of CREATESTRUCT passed with WM_CREATE will point to the same memory used for the CreateWindowEx class name parameter. MCIWND_Create uses this assumption to perform a pointer comparison on the class name to determine whether the MCI window is being created using MCIWndCreateA/W and should therefore expect a unicode path parameter. As a side effect of commit e41c255be6ba66d1eec7affe674b8cc7699226b8 "win32u: Use send_message_timeout for WM_CREATE and WM_NCCREATE" the CREATESTRUCT lpszClass member started pointing to different memory, breaking the current implementation of MCIWND_Create(). This commit fixes the problem by changing MCIWndCreateA/W to use an internal window name, unlikely to be used by normal applications, which can then be checked in MCIWND_Create to determine if the MCI window is being created using MCIWndCreateA/W. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=53578
--- dlls/msvfw32/mciwnd.c | 9 ++++++--- dlls/msvfw32/tests/mciwnd.c | 16 +++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/dlls/msvfw32/mciwnd.c b/dlls/msvfw32/mciwnd.c index 8799293f7c9..e5f387a0bab 100644 --- a/dlls/msvfw32/mciwnd.c +++ b/dlls/msvfw32/mciwnd.c @@ -38,6 +38,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(mci); extern HMODULE MSVFW32_hModule; static const WCHAR mciWndClassW[] = {'M','C','I','W','n','d','C','l','a','s','s',0}; +static const WCHAR mciWndNameW[] = {'M','C','I','W','n','d','C','r','e','a','t','e', + 'W','i','n','e','I','n','t','e','r','n','a','l', 0}; typedef struct { @@ -113,7 +115,7 @@ HWND VFWAPIV MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, else dwStyle |= WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; - return CreateWindowExW(0, mciWndClassW, NULL, + return CreateWindowExW(0, mciWndClassW, mciWndNameW, dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0, 0, 300, 0, hwndParent, 0, hInstance, (LPVOID)szFile); @@ -314,8 +316,9 @@ static LRESULT MCIWND_Create(HWND hWnd, LPCREATESTRUCTW cs) else lParam = (LPARAM)cs->lpCreateParams; - /* If it's our internal class pointer, file name is a unicode string */ - if (cs->lpszClass == mciWndClassW) + /* If it's our internal window name, we are being called from MCIWndCreateA/W, + * so file name is a unicode string */ + if (!lstrcmpW(cs->lpszName, mciWndNameW)) SendMessageW(hWnd, MCIWNDM_OPENW, 0, lParam); else { diff --git a/dlls/msvfw32/tests/mciwnd.c b/dlls/msvfw32/tests/mciwnd.c index 915624b2eeb..8bf4c103a6c 100644 --- a/dlls/msvfw32/tests/mciwnd.c +++ b/dlls/msvfw32/tests/mciwnd.c @@ -160,7 +160,7 @@ static struct { const WCHAR* expectedW; /* output */ unsigned open_msg; - enum {NO_MATCH, PTR_ANSI_MATCH, PTR_UNICODE_MATCH, ANSI_MATCH, UNICODE_MATCH, TODO_WINE = 0x40} match; + enum {NO_MATCH, PTR_ANSI_MATCH, PTR_UNICODE_MATCH, ANSI_MATCH, UNICODE_MATCH } match; } wnd_creation; static WNDPROC old_MCIWndProc; @@ -217,7 +217,7 @@ static void test_window_create(unsigned line, const char* fname, HWND parent, HWND window; char error[200]; LRESULT ret; - BOOL expect_ansi = (match & ~TODO_WINE) == PTR_ANSI_MATCH || (match & ~TODO_WINE) == ANSI_MATCH; + BOOL expect_ansi = match == PTR_ANSI_MATCH || match == ANSI_MATCH; MultiByteToWideChar(CP_ACP, 0, fname, -1, fnameW, ARRAY_SIZE(fnameW)); @@ -247,15 +247,13 @@ static void test_window_create(unsigned line, const char* fname, HWND parent, parent, 0, hinst, expect_ansi ? (LPVOID)fname : (LPVOID)fnameW); } ok_(__FILE__, line)(window != NULL, "Failed to create an MCIWnd window\n"); - ok_(__FILE__, line)(wnd_creation.match == (match & ~TODO_WINE), "unexpected match %u\n", wnd_creation.match); - todo_wine_if(match & TODO_WINE) + ok_(__FILE__, line)(wnd_creation.match == match, "unexpected match %u\n", wnd_creation.match); ok_(__FILE__, line)((expect_ansi && wnd_creation.open_msg == MCIWNDM_OPENA) || (!expect_ansi && wnd_creation.open_msg == MCIWNDM_OPENW), "bad open message %u %s%u\n", match, wnd_creation.open_msg >= WM_USER ? "WM_USER+" : "", wnd_creation.open_msg >= WM_USER ? wnd_creation.open_msg - WM_USER : wnd_creation.open_msg); ret = SendMessageA(window, MCIWNDM_GETERRORA, sizeof(error), (LPARAM)error); - todo_wine_if(match & TODO_WINE) ok_(__FILE__, line)(!ret || broken(ret == ERROR_INVALID_HANDLE) /* w2003std, w2008s64 */, "Unexpected error %Id\n", ret); DestroyWindow(window); @@ -275,8 +273,8 @@ static void test_MCIWndCreate(void) hook = SetWindowsHookExW( WH_CBT, hook_proc, NULL, GetCurrentThreadId() ); - test_window_create( __LINE__, fname, NULL, TRUE, TRUE, UNICODE_MATCH | TODO_WINE ); - test_window_create( __LINE__, fname, NULL, TRUE, FALSE, PTR_UNICODE_MATCH | TODO_WINE ); + test_window_create( __LINE__, fname, NULL, TRUE, TRUE, UNICODE_MATCH ); + test_window_create( __LINE__, fname, NULL, TRUE, FALSE, PTR_UNICODE_MATCH ); test_window_create( __LINE__, fname, NULL, FALSE, TRUE, PTR_ANSI_MATCH ); test_window_create( __LINE__, fname, NULL, FALSE, FALSE, PTR_ANSI_MATCH ); @@ -286,8 +284,8 @@ static void test_MCIWndCreate(void) ok(parent != NULL, "Failed to create a window\n"); ok(!IsWindowUnicode(parent), "Expecting ansi parent window\n"); - test_window_create( __LINE__, fname, parent, TRUE, TRUE, UNICODE_MATCH | TODO_WINE ); - test_window_create( __LINE__, fname, parent, TRUE, FALSE, PTR_UNICODE_MATCH | TODO_WINE ); + test_window_create( __LINE__, fname, parent, TRUE, TRUE, UNICODE_MATCH ); + test_window_create( __LINE__, fname, parent, TRUE, FALSE, PTR_UNICODE_MATCH ); test_window_create( __LINE__, fname, parent, FALSE, TRUE, PTR_ANSI_MATCH ); test_window_create( __LINE__, fname, parent, FALSE, FALSE, PTR_ANSI_MATCH );
1
0
0
0
← Newer
1
...
46
47
48
49
50
51
52
...
56
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
Results per page:
10
25
50
100
200