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