From 1c6ea0f226505001038c70687fbf39d72cafca02 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 13 May 2015 22:39:32 -0700 Subject: [PATCH] Added a userdata parameter to SDL_SetWindowsMessageHook() --- include/SDL_system.h | 4 ++-- src/dynapi/SDL_dynapi_procs.h | 2 +- src/video/windows/SDL_windowsevents.c | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/SDL_system.h b/include/SDL_system.h index 2bb64c27c4f54..97a8705280b90 100644 --- a/include/SDL_system.h +++ b/include/SDL_system.h @@ -46,8 +46,8 @@ extern "C" { /** \brief Set a function that is called for every windows message, before TranslateMessage() */ -typedef void (*SDL_WindowsMessageHook)(void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); -extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback); +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); /** \brief Returns the D3D9 adapter index that matches the specified display index. diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index ce31a5985c21c..13e31abccad42 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -625,5 +625,5 @@ SDL_DYNAPI_PROC(Uint32,SDL_GetQueuedAudioSize,(SDL_AudioDeviceID a),(a),return) SDL_DYNAPI_PROC(void,SDL_ClearQueuedAudio,(SDL_AudioDeviceID a),(a),) SDL_DYNAPI_PROC(SDL_Window*,SDL_GetGrabbedWindow,(void),(),return) #ifdef __WIN32__ -SDL_DYNAPI_PROC(void,SDL_SetWindowsMessageHook,(SDL_WindowsMessageHook a),(a),) +SDL_DYNAPI_PROC(void,SDL_SetWindowsMessageHook,(SDL_WindowsMessageHook a, void *b),(a,b),) #endif diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 6d0c5957de112..77f8ac75101e5 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -928,10 +928,12 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) /* A message hook called before TranslateMessage() */ static SDL_WindowsMessageHook g_WindowsMessageHook = NULL; +static void *g_WindowsMessageHookData = NULL; -void SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback) +void SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata) { g_WindowsMessageHook = callback; + g_WindowsMessageHookData = userdata; } void @@ -944,7 +946,7 @@ WIN_PumpEvents(_THIS) if (g_WindowsEnableMessageLoop) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (g_WindowsMessageHook) { - g_WindowsMessageHook(msg.hwnd, msg.message, msg.wParam, msg.lParam); + g_WindowsMessageHook(g_WindowsMessageHookData, msg.hwnd, msg.message, msg.wParam, msg.lParam); } /* Always translate the message in case it's a non-SDL window (e.g. with Qt integration) */