[Scummvm-cvs-logs] SF.net SVN: scummvm:[49305] scummvm/branches/gsoc2010-opengl/backends

vgvgf at users.sourceforge.net vgvgf at users.sourceforge.net
Sat May 29 03:56:34 CEST 2010


Revision: 49305
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49305&view=rev
Author:   vgvgf
Date:     2010-05-29 01:56:34 +0000 (Sat, 29 May 2010)

Log Message:
-----------
Added again base-backend. Started sdl backend refatoring, file, mutex and timer subsystems created.

Modified Paths:
--------------
    scummvm/branches/gsoc2010-opengl/backends/module.mk

Added Paths:
-----------
    scummvm/branches/gsoc2010-opengl/backends/base-backend.cpp
    scummvm/branches/gsoc2010-opengl/backends/base-backend.h
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.cpp
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.h
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.cpp
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.h
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.cpp
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.h

Added: scummvm/branches/gsoc2010-opengl/backends/base-backend.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/base-backend.cpp	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/base-backend.cpp	2010-05-29 01:56:34 UTC (rev 49305)
@@ -0,0 +1,86 @@
+/* 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$
+ *
+ */
+
+#include "backends/base-backend.h"
+#include "backends/events/default/default-events.h"
+#include "gui/message.h"
+
+void BaseBackend::displayMessageOnOSD(const char *msg) {
+	// Display the message for 1.5 seconds
+	GUI::TimedMessageDialog dialog(msg, 1500);
+	dialog.runModal();
+}
+
+
+static Common::EventManager *s_eventManager = 0;
+
+Common::EventManager *BaseBackend::getEventManager() {
+	// FIXME/TODO: Eventually this method should be turned into an abstract one,
+	// to force backends to implement this conciously (even if they
+	// end up returning the default event manager anyway).
+	if (!s_eventManager)
+		s_eventManager = new DefaultEventManager(this);
+	return s_eventManager;
+}
+
+void BaseBackend::fillScreen(uint32 col) {
+	Graphics::Surface *screen = lockScreen();
+	if (screen && screen->pixels)
+		memset(screen->pixels, col, screen->h * screen->pitch);
+	unlockScreen();
+}
+
+
+/*
+ FIXME: Maybe we should push the default config file loading/saving code below
+ out to all the backends?
+*/
+
+
+#if defined(UNIX)
+#if defined(SAMSUNGTV)
+#define DEFAULT_CONFIG_FILE "/dtv/usb/sda1/.scummvmrc"
+#else
+#define DEFAULT_CONFIG_FILE ".scummvmrc"
+#endif
+#endif
+
+#if !defined(UNIX)
+#define DEFAULT_CONFIG_FILE "scummvm.ini"
+#endif
+
+Common::SeekableReadStream *BaseBackend::createConfigReadStream() {
+	Common::FSNode file(DEFAULT_CONFIG_FILE);
+	return file.createReadStream();
+}
+
+Common::WriteStream *BaseBackend::createConfigWriteStream() {
+#ifdef __DC__
+	return 0;
+#else
+	Common::FSNode file(DEFAULT_CONFIG_FILE);
+	return file.createWriteStream();
+#endif
+}


Property changes on: scummvm/branches/gsoc2010-opengl/backends/base-backend.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Added: scummvm/branches/gsoc2010-opengl/backends/base-backend.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/base-backend.h	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/base-backend.h	2010-05-29 01:56:34 UTC (rev 49305)
@@ -0,0 +1,43 @@
+/* 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_BASE_BACKEND_H
+#define BACKENDS_BASE_BACKEND_H
+
+#include "common/system.h"
+#include "backends/events/default/default-events.h"
+
+class BaseBackend : public OSystem, Common::EventSource {
+public:
+	virtual Common::EventManager *getEventManager();
+	virtual void displayMessageOnOSD(const char *msg);
+	virtual void fillScreen(uint32 col);
+
+	virtual Common::SeekableReadStream *createConfigReadStream();
+	virtual Common::WriteStream *createConfigWriteStream();
+};
+
+
+#endif


Property changes on: scummvm/branches/gsoc2010-opengl/backends/base-backend.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Modified: scummvm/branches/gsoc2010-opengl/backends/module.mk
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/module.mk	2010-05-28 22:28:06 UTC (rev 49304)
+++ scummvm/branches/gsoc2010-opengl/backends/module.mk	2010-05-29 01:56:34 UTC (rev 49305)
@@ -1,6 +1,7 @@
 MODULE := backends
 
 MODULE_OBJS := \
+	base-backend.o \
 	events/default/default-events.o \
 	fs/abstract-fs.o \
 	fs/stdiostream.o \

Added: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.cpp	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.cpp	2010-05-29 01:56:34 UTC (rev 49305)
@@ -0,0 +1,235 @@
+/* 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)
+#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/file.h"
+#include "common/archive.h"
+
+#ifdef UNIX
+  #include "backends/saves/posix/posix-saves.h"
+#else
+  #include "backends/saves/default/default-saves.h"
+#endif
+
+/*
+ * 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
+
+SdlSubSys_File::SdlSubSys_File()
+	:
+	_inited(false),
+	_fsFactory(0),
+	_savefile(0) {
+
+}
+
+SdlSubSys_File::~SdlSubSys_File() {
+}
+
+void SdlSubSys_File::fileInit(OSystem *mainSys) {
+	if (_inited) {
+		return;
+	}
+	_mainSys = mainSys;
+
+	// Create the savefile manager, if none exists yet (we check for this to
+	// allow subclasses to provide their own).
+	if (_savefile == 0) {
+	#ifdef UNIX
+		_savefile = new POSIXSaveFileManager();
+	#else
+		_savefile = new DefaultSaveFileManager();
+	#endif
+	}
+
+#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 = true;
+}
+
+void SdlSubSys_File::fileDone() {
+	delete _savefile;
+}
+
+bool SdlSubSys_File::hasFeature(Feature f) {
+	return false;
+}
+
+void SdlSubSys_File::setFeatureState(Feature f, bool enable) {
+	
+}
+
+bool SdlSubSys_File::getFeatureState(Feature f) {
+	return false;
+}
+
+Common::SaveFileManager *SdlSubSys_File::getSavefileManager() {
+	assert(_savefile);
+	return _savefile;
+}
+
+FilesystemFactory *SdlSubSys_File::getFilesystemFactory() {
+	assert(_fsFactory);
+	return _fsFactory;
+}
+
+void SdlSubSys_File::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
+
+#ifdef DATA_PATH
+	// Add the global DATA_PATH to the directory search list
+	// FIXME: We use depth = 4 for now, to match the old code. May want to change that
+	Common::FSNode dataNode(DATA_PATH);
+	if (dataNode.exists() && dataNode.isDirectory()) {
+		s.add(DATA_PATH, new Common::FSDirectory(dataNode, 4), 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
+
+}
+
+static Common::String 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;
+}
+
+Common::SeekableReadStream *SdlSubSys_File::createConfigReadStream() {
+	Common::FSNode file(getDefaultConfigFileName());
+	return file.createReadStream();
+}
+
+Common::WriteStream *SdlSubSys_File::createConfigWriteStream() {
+	Common::FSNode file(getDefaultConfigFileName());
+	return file.createWriteStream();
+}


Property changes on: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Added: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.h	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.h	2010-05-29 01:56:34 UTC (rev 49305)
@@ -0,0 +1,67 @@
+/* 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_SDL_SUBSYS_FILE_H
+#define BACKENDS_SDL_SUBSYS_FILE_H
+
+#include "backends/base-subsys-file.h"
+
+#if defined(__SYMBIAN32__)
+#include <esdl\SDL.h>
+#else
+#include <SDL.h>
+#endif
+
+class SdlSubSys_File : public BaseSubSys_File {
+public:
+	SdlSubSys_File();
+	~SdlSubSys_File();
+
+	virtual void fileInit(OSystem *mainSys);
+	virtual void fileDone();
+
+	bool hasFeature(Feature f);
+	void setFeatureState(Feature f, bool enable);
+	bool getFeatureState(Feature f);
+
+	virtual Common::SeekableReadStream *createConfigReadStream();
+	virtual Common::WriteStream *createConfigWriteStream();
+
+	virtual Common::SaveFileManager *getSavefileManager();
+	virtual FilesystemFactory *getFilesystemFactory();
+	virtual void addSysArchivesToSearchSet(Common::SearchSet &s, int priority = 0);
+
+protected:
+	bool _inited;
+
+	FilesystemFactory *_fsFactory;
+	Common::SaveFileManager *_savefile;
+
+private:
+	OSystem *_mainSys;
+};
+
+
+#endif


Property changes on: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/file.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Added: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.cpp	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.cpp	2010-05-29 01:56:34 UTC (rev 49305)
@@ -0,0 +1,83 @@
+/* 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$
+ *
+ */
+
+#include "backends/platform/sdl/mutex.h"
+
+SdlSubSys_Mutex::SdlSubSys_Mutex()
+	:
+	_inited(false) {
+
+}
+
+SdlSubSys_Mutex::~SdlSubSys_Mutex() {
+	if (_inited) {
+		mutexDone();
+	}
+}
+
+void SdlSubSys_Mutex::mutexInit(OSystem *mainSys) {
+	if (_inited) {
+		return;
+	}
+	_mainSys = mainSys;
+
+	_graphicsMutex = createMutex();
+
+	_inited = true;
+}
+
+void SdlSubSys_Mutex::mutexDone() {
+	deleteMutex(_graphicsMutex);
+
+	_inited = false;
+}
+
+bool SdlSubSys_Mutex::hasFeature(Feature f) {
+	return false;
+}
+
+void SdlSubSys_Mutex::setFeatureState(Feature f, bool enable) {
+	
+}
+
+bool SdlSubSys_Mutex::getFeatureState(Feature f) {
+	return false;
+}
+
+OSystem::MutexRef SdlSubSys_Mutex::createMutex() {
+	return (MutexRef) SDL_CreateMutex();
+}
+
+void SdlSubSys_Mutex::lockMutex(MutexRef mutex) {
+	SDL_mutexP((SDL_mutex *) mutex);
+}
+
+void SdlSubSys_Mutex::unlockMutex(MutexRef mutex) {
+	SDL_mutexV((SDL_mutex *) mutex);
+}
+
+void SdlSubSys_Mutex::deleteMutex(MutexRef mutex) {
+	SDL_DestroyMutex((SDL_mutex *) mutex);
+}


Property changes on: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Added: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.h	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.h	2010-05-29 01:56:34 UTC (rev 49305)
@@ -0,0 +1,69 @@
+/* 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_SDL_SUBSYS_MUTEX_H
+#define BACKENDS_SDL_SUBSYS_MUTEX_H
+
+#include "backends/base-subsys-mutex.h"
+
+#if defined(__SYMBIAN32__)
+#include <esdl\SDL.h>
+#else
+#include <SDL.h>
+#endif
+
+class SdlSubSys_Mutex : public BaseSubSys_Mutex {
+public:
+	SdlSubSys_Mutex();
+	~SdlSubSys_Mutex();
+
+	virtual void mutexInit(OSystem *mainSys);
+	virtual void mutexDone();
+
+	bool hasFeature(Feature f);
+	void setFeatureState(Feature f, bool enable);
+	bool getFeatureState(Feature f);
+
+	// Mutex handling
+	MutexRef createMutex();
+	void lockMutex(MutexRef mutex);
+	void unlockMutex(MutexRef mutex);
+	void deleteMutex(MutexRef mutex);
+
+protected:
+	bool _inited;
+
+	/**
+	 * Mutex which prevents multiple threads from interfering with each other
+	 * when accessing the screen.
+	 */
+	MutexRef _graphicsMutex;
+
+private:
+	OSystem *_mainSys;
+};
+
+
+#endif


Property changes on: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/mutex.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Added: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.cpp	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.cpp	2010-05-29 01:56:34 UTC (rev 49305)
@@ -0,0 +1,121 @@
+/* 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$
+ *
+ */
+
+#include "backends/platform/sdl/timer.h"
+#include "backends/timer/default/default-timer.h"
+#include "common/EventRecorder.h"
+#include <time.h>	// for getTimeAndDate()
+
+static Uint32 timer_handler(Uint32 interval, void *param) {
+	((DefaultTimerManager *)param)->handler();
+	return interval;
+}
+
+SdlSubSys_Timer::SdlSubSys_Timer()
+	:
+	_inited(false),
+	_timerID(),
+	_timer(0) {
+
+}
+
+SdlSubSys_Timer::~SdlSubSys_Timer() {
+	if (_inited) {
+		timerDone();
+	}
+}
+
+void SdlSubSys_Timer::timerInit(OSystem *mainSys) {
+	if (_inited) {
+		return;
+	}
+	_mainSys = mainSys;
+
+	if (SDL_InitSubSystem(SDL_INIT_TIMER) == -1) {
+		error("Could not initialize SDL Timer: %s", SDL_GetError());
+	}
+
+	// Create and hook up the timer manager, if none exists yet (we check for
+	// this to allow subclasses to provide their own).
+	if (_timer == 0) {
+		// Note: We could implement a custom SDLTimerManager by using
+		// SDL_AddTimer. That might yield better timer resolution, but it would
+		// also change the semantics of a timer: Right now, ScummVM timers
+		// *never* run in parallel, due to the way they are implemented. If we
+		// switched to SDL_AddTimer, each timer might run in a separate thread.
+		// However, not all our code is prepared for that, so we can't just
+		// switch. Still, it's a potential future change to keep in mind.
+		_timer = new DefaultTimerManager();
+		_timerID = SDL_AddTimer(10, &timer_handler, _timer);
+	}
+
+	_inited = true;
+}
+
+void SdlSubSys_Timer::timerDone() {
+	delete _timer;
+	SDL_RemoveTimer(_timerID);
+	SDL_QuitSubSystem(SDL_INIT_TIMER);
+
+	_inited = false;
+}
+
+bool SdlSubSys_Timer::hasFeature(Feature f) {
+	return false;
+}
+
+void SdlSubSys_Timer::setFeatureState(Feature f, bool enable) {
+	
+}
+
+bool SdlSubSys_Timer::getFeatureState(Feature f) {
+	return false;
+}
+
+uint32 SdlSubSys_Timer::getMillis() {
+	uint32 millis = SDL_GetTicks();
+	g_eventRec.processMillis(millis);
+	return millis;
+}
+
+void SdlSubSys_Timer::delayMillis(uint msecs) {
+	SDL_Delay(msecs);
+}
+
+void SdlSubSys_Timer::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;
+}
+
+Common::TimerManager *SdlSubSys_Timer::getTimerManager() {
+	assert(_timer);
+	return _timer;
+}


Property changes on: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Added: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.h	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.h	2010-05-29 01:56:34 UTC (rev 49305)
@@ -0,0 +1,69 @@
+/* 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_SDL_SUBSYS_TIMER_H
+#define BACKENDS_SDL_SUBSYS_TIMER_H
+
+#include "backends/base-subsys-timer.h"
+
+#if defined(__SYMBIAN32__)
+#include <esdl\SDL.h>
+#else
+#include <SDL.h>
+#endif
+
+class SdlSubSys_Timer : public BaseSubSys_Timer {
+public:
+	SdlSubSys_Timer();
+	~SdlSubSys_Timer();
+
+	virtual void timerInit(OSystem *mainSys);
+	virtual void timerDone();
+
+	bool hasFeature(Feature f);
+	void setFeatureState(Feature f, bool enable);
+	bool getFeatureState(Feature f);
+
+	// 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;
+	virtual Common::TimerManager *getTimerManager();
+
+protected:
+	bool _inited;
+
+	SDL_TimerID _timerID;
+	Common::TimerManager *_timer;
+
+private:
+	OSystem *_mainSys;
+};
+
+
+#endif


Property changes on: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/timer.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list