From fa6e10e9cec163845aa29e7940c86e9c9ab8a2bc Mon Sep 17 00:00:00 2001 From: Jordi Vilalta Prat Date: Sun, 15 Feb 2009 06:10:59 +0000 Subject: Import the SCI engine sources from the FreeSCI Glutton branch (it doesn't compile yet) svn-id: r38192 --- engines/sci/sfx/timer/scummvm.cpp | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 engines/sci/sfx/timer/scummvm.cpp (limited to 'engines/sci/sfx/timer/scummvm.cpp') diff --git a/engines/sci/sfx/timer/scummvm.cpp b/engines/sci/sfx/timer/scummvm.cpp new file mode 100644 index 0000000000..f4e08d441a --- /dev/null +++ b/engines/sci/sfx/timer/scummvm.cpp @@ -0,0 +1,52 @@ +#include "common/timer.h" +#include "engines/engine.h" +#include "sfx_timer.h" + + +#define FREQ 60 +#define DELAY (1000000 / FREQ) + +typedef void (*scummvm_timer_callback_t)(void *); +static scummvm_timer_callback_t scummvm_timer_callback = NULL; +static void *scummvm_timer_callback_data = NULL; +extern ::Engine *g_engine; + +void scummvm_timer_update_internal(void *ptr) { + if (scummvm_timer_callback) + scummvm_timer_callback(scummvm_timer_callback_data); +} + +int scummvm_timer_start(void (*func)(void *), void *data) { + if (scummvm_timer_callback) { + fprintf(stderr, + "Error: Attempt to initialize gametick timer more than once\n"); + return SFX_ERROR; + } + + if (!func) { + fprintf(stderr, + "Error: Attempt to initialize gametick timer w/o callback\n"); + return SFX_ERROR; + } + + scummvm_timer_callback = func; + scummvm_timer_callback_data = data; + + ::g_engine->_timer->installTimerProc(&scummvm_timer_update_internal, DELAY, NULL); + return SFX_OK; +} + +int scummvm_timer_stop() { + scummvm_timer_callback = NULL; + return SFX_OK; +} + + +sfx_timer_t sfx_timer_scummvm = { + "ScummVM", + "0.1", + DELAY/1000, 0, + NULL, + &scummvm_timer_start, + &scummvm_timer_stop + }; -- cgit v1.2.3