aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sfx/timer
diff options
context:
space:
mode:
authorJordi Vilalta Prat2009-02-16 16:23:48 +0000
committerJordi Vilalta Prat2009-02-16 16:23:48 +0000
commitc8a3a05a5d83758582e0b89c4646476c535f84b0 (patch)
tree82742edd88e11afe079087d8c05394e3b20d38a9 /engines/sci/sfx/timer
parentee1cae3ebcad65ac30c2ce84853b3c07ce4568f7 (diff)
downloadscummvm-rg350-c8a3a05a5d83758582e0b89c4646476c535f84b0.tar.gz
scummvm-rg350-c8a3a05a5d83758582e0b89c4646476c535f84b0.tar.bz2
scummvm-rg350-c8a3a05a5d83758582e0b89c4646476c535f84b0.zip
SCI: Changed pcm_device and timer "driver" functionality to use directly the ScummVM modules
svn-id: r38373
Diffstat (limited to 'engines/sci/sfx/timer')
-rw-r--r--engines/sci/sfx/timer/pthread.cpp100
-rw-r--r--engines/sci/sfx/timer/sigalrm.cpp150
-rw-r--r--engines/sci/sfx/timer/timer_scummvm.cpp54
-rw-r--r--engines/sci/sfx/timer/timers.cpp52
4 files changed, 0 insertions, 356 deletions
diff --git a/engines/sci/sfx/timer/pthread.cpp b/engines/sci/sfx/timer/pthread.cpp
deleted file mode 100644
index bcef9639c4..0000000000
--- a/engines/sci/sfx/timer/pthread.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/***************************************************************************
- pthread.c Copyright (C) 2005 Walter van Niftrik
-
-
- This program may be modified and copied freely according to the terms of
- the GNU general public license (GPL), as long as the above copyright
- notice and the licensing information contained herein are preserved.
-
- Please refer to www.gnu.org for licensing details.
-
- This work is provided AS IS, without warranty of any kind, expressed or
- implied, including but not limited to the warranties of merchantibility,
- noninfringement, and fitness for a specific purpose. The author will not
- be held liable for any damage caused by this work or derivatives of it.
-
- By using this source code, you agree to the licensing terms as stated
- above.
-
-
- Please contact the maintainer for bug reports or inquiries.
-
- Current Maintainer:
-
- Walter van Niftrik <w.f.b.w.v.niftrik@stud.tue.nl>
-
-***************************************************************************/
-
-#include <sfx_timer.h>
-#include <pthread.h>
-#include <unistd.h>
-
-/* Timer frequency in hertz */
-#define FREQ 60
-
-/* Delay in ms */
-#define DELAY (1000 / FREQ)
-
-static void (*callback)(void *) = NULL;
-static void *callback_data = NULL;
-pthread_t thread;
-volatile static int thread_run;
-
-static void *
-timer_thread(void *arg) {
- while (thread_run) {
- if (callback)
- callback(callback_data);
-
- usleep(DELAY * 1000);
- }
-
- return NULL;
-}
-
-static int
-set_option(char *name, char *value) {
- return SFX_ERROR;
-}
-
-static int
-init(void (*func)(void *), void *data) {
- if (callback) {
- fprintf(stderr, "Error: Attempt to initialize pthread timer more than once\n");
- return SFX_ERROR;
- }
-
- if (!func) {
- fprintf(stderr, "Error: Attempt to initialize pthread timer w/o callback\n");
- return SFX_ERROR;
- }
-
- callback = func;
- callback_data = data;
-
- thread_run = 1;
- if (pthread_create(&thread, NULL, timer_thread, NULL)) {
- fprintf(stderr, "Error: Could not create thread.\n");
- return SFX_ERROR;
- }
-
- return SFX_OK;
-}
-
-static int
-stop(void) {
- thread_run = 0;
- pthread_join(thread, NULL);
-
- return SFX_OK;
-}
-
-sfx_timer_t sfx_timer_pthread = {
- "pthread",
- "0.1",
- DELAY,
- 0,
- &set_option,
- &init,
- &stop
-};
diff --git a/engines/sci/sfx/timer/sigalrm.cpp b/engines/sci/sfx/timer/sigalrm.cpp
deleted file mode 100644
index 2bab402d14..0000000000
--- a/engines/sci/sfx/timer/sigalrm.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/***************************************************************************
- sigalrm.c Copyright (C) 2002 Christoph Reichenbach
-
-
- This program may be modified and copied freely according to the terms of
- the GNU general public license (GPL), as long as the above copyright
- notice and the licensing information contained herein are preserved.
-
- Please refer to www.gnu.org for licensing details.
-
- This work is provided AS IS, without warranty of any kind, expressed or
- implied, including but not limited to the warranties of merchantibility,
- noninfringement, and fitness for a specific purpose. The author will not
- be held liable for any damage caused by this work or derivatives of it.
-
- By using this source code, you agree to the licensing terms as stated
- above.
-
-
- Please contact the maintainer for bug reports or inquiries.
-
- Current Maintainer:
-
- Christoph Reichenbach (CR) <jameson@linuxgames.com>
-
-***************************************************************************/
-
-#include <sfx_timer.h>
-
-#ifdef HAVE_SETITIMER
-
-#include <sys/time.h>
-#include <signal.h>
-#include <stdio.h>
-
-#ifdef HAVE_PTHREAD
-#include <pthread.h>
-#define sigprocmask pthread_sigmask
-#endif
-
-static void (*sig_callback)(void *) = NULL;
-static void *sig_callback_data = NULL;
-static sigset_t current_sigset;
-
-static void
-timer_handler(int i) {
- if (sig_callback)
- sig_callback(sig_callback_data);
-}
-
-static int
-sigalrm_set_option(char *name, char *value) {
- return SFX_ERROR;
-}
-
-
-static int
-sigalrm_start(void) {
- struct itimerval itimer;
-
- itimer.it_value.tv_sec = 0;
- itimer.it_value.tv_usec = 1000000 / 60;
- itimer.it_interval = itimer.it_value;
-
- signal(SIGALRM, timer_handler); /* Re-instate timer handler, to make sure */
- setitimer(ITIMER_REAL, &itimer, NULL);
-
- return SFX_OK;
-}
-
-
-static int
-sigalrm_init(void (*callback)(void *), void *data) {
- if (sig_callback) {
- fprintf(stderr, "Error: Attempt to initialize sigalrm timer more than once\n");
- return SFX_ERROR;
- }
-
- if (!callback) {
- fprintf(stderr, "Error: Attempt to initialize sigalrm timer w/o callback\n");
- return SFX_ERROR;
- }
-
- sig_callback = callback;
- sig_callback_data = data;
-
- sigalrm_start();
-
- sigemptyset(&current_sigset);
- sigaddset(&current_sigset, SIGALRM);
-
- return SFX_OK;
-}
-
-
-static int
-sigalrm_stop(void) {
- struct itimerval itimer;
-
- if (!sig_callback) {
- fprintf(stderr, "Error: Attempt to stop sigalrm timer when not running\n");
- return SFX_ERROR;
- }
-
- itimer.it_value.tv_sec = 0;
- itimer.it_value.tv_usec = 0;
- itimer.it_interval = itimer.it_value;
-
- setitimer(ITIMER_REAL, &itimer, NULL); /* Stop timer */
- signal(SIGALRM, SIG_DFL);
-
- return SFX_OK;
-}
-
-
-static int
-sigalrm_block(void) {
- if (sigprocmask(SIG_BLOCK, &current_sigset, NULL) != 0) {
- fprintf(stderr, "Error: Failed to block sigalrm\n");
- return SFX_ERROR;
- }
-
- return SFX_OK;
-}
-
-
-static int
-sigalrm_unblock(void) {
- if (sigprocmask(SIG_UNBLOCK, &current_sigset, NULL) != 0) {
- fprintf(stderr, "Error: Failed to unblock sigalrm\n");
- return SFX_ERROR;
- }
-
- return SFX_OK;
-}
-
-
-sfx_timer_t sfx_timer_sigalrm = {
- "sigalrm",
- "0.1",
- 17, /* 1000 / 60 */
- 0,
- &sigalrm_set_option,
- &sigalrm_init,
- &sigalrm_stop,
- &sigalrm_block,
- &sigalrm_unblock
-};
-
-#endif /* HAVE_SETITIMER */
diff --git a/engines/sci/sfx/timer/timer_scummvm.cpp b/engines/sci/sfx/timer/timer_scummvm.cpp
deleted file mode 100644
index beb57aef6b..0000000000
--- a/engines/sci/sfx/timer/timer_scummvm.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "common/timer.h"
-#include "engines/engine.h"
-#include "sci/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->getTimerManager()->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,
- 0,
- 0
-};
diff --git a/engines/sci/sfx/timer/timers.cpp b/engines/sci/sfx/timer/timers.cpp
deleted file mode 100644
index 82a1d11d6c..0000000000
--- a/engines/sci/sfx/timer/timers.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/***************************************************************************
- timers.c Copyright (C) 2002 Christoph Reichenbach
-
-
- This program may be modified and copied freely according to the terms of
- the GNU general public license (GPL), as long as the above copyright
- notice and the licensing information contained herein are preserved.
-
- Please refer to www.gnu.org for licensing details.
-
- This work is provided AS IS, without warranty of any kind, expressed or
- implied, including but not limited to the warranties of merchantibility,
- noninfringement, and fitness for a specific purpose. The author will not
- be held liable for any damage caused by this work or derivatives of it.
-
- By using this source code, you agree to the licensing terms as stated
- above.
-
-
- Please contact the maintainer for bug reports or inquiries.
-
- Current Maintainer:
-
- Christoph Reichenbach (CR) <jameson@linuxgames.com>
-
-***************************************************************************/
-
-#include "sci/include/sfx_timer.h"
-#include "sci/include/resource.h"
-
-extern sfx_timer_t sfx_timer_scummvm;
-
-sfx_timer_t *sfx_timers[] = {
- &sfx_timer_scummvm,
- NULL
-};
-
-
-sfx_timer_t *
-sfx_find_timer(char *name) {
- if (!name) {
- /* Policies go here */
- return sfx_timers[0];
- } else {
- int n = 0;
- while (sfx_timers[n]
- && scumm_stricmp(sfx_timers[n]->name, name))
- ++n;
-
- return sfx_timers[n];
- }
-}