Jacek Caban : urlmon: Added PI_APARTMENTTHREADED support to BindProtocol:: ReportProgress.
Alexandre Julliard
julliard at winehq.org
Tue May 12 09:08:46 CDT 2009
Module: wine
Branch: master
Commit: 8ca4a4a3a45194de1a7b54191e6f3b081c543521
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8ca4a4a3a45194de1a7b54191e6f3b081c543521
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon May 11 22:00:13 2009 +0200
urlmon: Added PI_APARTMENTTHREADED support to BindProtocol::ReportProgress.
---
dlls/urlmon/bindprot.c | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/bindprot.c b/dlls/urlmon/bindprot.c
index de00e94..13e9b98 100644
--- a/dlls/urlmon/bindprot.c
+++ b/dlls/urlmon/bindprot.c
@@ -666,6 +666,23 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportProgress(IInternetProtocolSin
return S_OK;
}
+typedef struct {
+ task_header_t header;
+ DWORD bscf;
+ ULONG progress;
+ ULONG progress_max;
+} report_data_task_t;
+
+static void report_data_proc(BindProtocol *This, task_header_t *t)
+{
+ report_data_task_t *task = (report_data_task_t*)t;
+
+ if(This->protocol_sink)
+ IInternetProtocolSink_ReportData(This->protocol_sink, task->bscf, task->progress, task->progress_max);
+
+ heap_free(task);
+}
+
static HRESULT WINAPI BPInternetProtocolSink_ReportData(IInternetProtocolSink *iface,
DWORD grfBSCF, ULONG ulProgress, ULONG ulProgressMax)
{
@@ -676,6 +693,21 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportData(IInternetProtocolSink *i
if(!This->protocol_sink)
return S_OK;
+ if(!do_direct_notif(This)) {
+ report_data_task_t *task;
+
+ task = heap_alloc(sizeof(report_data_task_t));
+ if(!task)
+ return E_OUTOFMEMORY;
+
+ task->bscf = grfBSCF;
+ task->progress = ulProgress;
+ task->progress_max = ulProgressMax;
+
+ push_task(This, &task->header, report_data_proc);
+ return S_OK;
+ }
+
return IInternetProtocolSink_ReportData(This->protocol_sink, grfBSCF, ulProgress, ulProgressMax);
}
More information about the wine-cvs
mailing list