comparison src/timer.c @ 10:42ac054c0231

*: huge refactoring dirtools now uses wchar (wayyy overdue) the timer doesn't have a stupid design anymore we don't use windows.h at all now ...
author Paper <paper@paper.us.eu.org>
date Sun, 11 Feb 2024 19:43:31 -0500
parents 07f0e2f43204
children e6a594f16403
comparison
equal deleted inserted replaced
9:07f0e2f43204 10:42ac054c0231
1 #include <assert.h>
2 #ifndef WIN32_LEAN_AND_MEAN
3 # define WIN32_LEAN_AND_MEAN
4 #endif
5 #include <windows.h>
6 #include "timer.h" 1 #include "timer.h"
7 2
8 void timer_init(struct timer* restrict timer, HWND winampClientWindow, TIMERPROC timer_proc) { 3 #include <assert.h>
9 timer->winampClientWindow = winampClientWindow; 4
5 void timer_init(struct timer* restrict timer, UINT interval, TIMERPROC timer_proc) {
6 timer->id = 0;
7 timer->interval = interval;
10 timer->timer_proc = timer_proc; 8 timer->timer_proc = timer_proc;
11 timer->initialized = 1;
12 } 9 }
13 10
14 void timer_set(struct timer* restrict timer, HWND winampClientWindow) { 11 int timer_set(struct timer* restrict timer) {
15 assert(timer->initialized); 12 assert(!timer->id);
16 13
17 if (timer->is_timer_alive) 14 return !!(timer->id = SetTimer(NULL, timer->id, timer->interval, timer->timer_proc));
18 return;
19
20 timer->is_timer_alive = 1;
21 SetTimer(winampClientWindow, 1, timer->interval, timer->timer_proc);
22 } 15 }
23 16
24 void timer_stop(struct timer* restrict timer, HWND winampClientWindow) { 17 int timer_stop(struct timer* restrict timer) {
25 assert(timer->initialized); 18 assert(timer->id);
26 19
27 if (!timer->is_timer_alive) 20 BOOL ret = KillTimer(NULL, timer->id);
28 return; 21 timer->id = 0;
29 22 return ret;
30 timer->is_timer_alive = 0;
31 KillTimer(winampClientWindow, 1);
32 } 23 }