aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sfx/timer/scummvm.cpp
diff options
context:
space:
mode:
authorJordi Vilalta Prat2009-02-15 06:10:59 +0000
committerJordi Vilalta Prat2009-02-15 06:10:59 +0000
commitfa6e10e9cec163845aa29e7940c86e9c9ab8a2bc (patch)
treece87338830cc8c149e1de545246bcefe4f45da00 /engines/sci/sfx/timer/scummvm.cpp
parent7c148ddf021c990fa866b7600f979aac9a5b26c9 (diff)
downloadscummvm-rg350-fa6e10e9cec163845aa29e7940c86e9c9ab8a2bc.tar.gz
scummvm-rg350-fa6e10e9cec163845aa29e7940c86e9c9ab8a2bc.tar.bz2
scummvm-rg350-fa6e10e9cec163845aa29e7940c86e9c9ab8a2bc.zip
Import the SCI engine sources from the FreeSCI Glutton branch (it doesn't compile yet)
svn-id: r38192
Diffstat (limited to 'engines/sci/sfx/timer/scummvm.cpp')
-rw-r--r--engines/sci/sfx/timer/scummvm.cpp52
1 files changed, 52 insertions, 0 deletions
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
+ };