mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-06 18:27:26 +00:00
Added SdlTimerManager. Added getMillis, delayMillis and getTimeAndDate to Common::TimerManager, DefaultTimerManager and ModularBackend. Removed timer code from OSystem_SDL.
svn-id: r49637
This commit is contained in:
parent
a77738e53b
commit
77f114b835
@ -200,8 +200,6 @@ void ModularBackend::disableCursorPalette(bool disable) {
|
||||
_graphicsManager->disableCursorPalette(disable);
|
||||
}
|
||||
|
||||
/** TODO: Add getMillis, delayMillis and getTimeAndDate
|
||||
** to timer manager
|
||||
uint32 ModularBackend::getMillis() {
|
||||
assert(_timerManager);
|
||||
return _timerManager->getMillis();
|
||||
@ -215,7 +213,7 @@ void ModularBackend::delayMillis(uint msecs) {
|
||||
void ModularBackend::getTimeAndDate(TimeDate &t) const {
|
||||
assert(_timerManager);
|
||||
return _timerManager->getTimeAndDate(t);
|
||||
}*/
|
||||
}
|
||||
|
||||
Common::TimerManager *ModularBackend::getTimerManager() {
|
||||
assert(_timerManager);
|
||||
|
@ -27,6 +27,7 @@
|
||||
#define BACKENDS_MODULAR_BACKEND_H
|
||||
|
||||
#include "common/system.h"
|
||||
#include "common/timer.h"
|
||||
#include "backends/events/default/default-events.h"
|
||||
#include "backends/audiocd/default/default-audiocd.h"
|
||||
#include "backends/mutex/null/null-mutex.h"
|
||||
@ -83,9 +84,9 @@ public:
|
||||
virtual void setCursorPalette(const byte *colors, uint start, uint num);
|
||||
virtual void disableCursorPalette(bool disable);
|
||||
|
||||
/*virtual uint32 getMillis();
|
||||
virtual uint32 getMillis();
|
||||
virtual void delayMillis(uint msecs);
|
||||
virtual void getTimeAndDate(TimeDate &t) const;*/
|
||||
virtual void getTimeAndDate(TimeDate &t) const;
|
||||
virtual Common::TimerManager *getTimerManager();
|
||||
virtual Common::EventManager *getEventManager();
|
||||
virtual Common::HardwareKeySet *getHardwareKeySet() { return 0; }
|
||||
|
@ -47,6 +47,7 @@ MODULE_OBJS := \
|
||||
saves/psp/psp-saves.o \
|
||||
timer/default/default-timer.o \
|
||||
timer/psp/timer.o \
|
||||
timer/sdl/sdl-timer.o \
|
||||
vkeybd/image-map.o \
|
||||
vkeybd/polygon.o \
|
||||
vkeybd/virtual-keyboard.o \
|
||||
|
@ -33,7 +33,6 @@
|
||||
#include "common/archive.h"
|
||||
#include "common/config-manager.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/EventRecorder.h"
|
||||
#include "common/util.h"
|
||||
|
||||
#ifdef UNIX
|
||||
@ -41,16 +40,14 @@
|
||||
#else
|
||||
#include "backends/saves/default/default-saves.h"
|
||||
#endif
|
||||
#include "backends/timer/default/default-timer.h"
|
||||
|
||||
#include "backends/mixer/sdl/sdl-mixer.h"
|
||||
|
||||
#include "backends/audiocd/sdl/sdl-audiocd.h"
|
||||
#include "backends/events/sdl/sdl-events.h"
|
||||
#include "backends/mutex/sdl/sdl-mutex.h"
|
||||
#include "backends/mixer/sdl/sdl-mixer.h"
|
||||
#include "backends/timer/sdl/sdl-timer.h"
|
||||
|
||||
#include "icons/scummvm.xpm"
|
||||
|
||||
#include <time.h> // for getTimeAndDate()
|
||||
|
||||
/*
|
||||
* Include header files needed for the getFilesystemFactory() method.
|
||||
*/
|
||||
@ -62,7 +59,6 @@
|
||||
#include "backends/fs/windows/windows-fs-factory.h"
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(UNIX)
|
||||
#ifdef MACOSX
|
||||
#define DEFAULT_CONFIG_FILE "Library/Preferences/ScummVM Preferences"
|
||||
@ -80,11 +76,6 @@
|
||||
#endif
|
||||
|
||||
|
||||
static Uint32 timer_handler(Uint32 interval, void *param) {
|
||||
((DefaultTimerManager *)param)->handler();
|
||||
return interval;
|
||||
}
|
||||
|
||||
void OSystem_SDL::initBackend() {
|
||||
assert(!_inited);
|
||||
|
||||
@ -135,13 +126,7 @@ void OSystem_SDL::initBackend() {
|
||||
// Create and hook up the timer manager, if none exists yet (we check for
|
||||
// this to allow subclasses to provide their own).
|
||||
if (_timerManager == 0) {
|
||||
// TODO: Implement SdlTimerManager
|
||||
if (SDL_InitSubSystem(SDL_INIT_TIMER) == -1) {
|
||||
error("Could not initialize SDL: %s", SDL_GetError());
|
||||
}
|
||||
|
||||
_timerManager = new DefaultTimerManager();
|
||||
_timerID = SDL_AddTimer(10, &timer_handler, _timerManager);
|
||||
_timerManager = new SdlTimerManager();
|
||||
}
|
||||
|
||||
// Create and hook up the graphics manager, if none exists yet (we check for
|
||||
@ -184,34 +169,11 @@ OSystem_SDL::OSystem_SDL()
|
||||
}
|
||||
|
||||
OSystem_SDL::~OSystem_SDL() {
|
||||
SDL_RemoveTimer(_timerID);
|
||||
|
||||
delete _mixer;
|
||||
delete _savefileManager;
|
||||
delete _timerManager;
|
||||
}
|
||||
|
||||
uint32 OSystem_SDL::getMillis() {
|
||||
uint32 millis = SDL_GetTicks();
|
||||
g_eventRec.processMillis(millis);
|
||||
return millis;
|
||||
}
|
||||
|
||||
void OSystem_SDL::delayMillis(uint msecs) {
|
||||
SDL_Delay(msecs);
|
||||
}
|
||||
|
||||
void OSystem_SDL::getTimeAndDate(TimeDate &td) const {
|
||||
time_t curTime = time(0);
|
||||
struct tm t = *localtime(&curTime);
|
||||
td.tm_sec = t.tm_sec;
|
||||
td.tm_min = t.tm_min;
|
||||
td.tm_hour = t.tm_hour;
|
||||
td.tm_mday = t.tm_mday;
|
||||
td.tm_mon = t.tm_mon;
|
||||
td.tm_year = t.tm_year;
|
||||
}
|
||||
|
||||
void OSystem_SDL::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
|
||||
|
||||
#ifdef DATA_PATH
|
||||
@ -241,7 +203,6 @@ void OSystem_SDL::addSysArchivesToSearchSet(Common::SearchSet &s, int priority)
|
||||
|
||||
}
|
||||
|
||||
|
||||
static Common::String getDefaultConfigFileName() {
|
||||
char configFile[MAXPATHLEN];
|
||||
#if defined (WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
|
||||
@ -338,8 +299,6 @@ void OSystem_SDL::setWindowCaption(const char *caption) {
|
||||
void OSystem_SDL::deinit() {
|
||||
SDL_ShowCursor(SDL_ENABLE);
|
||||
|
||||
SDL_RemoveTimer(_timerID);
|
||||
|
||||
delete _mixer;
|
||||
|
||||
delete _timerManager;
|
||||
|
@ -33,22 +33,7 @@
|
||||
#endif
|
||||
|
||||
#include "backends/modular-backend.h"
|
||||
|
||||
#include "backends/mutex/sdl/sdl-mutex.h"
|
||||
#include "backends/graphics/sdl/sdl-graphics.h"
|
||||
#include "backends/audiocd/sdl/sdl-audiocd.h"
|
||||
|
||||
#include "graphics/scaler.h"
|
||||
|
||||
|
||||
namespace Audio {
|
||||
class MixerImpl;
|
||||
}
|
||||
|
||||
#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
|
||||
// Uncomment this to enable the 'on screen display' code.
|
||||
#define USE_OSD 1
|
||||
#endif
|
||||
|
||||
class OSystem_SDL : public ModularBackend {
|
||||
public:
|
||||
@ -57,14 +42,6 @@ public:
|
||||
|
||||
virtual void initBackend();
|
||||
|
||||
// Get the number of milliseconds since the program was started.
|
||||
uint32 getMillis();
|
||||
|
||||
// Delay for a specified amount of milliseconds
|
||||
void delayMillis(uint msecs);
|
||||
|
||||
virtual void getTimeAndDate(TimeDate &t) const;
|
||||
|
||||
// Define all hardware keys for keymapper
|
||||
virtual Common::HardwareKeySet *getHardwareKeySet();
|
||||
|
||||
@ -86,8 +63,6 @@ public:
|
||||
protected:
|
||||
bool _inited;
|
||||
|
||||
SDL_TimerID _timerID;
|
||||
|
||||
void setupIcon();
|
||||
};
|
||||
|
||||
|
@ -48,6 +48,10 @@ public:
|
||||
* Timer callback, to be invoked at regular time intervals by the backend.
|
||||
*/
|
||||
void handler();
|
||||
|
||||
virtual uint32 getMillis() { return 0; }
|
||||
virtual void delayMillis(uint msecs) {}
|
||||
virtual void getTimeAndDate(TimeDate &t) const {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
71
backends/timer/sdl/sdl-timer.cpp
Normal file
71
backends/timer/sdl/sdl-timer.cpp
Normal file
@ -0,0 +1,71 @@
|
||||
|
||||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#if defined(WIN32) || defined(UNIX) || defined(MACOSX)
|
||||
|
||||
#include "backends/timer/sdl/sdl-timer.h"
|
||||
#include "common/EventRecorder.h"
|
||||
#include <time.h>
|
||||
|
||||
static Uint32 timer_handler(Uint32 interval, void *param) {
|
||||
((DefaultTimerManager *)param)->handler();
|
||||
return interval;
|
||||
}
|
||||
|
||||
SdlTimerManager::SdlTimerManager() {
|
||||
if (SDL_InitSubSystem(SDL_INIT_TIMER) == -1) {
|
||||
error("Could not initialize SDL: %s", SDL_GetError());
|
||||
}
|
||||
|
||||
_timerID = SDL_AddTimer(10, &timer_handler, this);
|
||||
}
|
||||
|
||||
SdlTimerManager::~SdlTimerManager() {
|
||||
SDL_RemoveTimer(_timerID);
|
||||
}
|
||||
|
||||
uint32 SdlTimerManager::getMillis() {
|
||||
uint32 millis = SDL_GetTicks();
|
||||
g_eventRec.processMillis(millis);
|
||||
return millis;
|
||||
}
|
||||
|
||||
void SdlTimerManager::delayMillis(uint msecs) {
|
||||
SDL_Delay(msecs);
|
||||
}
|
||||
|
||||
void SdlTimerManager::getTimeAndDate(TimeDate &td) const {
|
||||
time_t curTime = time(0);
|
||||
struct tm t = *localtime(&curTime);
|
||||
td.tm_sec = t.tm_sec;
|
||||
td.tm_min = t.tm_min;
|
||||
td.tm_hour = t.tm_hour;
|
||||
td.tm_mday = t.tm_mday;
|
||||
td.tm_mon = t.tm_mon;
|
||||
td.tm_year = t.tm_year;
|
||||
}
|
||||
|
||||
#endif
|
51
backends/timer/sdl/sdl-timer.h
Normal file
51
backends/timer/sdl/sdl-timer.h
Normal file
@ -0,0 +1,51 @@
|
||||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* $URL$
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BACKENDS_TIMER_SDL_H
|
||||
#define BACKENDS_TIMER_SDL_H
|
||||
|
||||
#include "backends/timer/default/default-timer.h"
|
||||
|
||||
#if defined(__SYMBIAN32__)
|
||||
#include <esdl\SDL.h>
|
||||
#else
|
||||
#include <SDL.h>
|
||||
#endif
|
||||
|
||||
class SdlTimerManager : public DefaultTimerManager {
|
||||
public:
|
||||
SdlTimerManager();
|
||||
~SdlTimerManager();
|
||||
|
||||
uint32 getMillis();
|
||||
void delayMillis(uint msecs);
|
||||
void getTimeAndDate(TimeDate &t) const;
|
||||
|
||||
protected:
|
||||
SDL_TimerID _timerID;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
@ -26,6 +26,7 @@
|
||||
#define COMMON_TIMER_H
|
||||
|
||||
#include "common/scummsys.h"
|
||||
#include "common/system.h"
|
||||
#include "common/noncopyable.h"
|
||||
|
||||
namespace Common {
|
||||
@ -55,6 +56,21 @@ public:
|
||||
* and no instance of this callback will be running anymore.
|
||||
*/
|
||||
virtual void removeTimerProc(TimerProc proc) = 0;
|
||||
|
||||
/**
|
||||
* Get the number of milliseconds since the program was started.
|
||||
*/
|
||||
virtual uint32 getMillis() = 0;
|
||||
|
||||
/**
|
||||
* Delay for a specified amount of milliseconds
|
||||
*/
|
||||
virtual void delayMillis(uint msecs) = 0;
|
||||
|
||||
/**
|
||||
* Get the current time and date
|
||||
*/
|
||||
virtual void getTimeAndDate(TimeDate &t) const = 0;
|
||||
};
|
||||
|
||||
} // End of namespace Common
|
||||
|
Loading…
x
Reference in New Issue
Block a user