Jacek Caban : wininet: Use proc instead of enum in SENDCALLBACK request.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Dec 26 06:49:17 CST 2006


Module: wine
Branch: master
Commit: e30037f0d5705040430ddef3d59df43a6e0d9c9c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e30037f0d5705040430ddef3d59df43a6e0d9c9c

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Dec 25 21:32:52 2006 +0100

wininet: Use proc instead of enum in SENDCALLBACK request.

---

 dlls/wininet/internet.c |   19 ++++---------------
 dlls/wininet/internet.h |    3 ++-
 dlls/wininet/utility.c  |   15 ++++++++++++++-
 3 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index b96556e..d5a4976 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -3213,6 +3213,10 @@ static VOID INTERNET_ExecuteWork(void)
 
     switch (workRequest.asyncall)
     {
+    case CALLASYNCPROC:
+        workRequest.asyncproc(&workRequest);
+        break;
+
     case FTPPUTFILEW:
         {
         struct WORKREQ_FTPPUTFILEW *req = &workRequest.u.FtpPutFileW;
@@ -3392,21 +3396,6 @@ static VOID INTERNET_ExecuteWork(void)
         }
         break;
 
-    case SENDCALLBACK:
-        {
-        struct WORKREQ_SENDCALLBACK *req = &workRequest.u.SendCallback;
-
-        TRACE("SENDCALLBACK %p\n", workRequest.hdr);
-
-        INTERNET_SendCallback(workRequest.hdr,
-			 req->dwContext, req->dwInternetStatus, req->lpvStatusInfo,
-			 req->dwStatusInfoLength);
-
-        /* And frees the copy of the status info */
-        HeapFree(GetProcessHeap(), 0, req->lpvStatusInfo);
-        }
-        break;
-
     case INTERNETOPENURLW:
 	{
 	struct WORKREQ_INTERNETOPENURLW *req = &workRequest.u.InternetOpenUrlW;
diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h
index 235e320..6868b78 100644
--- a/dlls/wininet/internet.h
+++ b/dlls/wininet/internet.h
@@ -249,6 +249,7 @@ typedef struct
 
 typedef enum
 {
+    CALLASYNCPROC,
     FTPPUTFILEW,
     FTPSETCURRENTDIRECTORYW,
     FTPCREATEDIRECTORYW,
@@ -262,7 +263,6 @@ typedef enum
     FTPFINDNEXTW,
     HTTPSENDREQUESTW,
     HTTPOPENREQUESTW,
-    SENDCALLBACK,
     INTERNETOPENURLW,
     INTERNETREADFILEEXA,
 } ASYNC_FUNC;
@@ -385,6 +385,7 @@ struct WORKREQ_INTERNETREADFILEEXA
 typedef struct WORKREQ
 {
     ASYNC_FUNC asyncall;
+    void (*asyncproc)(struct WORKREQ*);
     WININETHANDLEHEADER *hdr;
 
     union {
diff --git a/dlls/wininet/utility.c b/dlls/wininet/utility.c
index 4f969f8..0269365 100644
--- a/dlls/wininet/utility.c
+++ b/dlls/wininet/utility.c
@@ -254,7 +254,19 @@ VOID INTERNET_SendCallback(LPWININETHAND
         HeapFree(GetProcessHeap(), 0, lpvNewInfo);
 }
 
+static void SendAsyncCallbackProc(WORKREQUEST *workRequest)
+{
+    struct WORKREQ_SENDCALLBACK const *req = &workRequest->u.SendCallback;
+
+    TRACE("%p\n", workRequest->hdr);
 
+    INTERNET_SendCallback(workRequest->hdr,
+                          req->dwContext, req->dwInternetStatus, req->lpvStatusInfo,
+                          req->dwStatusInfoLength);
+
+    /* And frees the copy of the status info */
+    HeapFree(GetProcessHeap(), 0, req->lpvStatusInfo);
+}
 
 VOID SendAsyncCallback(LPWININETHANDLEHEADER hdr, DWORD dwContext,
                        DWORD dwInternetStatus, LPVOID lpvStatusInfo,
@@ -281,7 +293,8 @@ VOID SendAsyncCallback(LPWININETHANDLEHE
 	    memcpy(lpvStatusInfo_copy, lpvStatusInfo, dwStatusInfoLength);
 	}
 
-	workRequest.asyncall = SENDCALLBACK;
+	workRequest.asyncall = CALLASYNCPROC;
+	workRequest.asyncproc = SendAsyncCallbackProc;
 	workRequest.hdr = WININET_AddRef( hdr );
 	req = &workRequest.u.SendCallback;
 	req->dwContext = dwContext;




More information about the wine-cvs mailing list