winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
June 2022
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
791 discussions
Start a n
N
ew thread
Jacek Caban : win32u: Move WM_APPCOMMAND implementation from user32.
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: 3ec9c2990b9a5370f9657dbcd8ccee915d234c02 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=3ec9c2990b9a5370f9657dbc…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Jun 16 22:46:07 2022 +0200 win32u: Move WM_APPCOMMAND implementation from user32. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> --- dlls/user32/defwnd.c | 10 ---------- dlls/user32/hook.c | 15 --------------- dlls/user32/win.h | 2 -- dlls/win32u/defwnd.c | 10 ++++++++++ dlls/win32u/sysparams.c | 7 ------- include/ntuser.h | 1 - 6 files changed, 10 insertions(+), 35 deletions(-) diff --git a/dlls/user32/defwnd.c b/dlls/user32/defwnd.c index 2cfc0b14ff5..3eebc952ee1 100644 --- a/dlls/user32/defwnd.c +++ b/dlls/user32/defwnd.c @@ -283,16 +283,6 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa } break; - case WM_APPCOMMAND: - { - HWND parent = GetParent(hwnd); - if(!parent) - HOOK_CallHooks(WH_SHELL, HSHELL_APPCOMMAND, wParam, lParam, TRUE); - else - SendMessageW( parent, msg, wParam, lParam ); - break; - } - case WM_INPUTLANGCHANGEREQUEST: NtUserActivateKeyboardLayout( (HKL)lParam, 0 ); break; diff --git a/dlls/user32/hook.c b/dlls/user32/hook.c index 7dddfb02638..4ef1e029609 100644 --- a/dlls/user32/hook.c +++ b/dlls/user32/hook.c @@ -334,21 +334,6 @@ void *get_hook_proc( void *proc, const WCHAR *module, HMODULE *free_module ) } -/*********************************************************************** - * HOOK_CallHooks - */ -LRESULT HOOK_CallHooks( INT id, INT code, WPARAM wparam, LPARAM lparam, BOOL unicode ) -{ - struct win_hook_params params; - params.id = id; - params.code = code; - params.wparam = wparam; - params.lparam = lparam; - params.next_unicode = unicode; - return NtUserCallOneParam( (UINT_PTR)¶ms, NtUserCallHooks ); -} - - /*********************************************************************** * SetWindowsHookA (USER32.@) */ diff --git a/dlls/user32/win.h b/dlls/user32/win.h index 1dfc8eb0ad1..5e4ac056c60 100644 --- a/dlls/user32/win.h +++ b/dlls/user32/win.h @@ -54,8 +54,6 @@ static inline void WIN_ReleasePtr( WND *ptr ) release_user_handle_ptr( ptr ); } -extern LRESULT HOOK_CallHooks( INT id, INT code, WPARAM wparam, LPARAM lparam, BOOL unicode ) DECLSPEC_HIDDEN; - extern void WINPOS_ActivateOtherWindow( HWND hwnd ) DECLSPEC_HIDDEN; extern UINT get_monitor_dpi( HMONITOR monitor ) DECLSPEC_HIDDEN; diff --git a/dlls/win32u/defwnd.c b/dlls/win32u/defwnd.c index 71429884b2f..b3726bf8e88 100644 --- a/dlls/win32u/defwnd.c +++ b/dlls/win32u/defwnd.c @@ -2549,6 +2549,16 @@ LRESULT default_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, send_message( hwnd, WM_HELP, 0, (LPARAM)&hi ); break; } + + case WM_APPCOMMAND: + { + HWND parent = get_parent( hwnd ); + if (!parent) + call_hooks( WH_SHELL, HSHELL_APPCOMMAND, wparam, lparam, TRUE ); + else + send_message( parent, msg, wparam, lparam ); + break; + } } return result; diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 01469c345c2..a8c1d977c7d 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -4814,13 +4814,6 @@ ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code ) return TRUE; /* temporary exports */ - case NtUserCallHooks: - { - const struct win_hook_params *params = (struct win_hook_params *)arg; - return call_hooks( params->id, params->code, params->wparam, params->lparam, - params->next_unicode ); - } - case NtUserGetDeskPattern: return get_entry( &entry_DESKPATTERN, 256, (WCHAR *)arg ); diff --git a/include/ntuser.h b/include/ntuser.h index 679179851a9..6e6819038ac 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -797,7 +797,6 @@ enum NtUserCallOneParam_SetCaretBlinkTime, NtUserCallOneParam_SetProcessDefaultLayout, /* temporary exports */ - NtUserCallHooks, NtUserGetDeskPattern, NtUserGetWinProcPtr, NtUserLock,
1
0
0
0
Jacek Caban : win32u: Move default key messages implementation from user32.
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: 749e1b05d7e68de4dccef77b4a2a379fe9345c9d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=749e1b05d7e68de4dccef77b…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Jun 16 22:42:40 2022 +0200 win32u: Move default key messages implementation from user32. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> --- dlls/user32/defwnd.c | 90 +--------------------------------------------------- dlls/win32u/defwnd.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 89 deletions(-) diff --git a/dlls/user32/defwnd.c b/dlls/user32/defwnd.c index 45f1842714f..2cfc0b14ff5 100644 --- a/dlls/user32/defwnd.c +++ b/dlls/user32/defwnd.c @@ -36,15 +36,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(win); - /* bits in the dwKeyData */ -#define KEYDATA_ALT 0x2000 -#define KEYDATA_PREVSTATE 0x4000 - #define DRAG_FILE 0x454C4946 -static short iF10Key = 0; -static short iMenuSysKey = 0; - /*********************************************************************** * DEFWND_HandleWindowPosChanged * @@ -169,12 +162,6 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa DEFWND_HandleWindowPosChanged( hwnd, (const WINDOWPOS *)lParam ); break; - case WM_LBUTTONDOWN: - case WM_RBUTTONDOWN: - case WM_MBUTTONDOWN: - iF10Key = iMenuSysKey = 0; - break; - case WM_RBUTTONUP: { POINT pt; @@ -222,69 +209,6 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa case WM_SYSCOMMAND: return NC_HandleSysCommand( hwnd, wParam, lParam ); - case WM_KEYDOWN: - if(wParam == VK_F10) iF10Key = VK_F10; - break; - - case WM_SYSKEYDOWN: - if( HIWORD(lParam) & KEYDATA_ALT ) - { - /* if( HIWORD(lParam) & ~KEYDATA_PREVSTATE ) */ - if ( (wParam == VK_MENU || wParam == VK_LMENU - || wParam == VK_RMENU) && !iMenuSysKey ) - iMenuSysKey = 1; - else - iMenuSysKey = 0; - - iF10Key = 0; - - if( wParam == VK_F4 ) /* try to close the window */ - { - HWND top = NtUserGetAncestor( hwnd, GA_ROOT ); - if (!(GetClassLongW( top, GCL_STYLE ) & CS_NOCLOSE)) - PostMessageW( top, WM_SYSCOMMAND, SC_CLOSE, 0 ); - } - } - else if( wParam == VK_F10 ) - { - if (NtUserGetKeyState(VK_SHIFT) & 0x8000) - SendMessageW( hwnd, WM_CONTEXTMENU, (WPARAM)hwnd, -1 ); - iF10Key = 1; - } - else if (wParam == VK_ESCAPE && (NtUserGetKeyState(VK_SHIFT) & 0x8000)) - SendMessageW( hwnd, WM_SYSCOMMAND, SC_KEYMENU, ' ' ); - break; - - case WM_KEYUP: - case WM_SYSKEYUP: - /* Press and release F10 or ALT */ - if (((wParam == VK_MENU || wParam == VK_LMENU || wParam == VK_RMENU) - && iMenuSysKey) || ((wParam == VK_F10) && iF10Key)) - SendMessageW( NtUserGetAncestor( hwnd, GA_ROOT ), WM_SYSCOMMAND, SC_KEYMENU, 0L ); - iMenuSysKey = iF10Key = 0; - break; - - case WM_SYSCHAR: - { - iMenuSysKey = 0; - if (wParam == '\r' && IsIconic(hwnd)) - { - PostMessageW( hwnd, WM_SYSCOMMAND, SC_RESTORE, 0L ); - break; - } - if ((HIWORD(lParam) & KEYDATA_ALT) && wParam) - { - if (wParam == '\t' || wParam == '\x1b') break; - if (wParam == ' ' && (GetWindowLongW( hwnd, GWL_STYLE ) & WS_CHILD)) - SendMessageW( GetParent(hwnd), msg, wParam, lParam ); - else - SendMessageW( hwnd, WM_SYSCOMMAND, SC_KEYMENU, wParam ); - } - else /* check for Ctrl-Esc */ - if (wParam != '\x1b') MessageBeep(0); - break; - } - case WM_SHOWWINDOW: { LONG style = GetWindowLongW( hwnd, GWL_STYLE ); @@ -310,11 +234,6 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa break; } - case WM_CANCELMODE: - iMenuSysKey = 0; - NtUserMessageCall( hwnd, msg, wParam, lParam, 0, NtUserDefWindowProc, FALSE ); - break; - case WM_VKEYTOITEM: case WM_CHARTOITEM: return -1; @@ -485,6 +404,7 @@ LRESULT WINAPI DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam break; case WM_SETTEXT: + case WM_SYSCHAR: result = NtUserMessageCall( hwnd, msg, wParam, lParam, 0, NtUserDefWindowProc, TRUE ); break; @@ -556,14 +476,6 @@ LRESULT WINAPI DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam } break; - case WM_SYSCHAR: - { - CHAR ch = LOWORD(wParam); - WCHAR wch; - MultiByteToWideChar(CP_ACP, 0, &ch, 1, &wch, 1); - wParam = MAKEWPARAM( wch, HIWORD(wParam) ); - } - /* fall through */ default: result = DEFWND_DefWinProc( hwnd, msg, wParam, lParam ); break; diff --git a/dlls/win32u/defwnd.c b/dlls/win32u/defwnd.c index b67f4de2dd9..71429884b2f 100644 --- a/dlls/win32u/defwnd.c +++ b/dlls/win32u/defwnd.c @@ -31,6 +31,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(win); +/* bits in the dwKeyData */ +#define KEYDATA_ALT 0x2000 +#define KEYDATA_PREVSTATE 0x4000 + +static short f10_key = 0; +static short menu_sys_key = 0; + static BOOL has_dialog_frame( UINT style, UINT ex_style ) { return (ex_style & WS_EX_DLGMODALFRAME) || ((style & WS_DLGFRAME) && !(style & WS_THICKFRAME)); @@ -2404,6 +2411,7 @@ LRESULT default_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, break; case WM_CANCELMODE: + menu_sys_key = 0; end_menu( hwnd ); if (get_capture() == hwnd) release_capture(); break; @@ -2443,6 +2451,78 @@ LRESULT default_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, result = handle_sys_command( hwnd, wparam, lparam ); break; + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_MBUTTONDOWN: + f10_key = menu_sys_key = 0; + break; + + case WM_KEYDOWN: + if (wparam == VK_F10) f10_key = VK_F10; + break; + + case WM_SYSKEYDOWN: + if (HIWORD( lparam ) & KEYDATA_ALT) + { + if ((wparam == VK_MENU || wparam == VK_LMENU || wparam == VK_RMENU) && !menu_sys_key) + menu_sys_key = 1; + else + menu_sys_key = 0; + + f10_key = 0; + + if (wparam == VK_F4) /* try to close the window */ + { + HWND top = NtUserGetAncestor( hwnd, GA_ROOT ); + if (!(get_class_long( top, GCL_STYLE, FALSE ) & CS_NOCLOSE)) + NtUserPostMessage( top, WM_SYSCOMMAND, SC_CLOSE, 0 ); + } + } + else if (wparam == VK_F10) + { + if (NtUserGetKeyState(VK_SHIFT) & 0x8000) + send_message( hwnd, WM_CONTEXTMENU, (WPARAM)hwnd, -1 ); + f10_key = 1; + } + else if (wparam == VK_ESCAPE && (NtUserGetKeyState( VK_SHIFT ) & 0x8000)) + send_message( hwnd, WM_SYSCOMMAND, SC_KEYMENU, ' ' ); + break; + + case WM_KEYUP: + case WM_SYSKEYUP: + /* Press and release F10 or ALT */ + if (((wparam == VK_MENU || wparam == VK_LMENU || wparam == VK_RMENU) && menu_sys_key) || + (wparam == VK_F10 && f10_key)) + send_message( NtUserGetAncestor( hwnd, GA_ROOT ), WM_SYSCOMMAND, SC_KEYMENU, 0 ); + menu_sys_key = f10_key = 0; + break; + + case WM_SYSCHAR: + menu_sys_key = 0; + if (wparam == '\r' && is_iconic( hwnd )) + { + NtUserPostMessage( hwnd, WM_SYSCOMMAND, SC_RESTORE, 0 ); + break; + } + if ((HIWORD( lparam ) & KEYDATA_ALT) && wparam) + { + WCHAR wch; + if (ansi) + { + char ch = wparam; + win32u_mbtowc( &ansi_cp, &wch, 1, &ch, 1 ); + } + else wch = wparam; + if (wch == '\t' || wch == '\x1b') break; + if (wch == ' ' && (get_window_long( hwnd, GWL_STYLE ) & WS_CHILD)) + send_message( get_parent( hwnd ), msg, wch, lparam ); + else + send_message( hwnd, WM_SYSCOMMAND, SC_KEYMENU, wch ); + } + else if (wparam != '\x1b') /* Ctrl-Esc */ + message_beep(0); + break; + case WM_KEYF1: { HELPINFO hi;
1
0
0
0
Jactry Zeng : include: Add definition of ScriptPlaceOpenType().
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: 039598805282a26327421ce1be42cb003bd988a3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=039598805282a26327421ce1…
Author: Jactry Zeng <jzeng(a)codeweavers.com> Date: Mon Jun 20 02:31:25 2022 -0500 include: Add definition of ScriptPlaceOpenType(). Signed-off-by: Jactry Zeng <jzeng(a)codeweavers.com> --- include/usp10.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/usp10.h b/include/usp10.h index db18a5b409e..00f2fc2f2d4 100644 --- a/include/usp10.h +++ b/include/usp10.h @@ -285,6 +285,11 @@ HRESULT WINAPI ScriptShapeOpenType(HDC hdc, SCRIPT_CACHE *psc, SCRIPT_ANALYSIS * int *pcGlyphs); HRESULT WINAPI ScriptPlace(HDC hdc, SCRIPT_CACHE *psc, const WORD *pwGlyphs, int cGlyphs, const SCRIPT_VISATTR *psva, SCRIPT_ANALYSIS *psa, int *piAdvance, GOFFSET *pGoffset, ABC *pABC ); +HRESULT WINAPI ScriptPlaceOpenType(HDC hdc, SCRIPT_CACHE *psc, SCRIPT_ANALYSIS *psa, OPENTYPE_TAG tagScript, + OPENTYPE_TAG tagLangSys, int *rcRangeChars, TEXTRANGE_PROPERTIES **rpRangeProperties, + int cRanges, const WCHAR *pwcChars, WORD *pwLogClust, SCRIPT_CHARPROP *pCharProps, + int cChars, const WORD *pwGlyphs, const SCRIPT_GLYPHPROP *pGlyphProps, int cGlyphs, + int *piAdvance, GOFFSET *pGoffset, ABC *pABC); HRESULT WINAPI ScriptBreak(const WCHAR *pwcChars, int cChars, const SCRIPT_ANALYSIS *psa, SCRIPT_LOGATTR *psla); HRESULT WINAPI ScriptCacheGetHeight(HDC hdc, SCRIPT_CACHE *psc, LONG *tmHeight); HRESULT WINAPI ScriptCPtoX(int iCP, BOOL fTrailing, int cChars, int cGlyphs, const WORD *pwLogClust, const SCRIPT_VISATTR *psva,
1
0
0
0
Alex Henrie : shell32/tests: Add tests for Program Manager name sanitization.
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: 33f65267b5c7569ece08b3c6dd2a5344db0c9ab4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=33f65267b5c7569ece08b3c6…
Author: Alex Henrie <alexhenrie24(a)gmail.com> Date: Fri Jun 17 12:33:13 2022 -0600 shell32/tests: Add tests for Program Manager name sanitization. Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/shell32/tests/progman_dde.c | 72 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/dlls/shell32/tests/progman_dde.c b/dlls/shell32/tests/progman_dde.c index 5d532f9222f..cb1ff8ddb9f 100644 --- a/dlls/shell32/tests/progman_dde.c +++ b/dlls/shell32/tests/progman_dde.c @@ -23,7 +23,7 @@ * functionality * - Todo: Handle CommonGroupFlag * Better AddItem Tests (Lots of parameters to test) - * Tests for Invalid Characters in Names / Invalid Parameters + * Tests for invalid parameters */ #include <stdio.h> @@ -425,6 +425,75 @@ static void test_request_groups(DWORD instance, HCONV hconv) FindClose(hfind); } +static void test_name_sanitization(DWORD instance, HCONV hConv) +{ + static const char original_name[] = "\x01\x1F !#$%&'*+,-./:;<=>?@[\\]^`{|}~\x7F\xFF"; + static const char sanitized_name[] = "__ !#$%&'_+,-.__;_=__@[_]^`{_}~\x7F\xFF"; + char buf[128]; + UINT error; + + if (0) /* the directory isn't deleted on windows < 7 */ + { + error = dde_execute(instance, hConv, "[CreateGroup(\" \")]"); + ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %#x\n", error); + ok(check_exists(" "), "directory not created\n"); + ok(!check_window_exists(" "), "window should not exist\n"); + + error = dde_execute(instance, hConv, "[DeleteGroup(\" \")]"); + ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %#x\n", error); + ok(!check_exists(" "), "directory should not exist\n"); + } + + if (0) /* these calls will actually delete the start menu */ + { + error = dde_execute(instance, hConv, "[DeleteGroup(\"\")]"); + ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %#x\n", error); + ok(!check_exists("../Programs"), "directory should not exist\n"); + + error = dde_execute(instance, hConv, "[DeleteGroup(\"..\")]"); + ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %#x\n", error); + ok(!check_exists("../../Start Menu"), "directory should not exist\n"); + } + + sprintf(buf, "[CreateGroup(\"Group%s\")]", original_name); + error = dde_execute(instance, hConv, buf); + ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %#x\n", error); + sprintf(buf, "Group%s", sanitized_name); + todo_wine ok(check_exists(buf), "directory not created\n"); + if (!check_exists(buf)) return; + ok(check_window_exists(buf), "window not created\n"); + + sprintf(buf, "[ShowGroup(\"Group%s\", 0)]", original_name); + error = dde_execute(instance, hConv, buf); + ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %#x\n", error); + sprintf(buf, "Group%s", sanitized_name); + ok(check_window_exists(buf), "window not created\n"); + + sprintf(buf, "[AddItem(notepad,\"Notepad%s\")]", original_name); + error = dde_execute(instance, hConv, buf); + ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %#x\n", error); + sprintf(buf, "Group%s/Notepad%s.lnk", sanitized_name, sanitized_name); + ok(check_exists(buf), "link not created\n"); + + sprintf(buf, "[ReplaceItem(\"Notepad%s\")]", original_name); + error = dde_execute(instance, hConv, buf); + ok(error == DMLERR_NOTPROCESSED, "expected DMLERR_NOTPROCESSED, got %#x\n", error); + sprintf(buf, "Group%s/Notepad%s.lnk", sanitized_name, sanitized_name); + ok(check_exists(buf), "link should still exist\n"); + + sprintf(buf, "[DeleteItem(\"Notepad%s\")]", original_name); + error = dde_execute(instance, hConv, buf); + ok(error == DMLERR_NOTPROCESSED, "expected DMLERR_NOTPROCESSED, got %#x\n", error); + sprintf(buf, "Group%s/Notepad%s.lnk", sanitized_name, sanitized_name); + ok(check_exists(buf), "link should still exist\n"); + + sprintf(buf, "[DeleteGroup(\"Group%s\")]", original_name); + error = dde_execute(instance, hConv, buf); + ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %#x\n", error); + sprintf(buf, "Group%s", sanitized_name); + ok(!check_exists(buf), "directory should not exist\n"); +} + START_TEST(progman_dde) { DWORD instance = 0; @@ -479,6 +548,7 @@ START_TEST(progman_dde) /* Run Tests */ test_progman_dde2(instance, hConv); + test_name_sanitization(instance, hConv); /* Cleanup & Exit */ ret = DdeDisconnect(hConv);
1
0
0
0
Nikolay Sivov : d2d1/effect: Move effect instance creation to the device context.
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: a2935a518bfd3d6180a4d4d12851181e0278f6a2 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a2935a518bfd3d6180a4d4d1…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 19 21:39:07 2022 +0300 d2d1/effect: Move effect instance creation to the device context. Creating new effects from effect context does not reuse calling context. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/device.c | 23 ++++++++++++++++++++--- dlls/d2d1/effect.c | 18 ++---------------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/dlls/d2d1/device.c b/dlls/d2d1/device.c index 62eb98a94a1..be7b8f9f8e2 100644 --- a/dlls/d2d1/device.c +++ b/dlls/d2d1/device.c @@ -1947,18 +1947,35 @@ static HRESULT STDMETHODCALLTYPE d2d_device_context_CreateEffect(ID2D1DeviceCont { struct d2d_device_context *context = impl_from_ID2D1DeviceContext(iface); struct d2d_effect_context *effect_context; + struct d2d_effect *object; HRESULT hr; - FIXME("iface %p, effect_id %s, effect %p stub!\n", iface, debugstr_guid(effect_id), effect); + TRACE("iface %p, effect_id %s, effect %p.\n", iface, debugstr_guid(effect_id), effect); if (!(effect_context = calloc(1, sizeof(*effect_context)))) return E_OUTOFMEMORY; d2d_effect_context_init(effect_context, context); - hr = ID2D1EffectContext_CreateEffect(&effect_context->ID2D1EffectContext_iface, effect_id, effect); + if (!(object = calloc(1, sizeof(*object)))) + { + ID2D1EffectContext_Release(&effect_context->ID2D1EffectContext_iface); + return E_OUTOFMEMORY; + } + hr = d2d_effect_init(object, effect_context, effect_id); ID2D1EffectContext_Release(&effect_context->ID2D1EffectContext_iface); - return hr; + if (FAILED(hr)) + { + WARN("Failed to initialise effect, hr %#lx.\n", hr); + free(object); + return hr; + } + + *effect = &object->ID2D1Effect_iface; + + TRACE("Created effect %p.\n", *effect); + + return S_OK; } static HRESULT STDMETHODCALLTYPE d2d_device_context_ID2D1DeviceContext_CreateGradientStopCollection( diff --git a/dlls/d2d1/effect.c b/dlls/d2d1/effect.c index 78db9489be9..f5d5494c67a 100644 --- a/dlls/d2d1/effect.c +++ b/dlls/d2d1/effect.c @@ -123,25 +123,11 @@ static HRESULT STDMETHODCALLTYPE d2d_effect_context_CreateEffect(ID2D1EffectCont REFCLSID clsid, ID2D1Effect **effect) { struct d2d_effect_context *effect_context = impl_from_ID2D1EffectContext(iface); - struct d2d_effect *object; - HRESULT hr; TRACE("iface %p, clsid %s, effect %p.\n", iface, debugstr_guid(clsid), effect); - if (!(object = calloc(1, sizeof(*object)))) - return E_OUTOFMEMORY; - - if (FAILED(hr = d2d_effect_init(object, effect_context, clsid))) - { - WARN("Failed to initialise effect, hr %#lx.\n", hr); - free(object); - return hr; - } - - TRACE("Created effect %p.\n", object); - *effect = &object->ID2D1Effect_iface; - - return S_OK; + return ID2D1DeviceContext1_CreateEffect(&effect_context->device_context->ID2D1DeviceContext1_iface, + clsid, effect); } static HRESULT STDMETHODCALLTYPE d2d_effect_context_GetMaximumSupportedFeatureLevel(ID2D1EffectContext *iface,
1
0
0
0
Nikolay Sivov : d2d1/effect: Add CheckFeatureSupport().
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: 7eabfd477ffea9d17d5ed020cd6aa693a1f8e302 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7eabfd477ffea9d17d5ed020…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 19 20:38:37 2022 +0300 d2d1/effect: Add CheckFeatureSupport(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/effect.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/dlls/d2d1/effect.c b/dlls/d2d1/effect.c index d298985c020..78db9489be9 100644 --- a/dlls/d2d1/effect.c +++ b/dlls/d2d1/effect.c @@ -359,9 +359,23 @@ static HRESULT STDMETHODCALLTYPE d2d_effect_context_CreateColorContextFromWicCol static HRESULT STDMETHODCALLTYPE d2d_effect_context_CheckFeatureSupport(ID2D1EffectContext *iface, D2D1_FEATURE feature, void *data, UINT32 data_size) { - FIXME("iface %p, feature %#x, data %p, data_size %u stub!\n", iface, feature, data, data_size); + struct d2d_effect_context *effect_context = impl_from_ID2D1EffectContext(iface); + D3D11_FEATURE d3d11_feature; - return E_NOTIMPL; + TRACE("iface %p, feature %#x, data %p, data_size %u.\n", iface, feature, data, data_size); + + /* Data structures are compatible. */ + switch (feature) + { + case D2D1_FEATURE_DOUBLES: d3d11_feature = D3D11_FEATURE_DOUBLES; break; + case D2D1_FEATURE_D3D10_X_HARDWARE_OPTIONS: d3d11_feature = D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS; break; + default: + WARN("Unexpected feature index %d.\n", feature); + return E_INVALIDARG; + } + + return ID3D11Device1_CheckFeatureSupport(effect_context->device_context->d3d_device, + d3d11_feature, data, data_size); } static BOOL STDMETHODCALLTYPE d2d_effect_context_IsBufferPrecisionSupported(ID2D1EffectContext *iface,
1
0
0
0
Nikolay Sivov : d2d1/effect: Add LoadComputeShader().
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: 89e1a7614e17c63781585af5662654a16320f995 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=89e1a7614e17c63781585af5…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 19 20:11:26 2022 +0300 d2d1/effect: Add LoadComputeShader(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/effect.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/dlls/d2d1/effect.c b/dlls/d2d1/effect.c index 2da655b00d8..d298985c020 100644 --- a/dlls/d2d1/effect.c +++ b/dlls/d2d1/effect.c @@ -247,10 +247,27 @@ static HRESULT STDMETHODCALLTYPE d2d_effect_context_LoadVertexShader(ID2D1Effect static HRESULT STDMETHODCALLTYPE d2d_effect_context_LoadComputeShader(ID2D1EffectContext *iface, REFGUID shader_id, const BYTE *buffer, UINT32 buffer_size) { - FIXME("iface %p, shader_id %s, buffer %p, buffer_size %u stub!\n", + struct d2d_effect_context *effect_context = impl_from_ID2D1EffectContext(iface); + ID3D11ComputeShader *shader; + HRESULT hr; + + TRACE("iface %p, shader_id %s, buffer %p, buffer_size %u.\n", iface, debugstr_guid(shader_id), buffer, buffer_size); - return E_NOTIMPL; + if (ID2D1EffectContext_IsShaderLoaded(iface, shader_id)) + return S_OK; + + if (FAILED(hr = ID3D11Device1_CreateComputeShader(effect_context->device_context->d3d_device, + buffer, buffer_size, NULL, &shader))) + { + WARN("Failed to create a compute shader, hr %#lx.\n", hr); + return hr; + } + + hr = d2d_effect_context_add_shader(effect_context, shader_id, shader); + ID3D11ComputeShader_Release(shader); + + return hr; } static BOOL STDMETHODCALLTYPE d2d_effect_context_IsShaderLoaded(ID2D1EffectContext *iface, REFGUID shader_id)
1
0
0
0
Nikolay Sivov : d2d1/effect: Add LoadPixelShader().
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: f15b3172602fc41c61c8e8353083d24895469208 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f15b3172602fc41c61c8e835…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 19 20:08:26 2022 +0300 d2d1/effect: Add LoadPixelShader(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/effect.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/dlls/d2d1/effect.c b/dlls/d2d1/effect.c index 8345a5aa7d7..2da655b00d8 100644 --- a/dlls/d2d1/effect.c +++ b/dlls/d2d1/effect.c @@ -195,10 +195,27 @@ static HRESULT STDMETHODCALLTYPE d2d_effect_context_CreateBoundsAdjustmentTransf static HRESULT STDMETHODCALLTYPE d2d_effect_context_LoadPixelShader(ID2D1EffectContext *iface, REFGUID shader_id, const BYTE *buffer, UINT32 buffer_size) { - FIXME("iface %p, shader_id %s, buffer %p, buffer_size %u stub!\n", + struct d2d_effect_context *effect_context = impl_from_ID2D1EffectContext(iface); + ID3D11PixelShader *shader; + HRESULT hr; + + TRACE("iface %p, shader_id %s, buffer %p, buffer_size %u.\n", iface, debugstr_guid(shader_id), buffer, buffer_size); - return E_NOTIMPL; + if (ID2D1EffectContext_IsShaderLoaded(iface, shader_id)) + return S_OK; + + if (FAILED(hr = ID3D11Device1_CreatePixelShader(effect_context->device_context->d3d_device, + buffer, buffer_size, NULL, &shader))) + { + WARN("Failed to create a pixel shader, hr %#lx.\n", hr); + return hr; + } + + hr = d2d_effect_context_add_shader(effect_context, shader_id, shader); + ID3D11PixelShader_Release(shader); + + return hr; } static HRESULT STDMETHODCALLTYPE d2d_effect_context_LoadVertexShader(ID2D1EffectContext *iface,
1
0
0
0
Nikolay Sivov : d2d1/effect: Forward color context methods to corresponding device context.
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: 38e6653489c51979f2228c79aeaeaf25269a6040 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=38e6653489c51979f2228c79…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 19 00:41:22 2022 +0300 d2d1/effect: Forward color context methods to corresponding device context. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/effect.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/dlls/d2d1/effect.c b/dlls/d2d1/effect.c index fb5e26273f6..8345a5aa7d7 100644 --- a/dlls/d2d1/effect.c +++ b/dlls/d2d1/effect.c @@ -291,26 +291,35 @@ static HRESULT STDMETHODCALLTYPE d2d_effect_context_FindVertexBuffer(ID2D1Effect static HRESULT STDMETHODCALLTYPE d2d_effect_context_CreateColorContext(ID2D1EffectContext *iface, D2D1_COLOR_SPACE space, const BYTE *profile, UINT32 profile_size, ID2D1ColorContext **color_context) { - FIXME("iface %p, space %#x, profile %p, profile_size %u, color_context %p stub!\n", + struct d2d_effect_context *effect_context = impl_from_ID2D1EffectContext(iface); + + TRACE("iface %p, space %#x, profile %p, profile_size %u, color_context %p.\n", iface, space, profile, profile_size, color_context); - return E_NOTIMPL; + return ID2D1DeviceContext1_CreateColorContext(&effect_context->device_context->ID2D1DeviceContext1_iface, + space, profile, profile_size, color_context); } static HRESULT STDMETHODCALLTYPE d2d_effect_context_CreateColorContextFromFilename(ID2D1EffectContext *iface, const WCHAR *filename, ID2D1ColorContext **color_context) { - FIXME("iface %p, filename %s, color_context %p stub!\n", iface, debugstr_w(filename), color_context); + struct d2d_effect_context *effect_context = impl_from_ID2D1EffectContext(iface); - return E_NOTIMPL; + TRACE("iface %p, filename %s, color_context %p.\n", iface, debugstr_w(filename), color_context); + + return ID2D1DeviceContext1_CreateColorContextFromFilename(&effect_context->device_context->ID2D1DeviceContext1_iface, + filename, color_context); } static HRESULT STDMETHODCALLTYPE d2d_effect_context_CreateColorContextFromWicColorContext(ID2D1EffectContext *iface, IWICColorContext *wic_color_context, ID2D1ColorContext **color_context) { - FIXME("iface %p, wic_color_context %p, color_context %p stub!\n", iface, wic_color_context, color_context); + struct d2d_effect_context *effect_context = impl_from_ID2D1EffectContext(iface); - return E_NOTIMPL; + TRACE("iface %p, wic_color_context %p, color_context %p.\n", iface, wic_color_context, color_context); + + return ID2D1DeviceContext1_CreateColorContextFromWicColorContext(&effect_context->device_context->ID2D1DeviceContext1_iface, + wic_color_context, color_context); } static HRESULT STDMETHODCALLTYPE d2d_effect_context_CheckFeatureSupport(ID2D1EffectContext *iface,
1
0
0
0
Ziqing Hui : d2d1: Implement UnregisterEffect().
by Alexandre Julliard
20 Jun '22
20 Jun '22
Module: wine Branch: master Commit: fd9f1e44a7e14a02826e12e9b1eec1540120fec3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=fd9f1e44a7e14a02826e12e9…
Author: Ziqing Hui <zhui(a)codeweavers.com> Date: Sat Jun 18 19:53:57 2022 +0300 d2d1: Implement UnregisterEffect(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d2d1/factory.c | 20 ++++++++++++++++++-- dlls/d2d1/tests/d2d1.c | 28 +++++++++++++--------------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c index b3875f28209..5c79d1791ff 100644 --- a/dlls/d2d1/factory.c +++ b/dlls/d2d1/factory.c @@ -953,9 +953,25 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_RegisterEffectFromString(ID2D1Facto static HRESULT STDMETHODCALLTYPE d2d_factory_UnregisterEffect(ID2D1Factory3 *iface, REFCLSID effect_id) { - FIXME("iface %p, effect_id %s stub!\n", iface, debugstr_guid(effect_id)); + struct d2d_factory *factory = impl_from_ID2D1Factory3(iface); + struct d2d_effect_registration *effect; - return E_NOTIMPL; + TRACE("iface %p, effect_id %s.\n", iface, debugstr_guid(effect_id)); + + LIST_FOR_EACH_ENTRY(effect, &factory->effects, struct d2d_effect_registration, entry) + { + if (IsEqualGUID(effect_id, &effect->id)) + { + if (!--effect->registration_count) + { + list_remove(&effect->entry); + d2d_effect_registration_cleanup(effect); + } + return S_OK; + } + } + + return D2DERR_EFFECT_IS_NOT_REGISTERED; } static HRESULT STDMETHODCALLTYPE d2d_factory_GetRegisteredEffects(ID2D1Factory3 *iface, diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 752e34bf4da..f1cec1d7a0b 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -10715,7 +10715,7 @@ static void test_effect_register(BOOL d3d11) winetest_push_context("Test %u", i); hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, test->xml, NULL, 0, effect_impl_create); - todo_wine_if(test->hr != S_OK) + todo_wine_if(i == 5) ok(hr == test->hr, "Got unexpected hr %#lx, expected %#lx.\n", hr, test->hr); if (hr == S_OK) { @@ -10723,9 +10723,9 @@ static void test_effect_register(BOOL d3d11) hr = ID2D1DeviceContext_CreateEffect(device_context, &CLSID_TestEffect, &effect); todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); + ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); if (effect) ID2D1Effect_Release(effect); } @@ -10748,11 +10748,11 @@ static void test_effect_register(BOOL d3d11) hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, test->xml, NULL, 0, effect_impl_create); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); + ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); winetest_pop_context(); } @@ -10787,9 +10787,9 @@ static void test_effect_register(BOOL d3d11) } hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); /* Register effect with property binding */ for (i = 0; i < ARRAY_SIZE(binding_tests); ++i) @@ -10799,7 +10799,6 @@ static void test_effect_register(BOOL d3d11) hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect, test->effect_xml, test->binding, test->binding_count, effect_impl_create); - todo_wine_if(test->hr != S_OK) ok(hr == test->hr, "Got unexpected hr %#lx, expected %#lx.\n", hr, test->hr); ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); @@ -10848,13 +10847,13 @@ static void test_effect_register(BOOL d3d11) } hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); /* Unregister builtin effect */ hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_D2D1Composite); - todo_wine ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); + ok(hr == D2DERR_EFFECT_IS_NOT_REGISTERED, "Got unexpected hr %#lx.\n", hr); release_test_context(&ctx); } @@ -10932,7 +10931,6 @@ done: if (effect) ID2D1Effect_Release(effect); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); release_test_context(&ctx); } @@ -11089,7 +11087,7 @@ static void test_effect_properties(BOOL d3d11) if (effect) ID2D1Effect_Release(effect); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); winetest_pop_context(); } @@ -11182,7 +11180,7 @@ done: if (effect) ID2D1Effect_Release(effect); hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect); - todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); release_test_context(&ctx); }
1
0
0
0
← Newer
1
...
26
27
28
29
30
31
32
...
80
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Results per page:
10
25
50
100
200