Commit 33087806 authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

user.exe: Implement SetSystemTimer() using SetTimer().

Avoid using SetSystemTimer() to specify a callback; it does not support one. Signed-off-by: 's avatarZebediah Figura <zfigura@codeweavers.com> Signed-off-by: 's avatarJacek Caban <jacek@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent 74354879
...@@ -1292,6 +1292,11 @@ LRESULT WINPROC_CallProc32ATo16( winproc_callback16_t callback, HWND hwnd, UINT ...@@ -1292,6 +1292,11 @@ LRESULT WINPROC_CallProc32ATo16( winproc_callback16_t callback, HWND hwnd, UINT
lParam = MAKELPARAM( 0, convert_handle_32_to_16( lParam, GMEM_DDESHARE )); lParam = MAKELPARAM( 0, convert_handle_32_to_16( lParam, GMEM_DDESHARE ));
ret = callback( HWND_16(hwnd), msg, wParam, lParam, result, arg ); ret = callback( HWND_16(hwnd), msg, wParam, lParam, result, arg );
break; /* FIXME don't know how to free allocated memory (handle) !! */ break; /* FIXME don't know how to free allocated memory (handle) !! */
case WM_TIMER:
if (wParam & SYSTEM_TIMER_FLAG)
msg = WM_SYSTIMER;
ret = callback( HWND_16(hwnd), msg, wParam, lParam, result, arg );
break;
case SBM_SETRANGE: case SBM_SETRANGE:
ret = callback( HWND_16(hwnd), SBM_SETRANGE16, 0, MAKELPARAM(wParam, lParam), result, arg ); ret = callback( HWND_16(hwnd), SBM_SETRANGE16, 0, MAKELPARAM(wParam, lParam), result, arg );
break; break;
......
...@@ -95,6 +95,8 @@ extern void call_WH_CALLWNDPROC_hook( HWND16 hwnd, UINT16 msg, WPARAM16 wp, LPAR ...@@ -95,6 +95,8 @@ extern void call_WH_CALLWNDPROC_hook( HWND16 hwnd, UINT16 msg, WPARAM16 wp, LPAR
#define WM_SYSTIMER 0x0118 #define WM_SYSTIMER 0x0118
#define SYSTEM_TIMER_FLAG 0x10000
/* Dialog info structure (must match the user32 one) */ /* Dialog info structure (must match the user32 one) */
typedef struct tagDIALOGINFO typedef struct tagDIALOGINFO
{ {
......
...@@ -111,7 +111,7 @@ UINT16 WINAPI SetTimer16( HWND16 hwnd, UINT16 id, UINT16 timeout, TIMERPROC16 pr ...@@ -111,7 +111,7 @@ UINT16 WINAPI SetTimer16( HWND16 hwnd, UINT16 id, UINT16 timeout, TIMERPROC16 pr
UINT16 WINAPI SetSystemTimer16( HWND16 hwnd, UINT16 id, UINT16 timeout, TIMERPROC16 proc ) UINT16 WINAPI SetSystemTimer16( HWND16 hwnd, UINT16 id, UINT16 timeout, TIMERPROC16 proc )
{ {
TIMERPROC proc32 = (TIMERPROC)WINPROC_AllocProc16( (WNDPROC16)proc ); TIMERPROC proc32 = (TIMERPROC)WINPROC_AllocProc16( (WNDPROC16)proc );
return SetSystemTimer( WIN_Handle32(hwnd), id, timeout, proc32 ); return SetTimer( WIN_Handle32(hwnd), (UINT_PTR)id | SYSTEM_TIMER_FLAG, timeout, proc32 );
} }
...@@ -1087,7 +1087,7 @@ void WINAPI SwitchToThisWindow16( HWND16 hwnd, BOOL16 restore ) ...@@ -1087,7 +1087,7 @@ void WINAPI SwitchToThisWindow16( HWND16 hwnd, BOOL16 restore )
*/ */
BOOL16 WINAPI KillSystemTimer16( HWND16 hwnd, UINT16 id ) BOOL16 WINAPI KillSystemTimer16( HWND16 hwnd, UINT16 id )
{ {
return KillSystemTimer( WIN_Handle32(hwnd), id ); return KillTimer( WIN_Handle32(hwnd), (UINT_PTR)id | SYSTEM_TIMER_FLAG );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment