Module: wine Branch: master Commit: 7de802eb0f50e2739afa408158cc09fccbaec34d URL: http://source.winehq.org/git/wine.git/?a=commit;h=7de802eb0f50e2739afa408158...
Author: Jacek Caban jacek@codeweavers.com Date: Mon May 11 22:00:26 2009 +0200
urlmon: Added PI_APARTMENTTHREADED support to BindProtocol::ReportResult.
---
dlls/urlmon/bindprot.c | 34 ++++++++++++++++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/bindprot.c b/dlls/urlmon/bindprot.c index 13e9b98..9203755 100644 --- a/dlls/urlmon/bindprot.c +++ b/dlls/urlmon/bindprot.c @@ -711,6 +711,25 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportData(IInternetProtocolSink *i return IInternetProtocolSink_ReportData(This->protocol_sink, grfBSCF, ulProgress, ulProgressMax); }
+typedef struct { + task_header_t header; + + HRESULT hres; + DWORD err; + LPWSTR str; +} report_result_task_t; + +static void report_result_proc(BindProtocol *This, task_header_t *t) +{ + report_result_task_t *task = (report_result_task_t*)t; + + if(This->protocol_sink) + IInternetProtocolSink_ReportResult(This->protocol_sink, task->hres, task->err, task->str); + + heap_free(task->str); + heap_free(task); +} + static HRESULT WINAPI BPInternetProtocolSink_ReportResult(IInternetProtocolSink *iface, HRESULT hrResult, DWORD dwError, LPCWSTR szResult) { @@ -723,6 +742,21 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportResult(IInternetProtocolSink
This->reported_result = TRUE;
+ if(!do_direct_notif(This)) { + report_result_task_t *task; + + task = heap_alloc(sizeof(report_result_task_t)); + if(!task) + return E_OUTOFMEMORY; + + task->hres = hrResult; + task->err = dwError; + task->str = heap_strdupW(szResult); + + push_task(This, &task->header, report_result_proc); + return S_OK; + } + return IInternetProtocolSink_ReportResult(This->protocol_sink, hrResult, dwError, szResult); }