Fixed AudioCDManager not having a public inheritance. Backend code cleanup.

svn-id: r50189
This commit is contained in:
Alejandro Marzini 2010-06-23 19:34:07 +00:00
parent 1811e86648
commit 04dce6a106
8 changed files with 76 additions and 342 deletions

View File

@ -29,7 +29,7 @@
#include "backends/audiocd/audiocd.h"
#include "sound/mixer.h"
class DefaultAudioCDManager : AudioCDManager {
class DefaultAudioCDManager : public AudioCDManager {
public:
DefaultAudioCDManager();
virtual ~DefaultAudioCDManager() {}

View File

@ -34,7 +34,7 @@
#include <SDL.h>
#endif
class SdlAudioCDManager : DefaultAudioCDManager {
class SdlAudioCDManager : public DefaultAudioCDManager {
public:
SdlAudioCDManager();
~SdlAudioCDManager();

View File

@ -66,6 +66,11 @@ SdlMixerImpl::~SdlMixerImpl() {
}
uint SdlMixerImpl::getSamplesPerSec() {
if (SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) {
error("Could not initialize SDL: %s", SDL_GetError());
}
SDL_AudioSpec desired;
// Determine the desired output sampling frequency.

View File

@ -31,7 +31,6 @@
#include "common/EventRecorder.h"
#include "backends/saves/posix/posix-saves.h"
#include "backends/audiocd/sdl/sdl-audiocd.h"
#include "backends/events/sdl/sdl-events.h"
#include "backends/mutex/sdl/sdl-mutex.h"
@ -43,76 +42,17 @@
#define DEFAULT_CONFIG_FILE ".scummvmrc"
OSystem_POSIX::OSystem_POSIX() {
// Initialze File System Factory
_fsFactory = new POSIXFilesystemFactory();
}
OSystem_POSIX::~OSystem_POSIX() {
deinit();
}
void OSystem_POSIX::initBackend() {
assert(!_inited);
uint32 sdlFlags = 0;
if (ConfMan.hasKey("disable_sdl_parachute"))
sdlFlags |= SDL_INIT_NOPARACHUTE;
if (SDL_Init(sdlFlags) == -1) {
error("Could not initialize SDL: %s", SDL_GetError());
}
// Enable unicode support if possible
SDL_EnableUNICODE(1);
// Create and hook up the mutex manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_mutexManager == 0) {
_mutexManager = new SdlMutexManager();
}
// Create and hook up the event manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_eventManager == 0) {
_eventManager = new SdlEventManager(this);
}
// Create the savefile manager, if none exists yet (we check for this to
// allow subclasses to provide their own).
if (_savefileManager == 0) {
// Create the savefile manager
if (_savefileManager == 0)
_savefileManager = new POSIXSaveFileManager();
}
// Create and hook up the mixer, if none exists yet (we check for this to
// allow subclasses to provide their own).
if (_mixer == 0) {
if (SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) {
error("Could not initialize SDL: %s", SDL_GetError());
}
_mixer = new SdlMixerImpl(this);
}
// 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) {
_timerManager = new SdlTimerManager();
}
// Create and hook up the graphics manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_graphicsManager == 0) {
_graphicsManager = new SdlGraphicsManager();
}
if (_audiocdManager == 0) {
_audiocdManager = (AudioCDManager *)new SdlAudioCDManager();
}
// Invoke parent implementation of this method
OSystem::initBackend();
_inited = true;
OSystem_SDL::initBackend();
}
Common::String OSystem_POSIX::getDefaultConfigFileName() {

View File

@ -23,12 +23,6 @@
*
*/
#if defined(WIN32)
#include <windows.h>
// winnt.h defines ARRAYSIZE, but we want our own one... - this is needed before including util.h
#undef ARRAYSIZE
#endif
#include "backends/platform/sdl/sdl.h"
#include "common/archive.h"
#include "common/config-manager.h"
@ -36,11 +30,7 @@
#include "common/util.h"
#include "common/EventRecorder.h"
#ifdef UNIX
#include "backends/saves/posix/posix-saves.h"
#else
#include "backends/saves/default/default-saves.h"
#endif
#include "backends/saves/default/default-saves.h"
#include "backends/audiocd/sdl/sdl-audiocd.h"
#include "backends/events/sdl/sdl-events.h"
#include "backends/mutex/sdl/sdl-mutex.h"
@ -49,131 +39,75 @@
#include "icons/scummvm.xpm"
/*
* Include header files needed for the getFilesystemFactory() method.
*/
#if defined(__amigaos4__)
#include "backends/fs/amigaos4/amigaos4-fs-factory.h"
#elif defined(UNIX)
#include "backends/fs/posix/posix-fs-factory.h"
#elif defined(WIN32)
#include "backends/fs/windows/windows-fs-factory.h"
#endif
#if defined(UNIX)
#ifdef MACOSX
#define DEFAULT_CONFIG_FILE "Library/Preferences/ScummVM Preferences"
#elif defined(SAMSUNGTV)
#define DEFAULT_CONFIG_FILE "/dtv/usb/sda1/.scummvmrc"
#else
#define DEFAULT_CONFIG_FILE ".scummvmrc"
#endif
#else
#define DEFAULT_CONFIG_FILE "scummvm.ini"
#endif
#if defined(MACOSX) || defined(IPHONE)
#include "CoreFoundation/CoreFoundation.h"
#endif
#include <time.h>
void OSystem_SDL::initBackend() {
assert(!_inited);
uint32 sdlFlags = 0;
if (ConfMan.hasKey("disable_sdl_parachute"))
sdlFlags |= SDL_INIT_NOPARACHUTE;
if (SDL_Init(sdlFlags) == -1) {
error("Could not initialize SDL: %s", SDL_GetError());
}
// Enable unicode support if possible
SDL_EnableUNICODE(1);
// Create and hook up the mutex manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_mutexManager == 0) {
_mutexManager = new SdlMutexManager();
}
// Create and hook up the event manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_eventManager == 0) {
_eventManager = new SdlEventManager(this);
}
// Create the savefile manager, if none exists yet (we check for this to
// allow subclasses to provide their own).
if (_savefileManager == 0) {
#ifdef UNIX
_savefileManager = new POSIXSaveFileManager();
#else
_savefileManager = new DefaultSaveFileManager();
#endif
}
// Create and hook up the mixer, if none exists yet (we check for this to
// allow subclasses to provide their own).
if (_mixer == 0) {
if (SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) {
error("Could not initialize SDL: %s", SDL_GetError());
}
_mixer = new SdlMixerImpl(this);
}
// 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) {
_timerManager = new SdlTimerManager();
}
// Create and hook up the graphics manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_graphicsManager == 0) {
_graphicsManager = new SdlGraphicsManager();
}
if (_audiocdManager == 0) {
_audiocdManager = (AudioCDManager *)new SdlAudioCDManager();
}
#if !defined(MACOSX) && !defined(__SYMBIAN32__)
// Setup a custom program icon.
// Don't set icon on OS X, as we use a nicer external icon there.
// Don't for Symbian: it uses the EScummVM.aif file for the icon.
setupIcon();
#endif
// Invoke parent implementation of this method
OSystem::initBackend();
_inited = true;
}
OSystem_SDL::OSystem_SDL()
:
_inited(false) {
#if defined(__amigaos4__)
_fsFactory = new AmigaOSFilesystemFactory();
#elif defined(UNIX)
_fsFactory = new POSIXFilesystemFactory();
#elif defined(WIN32)
_fsFactory = new WindowsFilesystemFactory();
#elif defined(__SYMBIAN32__)
// Do nothing since its handled by the Symbian SDL inheritance
#else
#error Unknown and unsupported FS backend
#endif
_inited(false),
_initedSDL(false) {
}
OSystem_SDL::~OSystem_SDL() {
deinit();
}
void OSystem_SDL::initBackend() {
// Check if backend has not been initialized
assert(!_inited);
// Initialize SDL
initSDL();
// Creates the backend managers, if they don't exist yet (we check
// for this to allow subclasses to provide their own).
if (_mutexManager == 0)
_mutexManager = new SdlMutexManager();
if (_eventManager == 0)
_eventManager = new SdlEventManager(this);
if (_savefileManager == 0)
_savefileManager = new DefaultSaveFileManager();
if (_mixer == 0)
_mixer = new SdlMixerImpl(this);
if (_timerManager == 0)
_timerManager = new SdlTimerManager();
if (_graphicsManager == 0)
_graphicsManager = new SdlGraphicsManager();
if (_audiocdManager == 0)
_audiocdManager = new SdlAudioCDManager();
// Setup a custom program icon.
setupIcon();
_inited = true;
}
void OSystem_SDL::initSDL() {
// Check if SDL has not been initialized
if (!_initedSDL) {
uint32 sdlFlags = 0;
if (ConfMan.hasKey("disable_sdl_parachute"))
sdlFlags |= SDL_INIT_NOPARACHUTE;
// Initialize SDL (SDL Subsystems are initiliazed in the corresponding sdl managers)
if (SDL_Init(sdlFlags) == -1)
error("Could not initialize SDL: %s", SDL_GetError());
// Enable unicode support if possible
SDL_EnableUNICODE(1);
_initedSDL = true;
}
}
void OSystem_SDL::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
#ifdef DATA_PATH
@ -185,86 +119,11 @@ void OSystem_SDL::addSysArchivesToSearchSet(Common::SearchSet &s, int priority)
}
#endif
#ifdef MACOSX
// Get URL of the Resource directory of the .app bundle
CFURLRef fileUrl = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
if (fileUrl) {
// Try to convert the URL to an absolute path
UInt8 buf[MAXPATHLEN];
if (CFURLGetFileSystemRepresentation(fileUrl, true, buf, sizeof(buf))) {
// Success: Add it to the search path
Common::String bundlePath((const char *)buf);
s.add("__OSX_BUNDLE__", new Common::FSDirectory(bundlePath), priority);
}
CFRelease(fileUrl);
}
#endif
}
Common::String OSystem_SDL::getDefaultConfigFileName() {
char configFile[MAXPATHLEN];
#if defined (WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
OSVERSIONINFO win32OsVersion;
ZeroMemory(&win32OsVersion, sizeof(OSVERSIONINFO));
win32OsVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&win32OsVersion);
// Check for non-9X version of Windows.
if (win32OsVersion.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS) {
// Use the Application Data directory of the user profile.
if (win32OsVersion.dwMajorVersion >= 5) {
if (!GetEnvironmentVariable("APPDATA", configFile, sizeof(configFile)))
error("Unable to access application data directory");
} else {
if (!GetEnvironmentVariable("USERPROFILE", configFile, sizeof(configFile)))
error("Unable to access user profile directory");
strcat(configFile, "\\Application Data");
CreateDirectory(configFile, NULL);
}
strcat(configFile, "\\ScummVM");
CreateDirectory(configFile, NULL);
strcat(configFile, "\\" DEFAULT_CONFIG_FILE);
FILE *tmp = NULL;
if ((tmp = fopen(configFile, "r")) == NULL) {
// Check windows directory
char oldConfigFile[MAXPATHLEN];
GetWindowsDirectory(oldConfigFile, MAXPATHLEN);
strcat(oldConfigFile, "\\" DEFAULT_CONFIG_FILE);
if ((tmp = fopen(oldConfigFile, "r"))) {
strcpy(configFile, oldConfigFile);
fclose(tmp);
}
} else {
fclose(tmp);
}
} else {
// Check windows directory
GetWindowsDirectory(configFile, MAXPATHLEN);
strcat(configFile, "\\" DEFAULT_CONFIG_FILE);
}
#elif defined(UNIX)
// On UNIX type systems, by default we store the config file inside
// to the HOME directory of the user.
//
// GP2X is Linux based but Home dir can be read only so do not use
// it and put the config in the executable dir.
//
// On the iPhone, the home dir of the user when you launch the app
// from the Springboard, is /. Which we don't want.
const char *home = getenv("HOME");
if (home != NULL && strlen(home) < MAXPATHLEN)
snprintf(configFile, MAXPATHLEN, "%s/%s", home, DEFAULT_CONFIG_FILE);
else
strcpy(configFile, DEFAULT_CONFIG_FILE);
#else
strcpy(configFile, DEFAULT_CONFIG_FILE);
#endif
return configFile;
}
@ -319,7 +178,6 @@ void OSystem_SDL::deinit() {
void OSystem_SDL::quit() {
deinit();
exit(0);
}

View File

@ -42,12 +42,9 @@ public:
virtual void initBackend();
// Define all hardware keys for keymapper
virtual Common::HardwareKeySet *getHardwareKeySet();
// Quit
virtual void quit(); // overloaded by CE backend
virtual void quit();
virtual void deinit();
virtual void setWindowCaption(const char *caption);
@ -56,7 +53,7 @@ public:
virtual Common::SeekableReadStream *createConfigReadStream();
virtual Common::WriteStream *createConfigWriteStream();
SdlGraphicsManager *getGraphicsManager();
virtual SdlGraphicsManager *getGraphicsManager();
virtual bool pollEvent(Common::Event &event);
@ -66,8 +63,11 @@ public:
protected:
bool _inited;
bool _initedSDL;
void setupIcon();
virtual void initSDL();
virtual void setupIcon();
virtual Common::String getDefaultConfigFileName();
};

View File

@ -45,77 +45,10 @@
#define DEFAULT_CONFIG_FILE "scummvm.ini"
OSystem_Win32::OSystem_Win32() {
// Initialze File System Factory
_fsFactory = new WindowsFilesystemFactory();
}
void OSystem_Win32::initBackend() {
assert(!_inited);
uint32 sdlFlags = 0;
if (ConfMan.hasKey("disable_sdl_parachute"))
sdlFlags |= SDL_INIT_NOPARACHUTE;
if (SDL_Init(sdlFlags) == -1) {
error("Could not initialize SDL: %s", SDL_GetError());
}
// Enable unicode support if possible
SDL_EnableUNICODE(1);
// Create and hook up the mutex manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_mutexManager == 0) {
_mutexManager = new SdlMutexManager();
}
// Create and hook up the event manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_eventManager == 0) {
_eventManager = new SdlEventManager(this);
}
// Create the savefile manager, if none exists yet (we check for this to
// allow subclasses to provide their own).
if (_savefileManager == 0) {
_savefileManager = new DefaultSaveFileManager();
}
// Create and hook up the mixer, if none exists yet (we check for this to
// allow subclasses to provide their own).
if (_mixer == 0) {
if (SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) {
error("Could not initialize SDL: %s", SDL_GetError());
}
_mixer = new SdlMixerImpl(this);
}
// 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) {
_timerManager = new SdlTimerManager();
}
// Create and hook up the graphics manager, if none exists yet (we check for
// this to allow subclasses to provide their own).
if (_graphicsManager == 0) {
_graphicsManager = new SdlGraphicsManager();
}
if (_audiocdManager == 0) {
_audiocdManager = (AudioCDManager *)new SdlAudioCDManager();
}
// Setup a custom program icon.
setupIcon();
// Invoke parent implementation of this method
OSystem::initBackend();
_inited = true;
}
Common::String OSystem_Win32::getDefaultConfigFileName() {
char configFile[MAXPATHLEN];

View File

@ -33,8 +33,6 @@ public:
OSystem_Win32();
~OSystem_Win32() {}
void initBackend();
protected:
Common::String getDefaultConfigFileName();
};