Win64 patch 3/9 (user32)
Ge van Geldorp
ge at gse.nl
Mon Jul 10 01:58:24 CDT 2006
Changelog:
Ge van Geldorp <ge at gse.nl>
- Move handle indicator to upper 32 bits for Win64
dlls/user/winproc.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/user/winproc.c b/dlls/user/winproc.c
index 0c1f36f..712454d 100644
--- a/dlls/user/winproc.c
+++ b/dlls/user/winproc.c
@@ -52,7 +52,12 @@ typedef struct tagWINDOWPROC
WNDPROC procW; /* Unicode window proc */
} WINDOWPROC;
-#define WINPROC_HANDLE (~0UL >> 16)
+#ifdef _WIN64
+#define WINPROC_HANDLE_BITS 32
+#else
+#define WINPROC_HANDLE_BITS 16
+#endif
+#define WINPROC_HANDLE (~0UL >> WINPROC_HANDLE_BITS)
#define MAX_WINPROCS 8192
static WINDOWPROC winproc_array[MAX_WINPROCS];
@@ -110,7 +115,7 @@ static inline WINDOWPROC *find_winproc(
static inline WINDOWPROC *handle_to_proc( WNDPROC handle )
{
UINT index = LOWORD(handle);
- if ((ULONG_PTR)handle >> 16 != WINPROC_HANDLE) return NULL;
+ if ((ULONG_PTR)handle >> WINPROC_HANDLE_BITS != WINPROC_HANDLE) return NULL;
if (index >= winproc_used) return NULL;
return &winproc_array[index];
}
@@ -118,7 +123,8 @@ static inline WINDOWPROC *handle_to_proc
/* create a handle for a given window proc */
static inline WNDPROC proc_to_handle( WINDOWPROC *proc )
{
- return (WNDPROC)(ULONG_PTR)((proc - winproc_array) | (WINPROC_HANDLE << 16));
+ return (WNDPROC)(ULONG_PTR)((proc - winproc_array) |
+ (WINPROC_HANDLE << WINPROC_HANDLE_BITS));
}
/* allocate and initialize a new winproc */
--
1.4.0
More information about the wine-patches
mailing list