Jacek Caban : urlmon: Remove no longer needed binding value in task_t.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jun 1 06:48:48 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 349b93ae57a8a4c37f96a96ec0c6fba281edc6b4
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=349b93ae57a8a4c37f96a96ec0c6fba281edc6b4

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed May 31 19:48:23 2006 +0200

urlmon: Remove no longer needed binding value in task_t.

---

 dlls/urlmon/binding.c |   41 +++++++++++++++--------------------------
 1 files changed, 15 insertions(+), 26 deletions(-)

diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c
index c70364e..20a95f1 100644
--- a/dlls/urlmon/binding.c
+++ b/dlls/urlmon/binding.c
@@ -51,7 +51,6 @@ typedef struct {
 
 typedef struct _task_t {
     enum task_enum task;
-    Binding *binding;
     struct _task_t *next;
     union {
         on_progress_data on_progress;
@@ -109,18 +108,18 @@ #define STREAM(x) ((IStream*) &(x)->lpSt
 
 #define WM_MK_CONTINUE   (WM_USER+101)
 
-static void push_task(task_t *task)
+static void push_task(Binding *binding, task_t *task)
 {
     task->next = NULL;
 
-     EnterCriticalSection(&task->binding->section);
+     EnterCriticalSection(&binding->section);
 
-    if(task->binding->task_queue_tail)
-        task->binding->task_queue_tail->next = task;
+    if(binding->task_queue_tail)
+        binding->task_queue_tail->next = task;
     else
-        task->binding->task_queue_tail = task->binding->task_queue_head = task;
+        binding->task_queue_tail = binding->task_queue_head = task;
 
-    LeaveCriticalSection(&task->binding->section);
+    LeaveCriticalSection(&binding->section);
 }
 
 static task_t *pop_task(Binding *binding)
@@ -141,13 +140,13 @@ static task_t *pop_task(Binding *binding
      return ret;
 }
 
-static void do_task(task_t *task)
+static void do_task(Binding *binding, task_t *task)
 {
     switch(task->task) {
     case TASK_ON_PROGRESS: {
         on_progress_data *data = &task->data.on_progress;
 
-        IBindStatusCallback_OnProgress(task->binding->callback, data->progress,
+        IBindStatusCallback_OnProgress(binding->callback, data->progress,
                 data->progress_max, data->status_code, data->status_text);
 
         HeapFree(GetProcessHeap(), 0, data->status_text);
@@ -156,9 +155,9 @@ static void do_task(task_t *task)
         break;
     }
     case TASK_SWITCH:
-        task->binding->continue_call++;
-        IInternetProtocol_Continue(task->binding->protocol, task->data.protocol_data);
-        task->binding->continue_call--;
+        binding->continue_call++;
+        IInternetProtocol_Continue(binding->protocol, task->data.protocol_data);
+        binding->continue_call--;
     }
 }
 
@@ -166,10 +165,8 @@ static void do_tasks(Binding *This)
 {
     task_t *task;
 
-    while((task = pop_task(This))) {
-        do_task(task);
-        IBinding_Release(BINDING(task->binding));
-    }
+    while((task = pop_task(This)))
+        do_task(This, task);
 }
 
 static LRESULT WINAPI notif_wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -240,10 +237,6 @@ static void on_progress(Binding *This, U
     task = HeapAlloc(GetProcessHeap(), 0, sizeof(task_t));
 
     task->task = TASK_ON_PROGRESS;
-
-    IBinding_AddRef(BINDING(This));
-    task->binding = This;
-
     task->data.on_progress.progress = progress;
     task->data.on_progress.progress_max = progress_max;
     task->data.on_progress.status_code = status_code;
@@ -257,7 +250,7 @@ static void on_progress(Binding *This, U
         task->data.on_progress.status_text = NULL;
     }
 
-    push_task(task);
+    push_task(This, task);
 
     if(GetCurrentThreadId() != This->apartment_thread) {
         IBinding_AddRef(BINDING(This));
@@ -772,13 +765,9 @@ static HRESULT WINAPI InternetProtocolSi
 
     task = HeapAlloc(GetProcessHeap(), 0, sizeof(task_t));
     task->task = TASK_SWITCH;
-
-    IBinding_AddRef(BINDING(This));
-    task->binding = This;
-
     task->data.protocol_data = pProtocolData;
 
-    push_task(task);
+    push_task(This, task);
 
     IBinding_AddRef(BINDING(This));
     PostMessageW(This->notif_hwnd, WM_MK_CONTINUE, 0, (LPARAM)This);




More information about the wine-cvs mailing list