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
March 2019
----- 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
1097 discussions
Start a n
N
ew thread
Jacek Caban : mshtml: Move cycle collection to detach_gecko_browser.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: 98db6a0d9b8fc95da3781ce8ea8ea36519866649 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=98db6a0d9b8fc95da3781ce8…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 12 16:10:10 2019 +0100 mshtml: Move cycle collection to detach_gecko_browser. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmldoc.c | 11 ----------- dlls/mshtml/nsembed.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 56a8617..7820cdb 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -5300,11 +5300,6 @@ static ULONG WINAPI HTMLDocumentObj_Release(IUnknown *iface) TRACE("(%p) ref = %u\n", This, ref); if(!ref) { - nsIDOMWindowUtils *window_utils = NULL; - - if(This->basedoc.window && This->basedoc.window->nswindow) - get_nsinterface((nsISupports*)This->basedoc.window->nswindow, &IID_nsIDOMWindowUtils, (void**)&window_utils); - if(This->basedoc.doc_node) { This->basedoc.doc_node->basedoc.doc_obj = NULL; htmldoc_release(&This->basedoc.doc_node->basedoc); @@ -5344,12 +5339,6 @@ static ULONG WINAPI HTMLDocumentObj_Release(IUnknown *iface) if(This->nscontainer) detach_gecko_browser(This->nscontainer); heap_free(This); - - /* Force cycle collection */ - if(window_utils) { - nsIDOMWindowUtils_CycleCollect(window_utils, NULL, 0); - nsIDOMWindowUtils_Release(window_utils); - } } return ref; diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 397011a..86a8f31 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -2181,11 +2181,15 @@ HRESULT create_gecko_browser(HTMLDocumentObj *doc, GeckoBrowser **_ret) void detach_gecko_browser(GeckoBrowser *This) { + nsIDOMWindowUtils *window_utils = NULL; + TRACE("(%p)\n", This); This->doc = NULL; if(This->content_window) { + get_nsinterface((nsISupports*)This->content_window->nswindow, &IID_nsIDOMWindowUtils, (void**)&window_utils); + IHTMLWindow2_Release(&This->content_window->base.IHTMLWindow2_iface); This->content_window = NULL; } @@ -2243,6 +2247,12 @@ void detach_gecko_browser(GeckoBrowser *This) } nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface); + + /* Force cycle collection */ + if(window_utils) { + nsIDOMWindowUtils_CycleCollect(window_utils, NULL, 0); + nsIDOMWindowUtils_Release(window_utils); + } } /*
1
0
0
0
Jacek Caban : mshtml: Move script mode handling to GeckoBrowser.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: 96604df69024df81734e7f86daf6a0a41bcecabc URL:
https://source.winehq.org/git/wine.git/?a=commit;h=96604df69024df81734e7f86…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 12 16:09:57 2019 +0100 mshtml: Move script mode handling to GeckoBrowser. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mshtml/htmlscript.h | 2 +- dlls/mshtml/htmlwindow.c | 1 - dlls/mshtml/mshtml_private.h | 18 +++++++++++------- dlls/mshtml/nsembed.c | 1 + dlls/mshtml/persist.c | 19 +++---------------- dlls/mshtml/script.c | 42 +++++++++++++++++++++++++++++------------- 6 files changed, 45 insertions(+), 38 deletions(-) diff --git a/dlls/mshtml/htmlscript.h b/dlls/mshtml/htmlscript.h index e63e973..5b8b90e 100644 --- a/dlls/mshtml/htmlscript.h +++ b/dlls/mshtml/htmlscript.h @@ -44,6 +44,6 @@ void connect_scripts(HTMLInnerWindow*) DECLSPEC_HIDDEN; void doc_insert_script(HTMLInnerWindow*,HTMLScriptElement*,BOOL) DECLSPEC_HIDDEN; IDispatch *script_parse_event(HTMLInnerWindow*,LPCWSTR) DECLSPEC_HIDDEN; HRESULT exec_script(HTMLInnerWindow*,const WCHAR*,const WCHAR*,VARIANT*) DECLSPEC_HIDDEN; -void set_script_mode(HTMLOuterWindow*,SCRIPTMODE) DECLSPEC_HIDDEN; +void update_browser_script_mode(GeckoBrowser*,IUri*) DECLSPEC_HIDDEN; BOOL find_global_prop(HTMLInnerWindow*,BSTR,DWORD,ScriptHost**,DISPID*) DECLSPEC_HIDDEN; IDispatch *get_script_disp(ScriptHost*) DECLSPEC_HIDDEN; diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index e5d08c9..8caf90e 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -3560,7 +3560,6 @@ HRESULT create_outer_window(GeckoBrowser *browser, mozIDOMWindowProxy *mozwindow nsres = mozIDOMWindowProxy_QueryInterface(mozwindow, &IID_nsIDOMWindow, (void**)&window->nswindow); assert(nsres == NS_OK); - window->scriptmode = parent ? parent->scriptmode : SCRIPTMODE_GECKO; window->readystate = READYSTATE_UNINITIALIZED; window->task_magic = get_task_target_magic(); diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 1fdedce..950f1cc 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -381,11 +381,6 @@ typedef struct HTMLFrameBase HTMLFrameBase; typedef struct GeckoBrowser GeckoBrowser; typedef struct HTMLAttributeCollection HTMLAttributeCollection; -typedef enum { - SCRIPTMODE_GECKO, - SCRIPTMODE_ACTIVESCRIPT -} SCRIPTMODE; - typedef struct ScriptHost ScriptHost; typedef enum { @@ -500,8 +495,6 @@ struct HTMLOuterWindow { BSTR url; DWORD load_flags; - SCRIPTMODE scriptmode; - struct list sibling_entry; struct wine_rb_entry entry; }; @@ -699,6 +692,12 @@ struct HTMLDocumentObj { typedef struct nsWeakReference nsWeakReference; + +typedef enum { + SCRIPTMODE_GECKO, + SCRIPTMODE_ACTIVESCRIPT +} SCRIPTMODE; + struct GeckoBrowser { nsIWebBrowserChrome nsIWebBrowserChrome_iface; nsIContextMenuListener nsIContextMenuListener_iface; @@ -727,6 +726,7 @@ struct GeckoBrowser { nsIURIContentListener *content_listener; HWND hwnd; + SCRIPTMODE script_mode; struct list document_nodes; struct list outer_windows; @@ -998,6 +998,10 @@ HRESULT HTMLDOMTextNode_Create(HTMLDocumentNode*,nsIDOMNode*,HTMLDOMNode**) DECL BOOL variant_to_nscolor(const VARIANT *v, nsAString *nsstr) DECLSPEC_HIDDEN; HRESULT nscolor_to_str(LPCWSTR color, BSTR *ret) DECLSPEC_HIDDEN; +static inline BOOL is_main_content_window(HTMLOuterWindow *window) +{ + return window->browser && window == window->browser->content_window; +} struct HTMLAttributeCollection { DispatchEx dispex; diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index c05c83a..397011a 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -2167,6 +2167,7 @@ HRESULT create_gecko_browser(HTMLDocumentObj *doc, GeckoBrowser **_ret) ret->doc = doc; ret->ref = 1; + ret->script_mode = SCRIPTMODE_ACTIVESCRIPT; list_init(&ret->document_nodes); list_init(&ret->outer_windows); diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index 926689d..64aa812 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -57,21 +57,6 @@ typedef struct { LPOLESTR url; } download_proc_task_t; -static BOOL use_gecko_script(HTMLOuterWindow *window) -{ - DWORD zone; - HRESULT hres; - - hres = IInternetSecurityManager_MapUrlToZone(get_security_manager(), window->url, &zone, 0); - if(FAILED(hres)) { - WARN("Could not map %s to zone: %08x\n", debugstr_w(window->url), hres); - return TRUE; - } - - TRACE("zone %d\n", zone); - return zone == URLZONE_UNTRUSTED; -} - static void notify_travellog_update(HTMLDocumentObj *doc) { IOleCommandTarget *cmdtrg; @@ -179,7 +164,9 @@ void set_current_mon(HTMLOuterWindow *This, IMoniker *mon, DWORD flags) set_current_uri(This, uri); if(uri) IUri_Release(uri); - set_script_mode(This, use_gecko_script(This) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT); + + if(is_main_content_window(This)) + update_browser_script_mode(This->browser, uri); } HRESULT create_uri(const WCHAR *uri_str, DWORD flags, IUri **uri) diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index de2bb7f..6ad5c48 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -1269,8 +1269,7 @@ static ScriptHost *get_elem_script_host(HTMLInnerWindow *window, HTMLScriptEleme return NULL; } - if(IsEqualGUID(&CLSID_JScript, &guid) - && (!window->base.outer_window || window->base.outer_window->scriptmode != SCRIPTMODE_ACTIVESCRIPT)) { + if(IsEqualGUID(&CLSID_JScript, &guid) && (!window->doc->browser || window->doc->browser->script_mode != SCRIPTMODE_ACTIVESCRIPT)) { TRACE("Ignoring JScript\n"); return NULL; } @@ -1343,7 +1342,7 @@ IDispatch *script_parse_event(HTMLInnerWindow *window, LPCWSTR text) } if(IsEqualGUID(&CLSID_JScript, &guid) - && (!window->base.outer_window || window->base.outer_window->scriptmode != SCRIPTMODE_ACTIVESCRIPT)) { + && (!window->doc->browser || window->doc->browser->script_mode != SCRIPTMODE_ACTIVESCRIPT)) { TRACE("Ignoring JScript\n"); return NULL; } @@ -1670,27 +1669,44 @@ static BOOL is_jscript_available(void) return available; } -void set_script_mode(HTMLOuterWindow *window, SCRIPTMODE mode) +static BOOL use_gecko_script(IUri *uri) +{ + BSTR display_uri; + DWORD zone; + HRESULT hres; + + hres = IUri_GetDisplayUri(uri, &display_uri); + if(FAILED(hres)) + return FALSE; + + hres = IInternetSecurityManager_MapUrlToZone(get_security_manager(), display_uri, &zone, 0); + SysFreeString(display_uri); + if(FAILED(hres)) { + WARN("Could not map %s to zone: %08x\n", debugstr_w(display_uri), hres); + return TRUE; + } + + TRACE("zone %d\n", zone); + return zone == URLZONE_UNTRUSTED; +} + +void update_browser_script_mode(GeckoBrowser *browser, IUri *uri) { nsIWebBrowserSetup *setup; nsresult nsres; - if(mode == SCRIPTMODE_ACTIVESCRIPT && !is_jscript_available()) { + if(!is_jscript_available()) { TRACE("jscript.dll not available\n"); - window->scriptmode = SCRIPTMODE_GECKO; + browser->script_mode = SCRIPTMODE_GECKO; return; } - window->scriptmode = mode; - - if(!window->doc_obj->nscontainer || !window->doc_obj->nscontainer->webbrowser) - return; + browser->script_mode = use_gecko_script(uri) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT; - nsres = nsIWebBrowser_QueryInterface(window->doc_obj->nscontainer->webbrowser, - &IID_nsIWebBrowserSetup, (void**)&setup); + nsres = nsIWebBrowser_QueryInterface(browser->webbrowser, &IID_nsIWebBrowserSetup, (void**)&setup); if(NS_SUCCEEDED(nsres)) { nsres = nsIWebBrowserSetup_SetProperty(setup, SETUP_ALLOW_JAVASCRIPT, - window->scriptmode == SCRIPTMODE_GECKO); + browser->script_mode == SCRIPTMODE_GECKO); if(NS_SUCCEEDED(nsres)) nsres = nsIWebBrowserSetup_SetProperty(setup, SETUP_DISABLE_NOSCRIPT, TRUE);
1
0
0
0
Jacek Caban : ntdll: Add support for returning previous state argument in event functions.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: 7ba361b47bc95df624eac83c170d6c1a4041d8f8 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7ba361b47bc95df624eac83c…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Mar 11 18:06:39 2019 +0100 ntdll: Add support for returning previous state argument in event functions. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/sync.c | 10 +++------- dlls/ntdll/tests/om.c | 5 ----- include/wine/server_protocol.h | 4 +++- server/event.c | 1 + server/protocol.def | 2 ++ server/request.h | 2 ++ server/trace.c | 7 ++++++- 7 files changed, 17 insertions(+), 14 deletions(-) diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index ac8c7e5..edf081a 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c @@ -405,14 +405,12 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state ) { NTSTATUS ret; - - /* FIXME: set NumberOfThreadsReleased */ - SERVER_START_REQ( event_op ) { req->handle = wine_server_obj_handle( handle ); req->op = SET_EVENT; ret = wine_server_call( req ); + if (!ret && prev_state) *prev_state = reply->state; } SERVER_END_REQ; return ret; @@ -424,15 +422,12 @@ NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state ) NTSTATUS WINAPI NtResetEvent( HANDLE handle, LONG *prev_state ) { NTSTATUS ret; - - /* resetting an event can't release any thread... */ - if (prev_state) *prev_state = 0; - SERVER_START_REQ( event_op ) { req->handle = wine_server_obj_handle( handle ); req->op = RESET_EVENT; ret = wine_server_call( req ); + if (!ret && prev_state) *prev_state = reply->state; } SERVER_END_REQ; return ret; @@ -464,6 +459,7 @@ NTSTATUS WINAPI NtPulseEvent( HANDLE handle, LONG *prev_state ) req->handle = wine_server_obj_handle( handle ); req->op = PULSE_EVENT; ret = wine_server_call( req ); + if (!ret && prev_state) *prev_state = reply->state; } SERVER_END_REQ; return ret; diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c index 0047a1d..84f97d4 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c @@ -1622,7 +1622,6 @@ static void test_event(void) status = pNtPulseEvent(Event, &prev_state); ok( status == STATUS_SUCCESS, "NtPulseEvent failed %08x\n", status ); - todo_wine ok( !prev_state, "prev_state = %x\n", prev_state ); status = pNtQueryEvent(Event, EventBasicInformation, &info, sizeof(info), NULL); @@ -1643,17 +1642,14 @@ static void test_event(void) status = pNtSetEvent( Event, &prev_state ); ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status ); - todo_wine ok( !prev_state, "prev_state = %x\n", prev_state ); status = pNtSetEvent( Event, &prev_state ); ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status ); - todo_wine ok( prev_state == 1, "prev_state = %x\n", prev_state ); status = pNtResetEvent( Event, &prev_state ); ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status ); - todo_wine ok( prev_state == 1, "prev_state = %x\n", prev_state ); status = pNtResetEvent( Event, &prev_state ); @@ -1670,7 +1666,6 @@ static void test_event(void) status = pNtPulseEvent( Event, &prev_state ); ok( status == STATUS_SUCCESS, "NtPulseEvent failed %08x\n", status ); - todo_wine ok( prev_state == 1, "prev_state = %x\n", prev_state ); pNtClose(Event); diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 63f65cd..8b23082e 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -1247,6 +1247,8 @@ struct event_op_request struct event_op_reply { struct reply_header __header; + int state; + char __pad_12[4]; }; enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT }; @@ -6554,6 +6556,6 @@ union generic_reply struct terminate_job_reply terminate_job_reply; }; -#define SERVER_PROTOCOL_VERSION 572 +#define SERVER_PROTOCOL_VERSION 573 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/event.c b/server/event.c index cfc0f6a..750d20a 100644 --- a/server/event.c +++ b/server/event.c @@ -311,6 +311,7 @@ DECL_HANDLER(event_op) struct event *event; if (!(event = get_event_obj( current->process, req->handle, EVENT_MODIFY_STATE ))) return; + reply->state = event->signaled; switch(req->op) { case PULSE_EVENT: diff --git a/server/protocol.def b/server/protocol.def index e65b984..d567846 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -1080,6 +1080,8 @@ struct rawinput_device @REQ(event_op) obj_handle_t handle; /* handle to event */ int op; /* event operation (see below) */ +@REPLY + int state; /* previous state */ @END enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT }; diff --git a/server/request.h b/server/request.h index 4610ca6..f71d775 100644 --- a/server/request.h +++ b/server/request.h @@ -931,6 +931,8 @@ C_ASSERT( sizeof(struct create_event_reply) == 16 ); C_ASSERT( FIELD_OFFSET(struct event_op_request, handle) == 12 ); C_ASSERT( FIELD_OFFSET(struct event_op_request, op) == 16 ); C_ASSERT( sizeof(struct event_op_request) == 24 ); +C_ASSERT( FIELD_OFFSET(struct event_op_reply, state) == 8 ); +C_ASSERT( sizeof(struct event_op_reply) == 16 ); C_ASSERT( FIELD_OFFSET(struct query_event_request, handle) == 12 ); C_ASSERT( sizeof(struct query_event_request) == 16 ); C_ASSERT( FIELD_OFFSET(struct query_event_reply, manual_reset) == 8 ); diff --git a/server/trace.c b/server/trace.c index 41bbe4a..8f4ec0d 100644 --- a/server/trace.c +++ b/server/trace.c @@ -1594,6 +1594,11 @@ static void dump_event_op_request( const struct event_op_request *req ) fprintf( stderr, ", op=%d", req->op ); } +static void dump_event_op_reply( const struct event_op_reply *req ) +{ + fprintf( stderr, " state=%d", req->state ); +} + static void dump_query_event_request( const struct query_event_request *req ) { fprintf( stderr, " handle=%04x", req->handle ); @@ -4865,7 +4870,7 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = { (dump_func)dump_open_thread_reply, (dump_func)dump_select_reply, (dump_func)dump_create_event_reply, - NULL, + (dump_func)dump_event_op_reply, (dump_func)dump_query_event_reply, (dump_func)dump_open_event_reply, (dump_func)dump_create_keyed_event_reply,
1
0
0
0
Jacek Caban : ntdll: Fix event op functions declarations.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: d3660e5901914daab38c95f6b2a7a43dfe6d3eee URL:
https://source.winehq.org/git/wine.git/?a=commit;h=d3660e5901914daab38c95f6…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Mar 11 18:06:32 2019 +0100 ntdll: Fix event op functions declarations. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/except.c | 3 +-- dlls/ntdll/sync.c | 11 ++++------- include/winternl.h | 6 +++--- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/dlls/kernel32/except.c b/dlls/kernel32/except.c index c4f7faf..b8ae077 100644 --- a/dlls/kernel32/except.c +++ b/dlls/kernel32/except.c @@ -364,12 +364,11 @@ static BOOL start_debugger_atomic(PEXCEPTION_POINTERS epointers) { /* ok, our event has been set... we're the winning thread */ BOOL ret = start_debugger( epointers, hRunOnce ); - DWORD tmp; if (!ret) { /* so that the other threads won't be stuck */ - NtSetEvent( hRunOnce, &tmp ); + NtSetEvent( hRunOnce, NULL ); } return ret; } diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index 94819b2..ac8c7e5 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c @@ -402,7 +402,7 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT * NtSetEvent (NTDLL.@) * ZwSetEvent (NTDLL.@) */ -NTSTATUS WINAPI NtSetEvent( HANDLE handle, PULONG NumberOfThreadsReleased ) +NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state ) { NTSTATUS ret; @@ -421,12 +421,12 @@ NTSTATUS WINAPI NtSetEvent( HANDLE handle, PULONG NumberOfThreadsReleased ) /****************************************************************************** * NtResetEvent (NTDLL.@) */ -NTSTATUS WINAPI NtResetEvent( HANDLE handle, PULONG NumberOfThreadsReleased ) +NTSTATUS WINAPI NtResetEvent( HANDLE handle, LONG *prev_state ) { NTSTATUS ret; /* resetting an event can't release any thread... */ - if (NumberOfThreadsReleased) *NumberOfThreadsReleased = 0; + if (prev_state) *prev_state = 0; SERVER_START_REQ( event_op ) { @@ -455,13 +455,10 @@ NTSTATUS WINAPI NtClearEvent ( HANDLE handle ) * FIXME * PulseCount */ -NTSTATUS WINAPI NtPulseEvent( HANDLE handle, PULONG PulseCount ) +NTSTATUS WINAPI NtPulseEvent( HANDLE handle, LONG *prev_state ) { NTSTATUS ret; - if (PulseCount) - FIXME("(%p,%d)\n", handle, *PulseCount); - SERVER_START_REQ( event_op ) { req->handle = wine_server_obj_handle( handle ); diff --git a/include/winternl.h b/include/winternl.h index 46dac7e..147cb1d 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -2425,7 +2425,7 @@ NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN); NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*); -NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG); +NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,LONG*); NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR); NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*); NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*); @@ -2485,7 +2485,7 @@ NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,P NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE); NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE); NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE); -NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG); +NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,LONG*); NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T); NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG); NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG); @@ -2496,7 +2496,7 @@ NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID); NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID); NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG); -NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG); +NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,LONG*); NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID);
1
0
0
0
Jacek Caban : ntdll/tests: Add more event op tests.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: a9d9d585a784fdc7475c788c04e7b7a0843e5eea URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a9d9d585a784fdc7475c788c…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Mar 11 18:06:27 2019 +0100 ntdll/tests: Add more event op tests. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/tests/om.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c index 3f627aa..0047a1d 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c @@ -31,8 +31,10 @@ static VOID (WINAPI *pRtlInitUnicodeString)( PUNICODE_STRING, LPCWSTR ); static VOID (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING); static NTSTATUS (WINAPI *pNtCreateEvent) ( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES, BOOLEAN, BOOLEAN); static NTSTATUS (WINAPI *pNtOpenEvent) ( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES); -static NTSTATUS (WINAPI *pNtPulseEvent) ( HANDLE, PULONG ); +static NTSTATUS (WINAPI *pNtPulseEvent) ( HANDLE, PLONG ); static NTSTATUS (WINAPI *pNtQueryEvent) ( HANDLE, EVENT_INFORMATION_CLASS, PVOID, ULONG, PULONG ); +static NTSTATUS (WINAPI *pNtResetEvent) ( HANDLE, LONG* ); +static NTSTATUS (WINAPI *pNtSetEvent) ( HANDLE, LONG* ); static NTSTATUS (WINAPI *pNtCreateJobObject)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES ); static NTSTATUS (WINAPI *pNtOpenJobObject)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES ); static NTSTATUS (WINAPI *pNtCreateKey)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG, @@ -1605,6 +1607,7 @@ static void test_event(void) { HANDLE Event; HANDLE Event2; + LONG prev_state = 0xdeadbeef; NTSTATUS status; UNICODE_STRING str; OBJECT_ATTRIBUTES attr; @@ -1617,8 +1620,10 @@ static void test_event(void) status = pNtCreateEvent(&Event, GENERIC_ALL, &attr, 1, 0); ok( status == STATUS_SUCCESS, "NtCreateEvent failed %08x\n", status ); - status = pNtPulseEvent(Event, NULL); + status = pNtPulseEvent(Event, &prev_state); ok( status == STATUS_SUCCESS, "NtPulseEvent failed %08x\n", status ); + todo_wine + ok( !prev_state, "prev_state = %x\n", prev_state ); status = pNtQueryEvent(Event, EventBasicInformation, &info, sizeof(info), NULL); ok( status == STATUS_SUCCESS, "NtQueryEvent failed %08x\n", status ); @@ -1629,13 +1634,46 @@ static void test_event(void) ok( status == STATUS_SUCCESS, "NtOpenEvent failed %08x\n", status ); pNtClose(Event); + Event = Event2; - status = pNtQueryEvent(Event2, EventBasicInformation, &info, sizeof(info), NULL); + status = pNtQueryEvent(Event, EventBasicInformation, &info, sizeof(info), NULL); ok( status == STATUS_SUCCESS, "NtQueryEvent failed %08x\n", status ); ok( info.EventType == 1 && info.EventState == 0, "NtQueryEvent failed, expected 1 0, got %d %d\n", info.EventType, info.EventState ); - pNtClose(Event2); + status = pNtSetEvent( Event, &prev_state ); + ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status ); + todo_wine + ok( !prev_state, "prev_state = %x\n", prev_state ); + + status = pNtSetEvent( Event, &prev_state ); + ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status ); + todo_wine + ok( prev_state == 1, "prev_state = %x\n", prev_state ); + + status = pNtResetEvent( Event, &prev_state ); + ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status ); + todo_wine + ok( prev_state == 1, "prev_state = %x\n", prev_state ); + + status = pNtResetEvent( Event, &prev_state ); + ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status ); + ok( !prev_state, "prev_state = %x\n", prev_state ); + + status = pNtPulseEvent( Event, &prev_state ); + ok( status == STATUS_SUCCESS, "NtPulseEvent failed %08x\n", status ); + ok( !prev_state, "prev_state = %x\n", prev_state ); + + status = pNtSetEvent( Event, &prev_state ); + ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status ); + ok( !prev_state, "prev_state = %x\n", prev_state ); + + status = pNtPulseEvent( Event, &prev_state ); + ok( status == STATUS_SUCCESS, "NtPulseEvent failed %08x\n", status ); + todo_wine + ok( prev_state == 1, "prev_state = %x\n", prev_state ); + + pNtClose(Event); } static const WCHAR keyed_nameW[] = {'\\','B','a','s','e','N','a','m','e','d','O','b','j','e','c','t','s', @@ -2139,6 +2177,8 @@ START_TEST(om) pNtOpenEvent = (void *)GetProcAddress(hntdll, "NtOpenEvent"); pNtQueryEvent = (void *)GetProcAddress(hntdll, "NtQueryEvent"); pNtPulseEvent = (void *)GetProcAddress(hntdll, "NtPulseEvent"); + pNtResetEvent = (void *)GetProcAddress(hntdll, "NtResetEvent"); + pNtSetEvent = (void *)GetProcAddress(hntdll, "NtSetEvent"); pNtOpenMutant = (void *)GetProcAddress(hntdll, "NtOpenMutant"); pNtQueryMutant = (void *)GetProcAddress(hntdll, "NtQueryMutant"); pNtReleaseMutant = (void *)GetProcAddress(hntdll, "NtReleaseMutant");
1
0
0
0
Dmitry Timoshkov : advapi32: CryptAcquireContext(CRYPT_DELETEKEYSET) should set returned provider handle to 0.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: cd5c9a2bed6bd62f0f81ae262c0ca32b0d56f62f URL:
https://source.winehq.org/git/wine.git/?a=commit;h=cd5c9a2bed6bd62f0f81ae26…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Tue Mar 12 15:19:11 2019 +0800 advapi32: CryptAcquireContext(CRYPT_DELETEKEYSET) should set returned provider handle to 0. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/advapi32/crypt.c | 1 + dlls/advapi32/tests/crypt.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c index ab1e598..59b2971 100644 --- a/dlls/advapi32/crypt.c +++ b/dlls/advapi32/crypt.c @@ -523,6 +523,7 @@ BOOL WINAPI CryptAcquireContextW (HCRYPTPROV *phProv, LPCWSTR pszContainer, */ if (dwFlags & CRYPT_DELETEKEYSET) { + *phProv = 0; pProv->dwMagic = 0; FreeLibrary(pProv->hModule); CRYPT_Free(provnameA); diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c index 4653f33..adc9c16 100644 --- a/dlls/advapi32/tests/crypt.c +++ b/dlls/advapi32/tests/crypt.c @@ -273,7 +273,6 @@ static void test_incorrect_api_usage(void) result = pCryptAcquireContextA(&hProv2, szBadKeySet, NULL, PROV_RSA_FULL, CRYPT_DELETEKEYSET); ok (result, "%d\n", GetLastError()); -todo_wine ok (hProv2 == 0, "%ld\n", hProv2); if (!result) return; @@ -1183,7 +1182,6 @@ static void test_container_sd(void) ret = CryptAcquireContextA(&prov, "winetest", "Microsoft Enhanced Cryptographic Provider v1.0", PROV_RSA_FULL, CRYPT_MACHINE_KEYSET|CRYPT_DELETEKEYSET); ok(ret, "got %u\n", GetLastError()); -todo_wine ok(prov == 0, "got %ld\n", prov); }
1
0
0
0
Dmitry Timoshkov : advapi32/tests: Add a test for provider handle returned by CryptAcquireContext( CRYPT_DELETEKEYSET).
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: b13b8ccc1fc1603cdc08fc613c0a39d3b566abc7 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b13b8ccc1fc1603cdc08fc61…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Tue Mar 12 15:18:57 2019 +0800 advapi32/tests: Add a test for provider handle returned by CryptAcquireContext(CRYPT_DELETEKEYSET). Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/advapi32/tests/crypt.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c index 13671eb..4653f33 100644 --- a/dlls/advapi32/tests/crypt.c +++ b/dlls/advapi32/tests/crypt.c @@ -268,12 +268,15 @@ static void test_incorrect_api_usage(void) dwTemp = CRYPT_MODE_ECB; result = pCryptSetKeyParam(hKey2, KP_MODE, (BYTE*)&dwTemp, sizeof(DWORD)); ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError()); - + + hProv2 = 0xdeadbeef; result = pCryptAcquireContextA(&hProv2, szBadKeySet, NULL, PROV_RSA_FULL, CRYPT_DELETEKEYSET); ok (result, "%d\n", GetLastError()); +todo_wine + ok (hProv2 == 0, "%ld\n", hProv2); if (!result) return; - + result = pCryptReleaseContext(hProv, 0); ok (result, "%d\n", GetLastError()); if (!result) return; @@ -1176,9 +1179,12 @@ static void test_container_sd(void) ret = CryptReleaseContext(prov, 0); ok(ret, "got %u\n", GetLastError()); + prov = 0xdeadbeef; ret = CryptAcquireContextA(&prov, "winetest", "Microsoft Enhanced Cryptographic Provider v1.0", PROV_RSA_FULL, CRYPT_MACHINE_KEYSET|CRYPT_DELETEKEYSET); ok(ret, "got %u\n", GetLastError()); +todo_wine + ok(prov == 0, "got %ld\n", prov); } START_TEST(crypt)
1
0
0
0
Francois Gouget : user32/tests: Remove a space before a '\n'.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: c530d4943fdb157556f96d7010cdde6bd7d0fdd3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=c530d4943fdb157556f96d70…
Author: Francois Gouget <fgouget(a)free.fr> Date: Tue Mar 12 13:43:09 2019 +0100 user32/tests: Remove a space before a '\n'. Signed-off-by: Francois Gouget <fgouget(a)free.fr> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/user32/tests/monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c index 8bf284a..c5e6745 100644 --- a/dlls/user32/tests/monitor.c +++ b/dlls/user32/tests/monitor.c @@ -195,7 +195,7 @@ static void test_enumdisplaydevices_monitor(int adapter_index, int monitor_index sscanf(device->DeviceID, "\\\\?\\DISPLAY#Default_Monitor#%[^#]#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}", buffer) == 1 || /* win8+ */ (!lstrcmpiA(buffer, device_id_prefix) && sscanf(device->DeviceID + sizeof(device_id_prefix) - 1, "%04d", &number) == 1), /* XP/2003 ignores EDD_GET_DEVICE_INTERFACE_NAME */ - "#%d: wrong DeviceID : %s \n", monitor_index, device->DeviceID); + "#%d: wrong DeviceID : %s\n", monitor_index, device->DeviceID); } else {
1
0
0
0
Francois Gouget : mfplat/tests: Fix the trailing '\n's in ok() messages.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: 1b9573c84e2c9ef801272d7f67c8d9a12a17b1bd URL:
https://source.winehq.org/git/wine.git/?a=commit;h=1b9573c84e2c9ef801272d7f…
Author: Francois Gouget <fgouget(a)free.fr> Date: Tue Mar 12 13:42:44 2019 +0100 mfplat/tests: Fix the trailing '\n's in ok() messages. Signed-off-by: Francois Gouget <fgouget(a)free.fr> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfplat/tests/mfplat.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index ca00ac1..aa8029c 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -1073,9 +1073,9 @@ static void test_MFCreateAsyncResult(void) ok(state == (IUnknown *)result, "Unexpected state.\n"); refcount = IMFAsyncResult_Release(result2); - ok(!refcount, "Unexpected refcount %u\n.", refcount); + ok(!refcount, "Unexpected refcount %u.\n", refcount); refcount = IMFAsyncResult_Release(result); - ok(!refcount, "Unexpected refcount %u\n.", refcount); + ok(!refcount, "Unexpected refcount %u.\n", refcount); /* Event handle is closed on release. */ hr = MFCreateAsyncResult(NULL, NULL, NULL, &result); @@ -1088,7 +1088,7 @@ static void test_MFCreateAsyncResult(void) ok(ret, "Failed to get handle info.\n"); refcount = IMFAsyncResult_Release(result); - ok(!refcount, "Unexpected refcount %u\n.", refcount); + ok(!refcount, "Unexpected refcount %u.\n", refcount); ret = GetHandleInformation(event, &flags); ok(!ret, "Expected handle to be closed.\n"); @@ -1102,7 +1102,7 @@ static void test_MFCreateAsyncResult(void) ok(ret, "Failed to get handle info.\n"); refcount = IMFAsyncResult_Release(result); - ok(!refcount, "Unexpected refcount %u\n.", refcount); + ok(!refcount, "Unexpected refcount %u.\n", refcount); ret = GetHandleInformation(event, &flags); ok(!ret, "Expected handle to be closed.\n"); } @@ -1835,7 +1835,7 @@ static void test_MFInvokeCallback(void) ok(ret == WAIT_TIMEOUT, "Expected timeout, ret %#x.\n", ret); refcount = IMFAsyncResult_Release(result); - ok(!refcount, "Unexpected refcount %u\n.", refcount); + ok(!refcount, "Unexpected refcount %u.\n", refcount); hr = MFShutdown(); ok(hr == S_OK, "Failed to shut down, hr %#x.\n", hr);
1
0
0
0
Francois Gouget : gdi32: Fix the FreeType case in a comment.
by Alexandre Julliard
12 Mar '19
12 Mar '19
Module: wine Branch: master Commit: 5f79b5f6e54647f7442ae1983bd595e070088e5e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=5f79b5f6e54647f7442ae198…
Author: Francois Gouget <fgouget(a)free.fr> Date: Tue Mar 12 13:42:19 2019 +0100 gdi32: Fix the FreeType case in a comment. Signed-off-by: Francois Gouget <fgouget(a)free.fr> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/gdi32/freetype.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c index 098faff..68d232e 100644 --- a/dlls/gdi32/freetype.c +++ b/dlls/gdi32/freetype.c @@ -4178,7 +4178,7 @@ static BOOL init_freetype(void) ((FT_Version.minor << 8) & 0x00ff00) | ((FT_Version.patch ) & 0x0000ff); - /* In Freetype < 2.8.1 v40's FT_LOAD_TARGET_MONO has broken advance widths. */ + /* In FreeType < 2.8.1 v40's FT_LOAD_TARGET_MONO has broken advance widths. */ if (pFT_Property_Set && FT_SimpleVersion < FT_VERSION_VALUE(2, 8, 1)) { FT_UInt interpreter_version = 35;
1
0
0
0
← Newer
1
...
56
57
58
59
60
61
62
...
110
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Results per page:
10
25
50
100
200