summaryrefslogtreecommitdiff
path: root/firmware/target/hosted/sdl/timer-sdl.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/hosted/sdl/timer-sdl.c')
-rw-r--r--firmware/target/hosted/sdl/timer-sdl.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/firmware/target/hosted/sdl/timer-sdl.c b/firmware/target/hosted/sdl/timer-sdl.c
new file mode 100644
index 0000000000..369aeab929
--- /dev/null
+++ b/firmware/target/hosted/sdl/timer-sdl.c
@@ -0,0 +1,61 @@
1/***************************************************************************
2* __________ __ ___.
3* Open \______ \ ____ ____ | | _\_ |__ _______ ___
4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7* \/ \/ \/ \/ \/
8* $Id: timer.h 13806 2007-07-06 21:36:32Z jethead71 $
9*
10* Copyright (C) 2005 Kévin Ferrare
11*
12* This program is free software; you can redistribute it and/or
13* modify it under the terms of the GNU General Public License
14* as published by the Free Software Foundation; either version 2
15* of the License, or (at your option) any later version.
16*
17* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18* KIND, either express or implied.
19*
20****************************************************************************/
21
22#include "timer.h"
23#include <SDL_timer.h>
24
25static int timer_prio = -1;
26void (*global_timer_callback)(void);
27SDL_TimerID timerId;
28
29Uint32 SDL_timer_callback(Uint32 interval, void *param){
30 (void)param;
31 global_timer_callback();
32 return(interval);
33}
34
35#define cycles_to_miliseconds(cycles) \
36 ((int)((1000*cycles)/TIMER_FREQ))
37
38bool timer_register(int reg_prio, void (*unregister_callback)(void),
39 long cycles, void (*timer_callback)(void))
40{
41 (void)unregister_callback;
42 if (reg_prio <= timer_prio || cycles == 0)
43 return false;
44 timer_prio=reg_prio;
45 global_timer_callback=timer_callback;
46 timerId=SDL_AddTimer(cycles_to_miliseconds(cycles), SDL_timer_callback, 0);
47 return true;
48}
49
50bool timer_set_period(long cycles)
51{
52 SDL_RemoveTimer (timerId);
53 timerId=SDL_AddTimer(cycles_to_miliseconds(cycles), SDL_timer_callback, 0);
54 return true;
55}
56
57void timer_unregister(void)
58{
59 SDL_RemoveTimer (timerId);
60 timer_prio = -1;
61}