mirror of
https://github.com/libretro/scummvm.git
synced 2025-04-02 06:41:51 +00:00
Fixed AudioCDManager not having a public inheritance. Backend code cleanup.
svn-id: r50189
This commit is contained in:
parent
1811e86648
commit
04dce6a106
@ -29,7 +29,7 @@
|
||||
#include "backends/audiocd/audiocd.h"
|
||||
#include "sound/mixer.h"
|
||||
|
||||
class DefaultAudioCDManager : AudioCDManager {
|
||||
class DefaultAudioCDManager : public AudioCDManager {
|
||||
public:
|
||||
DefaultAudioCDManager();
|
||||
virtual ~DefaultAudioCDManager() {}
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include <SDL.h>
|
||||
#endif
|
||||
|
||||
class SdlAudioCDManager : DefaultAudioCDManager {
|
||||
class SdlAudioCDManager : public DefaultAudioCDManager {
|
||||
public:
|
||||
SdlAudioCDManager();
|
||||
~SdlAudioCDManager();
|
||||
|
@ -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.
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
};
|
||||
|
@ -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];
|
||||
|
||||
|
@ -33,8 +33,6 @@ public:
|
||||
OSystem_Win32();
|
||||
~OSystem_Win32() {}
|
||||
|
||||
void initBackend();
|
||||
|
||||
protected:
|
||||
Common::String getDefaultConfigFileName();
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user