Jacek Caban : wininet: Moved WORKREQ_SENDCALLBACK out of WORKREQUEST.
Alexandre Julliard
julliard at winehq.org
Tue Jan 29 12:35:42 CST 2013
Module: wine
Branch: master
Commit: 195ea90f3bd55304c5f1c2cd69a1861adab41acf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=195ea90f3bd55304c5f1c2cd69a1861adab41acf
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Jan 29 12:04:28 2013 +0100
wininet: Moved WORKREQ_SENDCALLBACK out of WORKREQUEST.
---
dlls/wininet/internet.h | 9 ---------
dlls/wininet/utility.c | 46 +++++++++++++++++++++++++---------------------
2 files changed, 25 insertions(+), 30 deletions(-)
diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h
index c61caf2..b1a7cfe 100644
--- a/dlls/wininet/internet.h
+++ b/dlls/wininet/internet.h
@@ -427,14 +427,6 @@ struct WORKREQ_FTPFINDNEXTW
LPWIN32_FIND_DATAW lpFindFileData;
};
-struct WORKREQ_SENDCALLBACK
-{
- DWORD_PTR dwContext;
- DWORD dwInternetStatus;
- LPVOID lpvStatusInfo;
- DWORD dwStatusInfoLength;
-};
-
typedef struct WORKREQ task_header_t;
typedef void (*async_task_proc_t)(task_header_t*);
@@ -455,7 +447,6 @@ typedef struct WORKREQ
struct WORKREQ_FTPREMOVEDIRECTORYW FtpRemoveDirectoryW;
struct WORKREQ_FTPRENAMEFILEW FtpRenameFileW;
struct WORKREQ_FTPFINDNEXTW FtpFindNextW;
- struct WORKREQ_SENDCALLBACK SendCallback;
} u;
} WORKREQUEST, *LPWORKREQUEST;
diff --git a/dlls/wininet/utility.c b/dlls/wininet/utility.c
index c6b75fd..8879b8d 100644
--- a/dlls/wininet/utility.c
+++ b/dlls/wininet/utility.c
@@ -356,18 +356,24 @@ VOID INTERNET_SendCallback(object_header_t *hdr, DWORD_PTR dwContext,
heap_free(lpvNewInfo);
}
-static void SendAsyncCallbackProc(WORKREQUEST *workRequest)
+typedef struct {
+ task_header_t hdr;
+ DWORD_PTR context;
+ DWORD status;
+ LPVOID status_info;
+ DWORD status_info_len;
+} send_callback_task_t;
+
+static void SendAsyncCallbackProc(task_header_t *hdr)
{
- struct WORKREQ_SENDCALLBACK const *req = &workRequest->u.SendCallback;
+ send_callback_task_t *task = (send_callback_task_t*)hdr;
- TRACE("%p\n", workRequest->hdr);
+ TRACE("%p\n", task->hdr.hdr);
- INTERNET_SendCallback(workRequest->hdr,
- req->dwContext, req->dwInternetStatus, req->lpvStatusInfo,
- req->dwStatusInfoLength);
+ INTERNET_SendCallback(task->hdr.hdr, task->context, task->status, task->status_info, task->status_info_len);
/* And frees the copy of the status info */
- heap_free(req->lpvStatusInfo);
+ heap_free(task->status_info);
}
void SendAsyncCallback(object_header_t *hdr, DWORD_PTR dwContext,
@@ -385,24 +391,22 @@ void SendAsyncCallback(object_header_t *hdr, DWORD_PTR dwContext,
if (hdr->dwFlags & INTERNET_FLAG_ASYNC)
{
- WORKREQUEST *task;
- struct WORKREQ_SENDCALLBACK *req;
- void *lpvStatusInfo_copy = lpvStatusInfo;
+ send_callback_task_t *task;
+ void *lpvStatusInfo_copy = lpvStatusInfo;
- if (lpvStatusInfo)
- {
- lpvStatusInfo_copy = heap_alloc(dwStatusInfoLength);
- memcpy(lpvStatusInfo_copy, lpvStatusInfo, dwStatusInfoLength);
- }
+ if (lpvStatusInfo)
+ {
+ lpvStatusInfo_copy = heap_alloc(dwStatusInfoLength);
+ memcpy(lpvStatusInfo_copy, lpvStatusInfo, dwStatusInfoLength);
+ }
task = alloc_async_task(hdr, SendAsyncCallbackProc, sizeof(*task));
- req = &task->u.SendCallback;
- req->dwContext = dwContext;
- req->dwInternetStatus = dwInternetStatus;
- req->lpvStatusInfo = lpvStatusInfo_copy;
- req->dwStatusInfoLength = dwStatusInfoLength;
+ task->context = dwContext;
+ task->status = dwInternetStatus;
+ task->status_info = lpvStatusInfo_copy;
+ task->status_info_len = dwStatusInfoLength;
- INTERNET_AsyncCall(task);
+ INTERNET_AsyncCall(&task->hdr);
}
else
INTERNET_SendCallback(hdr, dwContext, dwInternetStatus,
More information about the wine-cvs
mailing list