diff options
Diffstat (limited to 'backends/platform')
176 files changed, 3198 insertions, 213 deletions
diff --git a/backends/platform/android/android.cpp b/backends/platform/android/android.cpp index 17c7d4f9cb..a935bf145d 100644 --- a/backends/platform/android/android.cpp +++ b/backends/platform/android/android.cpp @@ -602,4 +602,3 @@ void AndroidPluginProvider::addCustomDirectories(Common::FSList &dirs) const {  #endif  #endif - diff --git a/backends/platform/android/android.h b/backends/platform/android/android.h index c2ada2ab77..f39a8f1144 100644 --- a/backends/platform/android/android.h +++ b/backends/platform/android/android.h @@ -296,4 +296,3 @@ public:  #endif  #endif - diff --git a/backends/platform/android/android.mk b/backends/platform/android/android.mk index 77fdb139d8..63d194fdc1 100644 --- a/backends/platform/android/android.mk +++ b/backends/platform/android/android.mk @@ -189,4 +189,3 @@ androiddistdebug: all  	done  .PHONY: androidrelease androidtest - diff --git a/backends/platform/android/asset-archive.h b/backends/platform/android/asset-archive.h index 016e3e31a5..9216412e0a 100644 --- a/backends/platform/android/asset-archive.h +++ b/backends/platform/android/asset-archive.h @@ -52,4 +52,3 @@ private:  #endif  #endif - diff --git a/backends/platform/android/events.cpp b/backends/platform/android/events.cpp index cf1d4b173c..2a16e69411 100644 --- a/backends/platform/android/events.cpp +++ b/backends/platform/android/events.cpp @@ -820,4 +820,3 @@ bool OSystem_Android::pollEvent(Common::Event &event) {  }  #endif - diff --git a/backends/platform/android/gfx.cpp b/backends/platform/android/gfx.cpp index b8a9e74437..8bc914f567 100644 --- a/backends/platform/android/gfx.cpp +++ b/backends/platform/android/gfx.cpp @@ -826,4 +826,3 @@ void OSystem_Android::disableCursorPalette() {  }  #endif - diff --git a/backends/platform/android/jni.cpp b/backends/platform/android/jni.cpp index e3b4ef7401..b44a585528 100644 --- a/backends/platform/android/jni.cpp +++ b/backends/platform/android/jni.cpp @@ -619,4 +619,3 @@ void JNI::setPause(JNIEnv *env, jobject self, jboolean value) {  }  #endif - diff --git a/backends/platform/android/jni.h b/backends/platform/android/jni.h index 1abecf0a37..52698e0f35 100644 --- a/backends/platform/android/jni.h +++ b/backends/platform/android/jni.h @@ -145,4 +145,3 @@ inline int JNI::writeAudio(JNIEnv *env, jbyteArray &data, int offset, int size)  #endif  #endif - diff --git a/backends/platform/android/module.mk b/backends/platform/android/module.mk index 2fe4b40585..de5fe98a53 100644 --- a/backends/platform/android/module.mk +++ b/backends/platform/android/module.mk @@ -12,4 +12,3 @@ MODULE_OBJS := \  MODULE_OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS))  OBJS := $(MODULE_OBJS) $(OBJS)  MODULE_DIRS += $(sort $(dir $(MODULE_OBJS))) - diff --git a/backends/platform/android/org/inodes/gus/scummvm/EditableSurfaceView.java b/backends/platform/android/org/inodes/gus/scummvm/EditableSurfaceView.java index cede7eedd4..3aef14b851 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/EditableSurfaceView.java +++ b/backends/platform/android/org/inodes/gus/scummvm/EditableSurfaceView.java @@ -59,4 +59,3 @@ public class EditableSurfaceView extends SurfaceView {  		return new MyInputConnection();  	}  } - diff --git a/backends/platform/android/org/inodes/gus/scummvm/PluginProvider.java b/backends/platform/android/org/inodes/gus/scummvm/PluginProvider.java index 3c91d9f5dc..d90b7b2c68 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/PluginProvider.java +++ b/backends/platform/android/org/inodes/gus/scummvm/PluginProvider.java @@ -51,4 +51,3 @@ public class PluginProvider extends BroadcastReceiver {  		setResultExtras(extras);  	}  } - diff --git a/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java b/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java index ef9f4cc1e0..246a02c9be 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java +++ b/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java @@ -449,4 +449,3 @@ public abstract class ScummVM implements SurfaceHolder.Callback, Runnable {  		System.load(libpath.getPath());  	}  } - diff --git a/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java b/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java index 1978b690d0..ce4e016322 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java +++ b/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java @@ -222,4 +222,3 @@ public class ScummVMActivity extends Activity {  										InputMethodManager.HIDE_IMPLICIT_ONLY);  	}  } - diff --git a/backends/platform/android/org/inodes/gus/scummvm/ScummVMApplication.java b/backends/platform/android/org/inodes/gus/scummvm/ScummVMApplication.java index f9eec72eac..8ab7d1a084 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/ScummVMApplication.java +++ b/backends/platform/android/org/inodes/gus/scummvm/ScummVMApplication.java @@ -28,4 +28,3 @@ public class ScummVMApplication extends Application {  		return _cache_dir;  	}  } - diff --git a/backends/platform/android/org/inodes/gus/scummvm/ScummVMEvents.java b/backends/platform/android/org/inodes/gus/scummvm/ScummVMEvents.java index 2d5c100a1c..175ff0b677 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/ScummVMEvents.java +++ b/backends/platform/android/org/inodes/gus/scummvm/ScummVMEvents.java @@ -229,4 +229,3 @@ public class ScummVMEvents implements  		return true;  	}  } - diff --git a/backends/platform/android/org/inodes/gus/scummvm/Unpacker.java b/backends/platform/android/org/inodes/gus/scummvm/Unpacker.java index c4b2ad7f5d..8811b1f3ae 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/Unpacker.java +++ b/backends/platform/android/org/inodes/gus/scummvm/Unpacker.java @@ -370,4 +370,3 @@ public class Unpacker extends Activity {  		}  	}  } - diff --git a/backends/platform/android/texture.cpp b/backends/platform/android/texture.cpp index e993ed6794..53b4d1cc59 100644 --- a/backends/platform/android/texture.cpp +++ b/backends/platform/android/texture.cpp @@ -488,4 +488,3 @@ GLESFakePalette5551Texture::~GLESFakePalette5551Texture() {  }  #endif - diff --git a/backends/platform/android/texture.h b/backends/platform/android/texture.h index dd34ba9d88..4307b5a1bc 100644 --- a/backends/platform/android/texture.h +++ b/backends/platform/android/texture.h @@ -271,4 +271,3 @@ public:  #endif  #endif - diff --git a/backends/platform/bada/README.TXT b/backends/platform/bada/README.TXT new file mode 100644 index 0000000000..ca6f8f245a --- /dev/null +++ b/backends/platform/bada/README.TXT @@ -0,0 +1,85 @@ +Build instructions: + +1. Install BADA SDK (requires free registration): + + http://developer.bada.com/apis/index.do + +2. Install Cygwin: + + http://www.cygwin.com/ + + Add the following to your cygwin .bash_profile: + + alias mmake=/cygdrive/c/MinGW/bin/mingw32-make.exe + export BADA_SDK=/cygdrive/c/bada/1.2.1 + export ARM_BIN=c:/bada/1.2.1/Tools/Toolchains/ARM/bin + export CPPFLAGS="-fpic -fshort-wchar -mcpu=cortex-a8 -mfpu=vfpv3 \ +                  -mfloat-abi=hard -mlittle-endian -mthumb-interwork -Wno-psabi \ +                  -fno-strict-aliasing -fno-short-enums" + export LDFLAGS="-nostdlib -lc-newlib -lm-newlib -LC:/bada/1.2.1/Model/Wave_LP1/Target" + #export PATH=${BADA_SDK}/Tools/Toolchains/Win32/bin:${PATH} + export PATH=${BADA_SDK}/Tools/Toolchains/ARM/bin:~/utils:${PATH} + alias gcc=${ARM_BIN}/arm-samsung-nucleuseabi-gcc.exe + alias ar=${ARM_BIN}/arm-samsung-nucleuseabi-ar.exe + + The following were added to ~/utils for zlib: + + ar: + #!/bin/sh + ${ARM_BIN}/arm-samsung-nucleuseabi-ar.exe $* + + gcc: + #!/bin/sh + ${ARM_BIN}/arm-samsung-nucleuseabi-gcc.exe $* + +3. Build dependencies + + zlib, libogg, libvorbis, libmad, FLAC + + see: "Building the libraries" under: + http://wiki.scummvm.org/index.php/Compiling_ScummVM/MinGW#Building_the_libraries + for instructions on how to obtain these modules + + 3.1 For Target-Release configure ogg and mad with: + +     ./configure --host=arm-samsung-nucleuseabi --disable-shared + +     when building vorbis and flac: + +     ./configure --host=arm-samsung-nucleuseabi --disable-shared --with-ogg=c:/cygwin/usr/local + + 3.2 for each module, after a successful configure, add the following +     to the generated config.h (gzguts.h for zlib) + +     #undef __MINGW32__ +     #undef _WIN32 +     #include "c:/src/scummvm/backends/platform/bada/portdefs.h" + + 3.3 Additional post configure edits: + +   - removed -fforce-mem from the libMAD Makefile +   - in libvorbis/lib/Makefile comment lines with vorbis_selftests +   - edit libFLAC/Makefile ... CFLAGS = $(OGG_CFLAGS) + + Note: you can ignore the ranlib errors when doing make install. + +4. Build the ScummVM base library: + +  ./configure --host=bada --enable-release + +  To target the Win32 simulator: + + ./configure --host=bada --enable-debug + +5. Build the front end application using BADA-Ide: + + Copy the scummvm/dists/bada folder into a clean directory + outside of the scummvm package. Start the BADA IDE then + choose this folder as the eclipse workspace. Click + Project / Build. + +Links: + +A short turorial on implementing OpenGL ES 1.1 in BADA: +  http://forums.badadev.com/viewtopic.php?f=7&t=208 + diff --git a/backends/platform/bada/application.cpp b/backends/platform/bada/application.cpp new file mode 100644 index 0000000000..a287fa6352 --- /dev/null +++ b/backends/platform/bada/application.cpp @@ -0,0 +1,109 @@ +/* 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. + * + */ + +#include "engines/engine.h" + +#include "backends/platform/bada/form.h" +#include "backends/platform/bada/system.h" +#include "backends/platform/bada/application.h" + +using namespace Osp::System; +using namespace Osp::Ui::Controls; + +Application *BadaScummVM::createInstance() { +	return new BadaScummVM(); +} + +BadaScummVM::BadaScummVM() : _appForm(0) { +} + +BadaScummVM::~BadaScummVM() { +	logEntered(); +	if (g_system) { +		BadaSystem *system = (BadaSystem *)g_system; +		system->destroyBackend(); +		delete system; +		g_system = 0; +	} +} + +bool BadaScummVM::OnAppInitializing(AppRegistry &appRegistry) { +	_appForm = systemStart(this); +	return (_appForm != NULL); +} + +bool BadaScummVM::OnAppTerminating(AppRegistry &appRegistry, +																	 bool forcedTermination) { +	logEntered(); +	return true; +} + +void BadaScummVM::OnUserEventReceivedN(RequestId requestId, +																			 Osp::Base::Collection::IList *args) { +	logEntered(); + +	if (requestId == USER_MESSAGE_EXIT) { +		// normal program termination +		Terminate(); +	} else if (requestId == USER_MESSAGE_EXIT_ERR) { +		// assertion failure termination +		String *message = NULL; +		if (args) { +			message = (String*)args->GetAt(0); +		} +		if (!message) { +			message = new String("Unknown error"); +		} + +		MessageBox messageBox; +		messageBox.Construct(L"Oops...", *message, MSGBOX_STYLE_OK); +		int modalResult; +		messageBox.ShowAndWait(modalResult); +		Terminate(); +	} +} + +void BadaScummVM::OnForeground(void) { +	logEntered(); +	pauseGame(false); +} + +void BadaScummVM::OnBackground(void) { +	logEntered(); +	pauseGame(true); +} + +void BadaScummVM::OnBatteryLevelChanged(BatteryLevel batteryLevel) { +} + +void BadaScummVM::OnLowMemory(void) { +} + +void BadaScummVM::pauseGame(bool pause) { +	if (pause && _appForm && g_engine && !g_engine->isPaused()) { +		_appForm->pushKey(Common::KEYCODE_SPACE); +	} + +	if (g_system) { +		((BadaSystem *)g_system)->setMute(pause); +	} +} diff --git a/backends/platform/bada/application.h b/backends/platform/bada/application.h new file mode 100644 index 0000000000..2b0d37f1ef --- /dev/null +++ b/backends/platform/bada/application.h @@ -0,0 +1,54 @@ +/* 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. + * + */ + +#ifndef BADA_APPLICATION_H +#define BADA_APPLICATION_H + +#include <FBase.h> +#include <FApp.h> +#include <FGraphics.h> +#include <FUi.h> +#include <FSystem.h> + +#include "backends/platform/bada/system.h" + +class BadaScummVM : public Osp::App::Application { +public: +	BadaScummVM(); +	~BadaScummVM(); + +	static Osp::App::Application *createInstance(void); + +	bool OnAppInitializing(Osp::App::AppRegistry &appRegistry); +	bool OnAppTerminating(Osp::App::AppRegistry &appRegistry, bool forcedTermination = false); +	void OnForeground(void); +	void OnBackground(void); +	void OnLowMemory(void); +	void OnBatteryLevelChanged(Osp::System::BatteryLevel batteryLevel); +	void OnUserEventReceivedN(RequestId requestId, Osp::Base::Collection::IList *pArgs); + +private: +	void pauseGame(bool pause); +	BadaAppForm *_appForm; +}; + +#endif diff --git a/backends/platform/bada/audio.cpp b/backends/platform/bada/audio.cpp new file mode 100644 index 0000000000..cfa6418e08 --- /dev/null +++ b/backends/platform/bada/audio.cpp @@ -0,0 +1,260 @@ +/* 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. + * + */ + +#include <FSysSettingInfo.h> +#include <FAppAppRegistry.h> + +#include "backends/platform/bada/audio.h" +#include "backends/platform/bada/system.h" + +#define TIMER_INCREMENT		 10 +#define TIMER_INTERVAL		 40 +#define MIN_TIMER_INTERVAL 10 +#define MAX_TIMER_INTERVAL 160 +#define INIT_LEVEL				 3 +#define CONFIG_KEY				 L"audiovol" + +// sound level pre-sets +const int levels[] = {0, 1, 10, 45, 70, 99}; + +AudioThread::AudioThread() : +	_mixer(0), +	_timer(0), +	_audioOut(0), +	_head(0), +	_tail(0), +	_ready(0), +	_interval(TIMER_INTERVAL), +	_playing(-1), +	_muted(true) { +} + +Audio::MixerImpl *AudioThread::Construct(OSystem *system) { +	logEntered(); + +	if (IsFailed(Thread::Construct(THREAD_TYPE_EVENT_DRIVEN, +																 DEFAULT_STACK_SIZE, +																 THREAD_PRIORITY_HIGH))) { +		AppLog("Failed to create AudioThread"); +		return NULL; +	} + +	_mixer = new Audio::MixerImpl(system, 44100); +	return _mixer; +} + +AudioThread::~AudioThread() { +	logEntered(); +} + +bool AudioThread::isSilentMode() { +	bool silentMode; +	String key(L"SilentMode"); +	Osp::System::SettingInfo::GetValue(key, silentMode); +	return silentMode; +} + +void AudioThread::setMute(bool on) { +	if (_audioOut && !isSilentMode()) { +		_muted = on; +		if (on) { +			_timer->Cancel(); +		} else { +			_timer->Start(_interval); +		} +	} +} + +int AudioThread::setVolume(bool up, bool minMax) { +	int level = -1; +	int numLevels = sizeof(levels) / sizeof(levels[0]); + +	if (_audioOut && !isSilentMode()) { +		int volume = _audioOut->GetVolume(); +		if (minMax) { +			level = up ? numLevels - 1 : 0; +			volume = levels[level]; +		} else { +			// adjust volume to be one of the preset values +			for (int i = 0; i < numLevels && level == -1; i++) { +				if (volume == levels[i]) { +					level = i; +					if (up) { +						if (i + 1 < numLevels) { +							level = i + 1; +						} +					} else if (i > 0) { +						level = i - 1; +					} +				} +			} + +			// default to INIT_LEVEL when current not preset value +			if (level == -1) { +				level = INIT_LEVEL; +			} +			volume = levels[level]; +		} + +		_audioOut->SetVolume(volume); + +		// remember the chosen setting +		AppRegistry *registry = Application::GetInstance()->GetAppRegistry(); +		if (registry) { +			registry->Set(CONFIG_KEY, volume); +		} +	} +	return level; +} + +bool AudioThread::OnStart(void) { +	logEntered(); + +	_audioOut = new Osp::Media::AudioOut(); +	if (!_audioOut || +			IsFailed(_audioOut->Construct(*this))) { +		AppLog("Failed to create AudioOut"); +		return false; +	} + +	int sampleRate = _mixer->getOutputRate(); + +	// ideally we would update _mixer with GetOptimizedSampleRate here +	if (_audioOut->GetOptimizedSampleRate() != sampleRate) { +		AppLog("Non optimal sample rate %d", _audioOut->GetOptimizedSampleRate()); +	} + +	if (IsFailed(_audioOut->Prepare(AUDIO_TYPE_PCM_S16_LE, +																 AUDIO_CHANNEL_TYPE_STEREO, +																 sampleRate))) { +		AppLog("Failed to prepare AudioOut %d", sampleRate); +		return false; +	} + +	int bufferSize = _audioOut->GetMinBufferSize(); +	for (int i = 0; i < NUM_AUDIO_BUFFERS; i++) { +		if (IsFailed(_audioBuffer[i].Construct(bufferSize))) { +			AppLog("Failed to create audio buffer"); +			return false; +		} +	} + +	_timer = new Timer(); +	if (!_timer || IsFailed(_timer->Construct(*this))) { +		AppLog("Failed to create audio timer"); +		return false; +	} + +	if (IsFailed(_timer->Start(_interval))) { +		AppLog("failed to start audio timer"); +		return false; +	} + +	// get the volume from the app-registry +	int volume = levels[INIT_LEVEL]; +	AppRegistry *registry = Application::GetInstance()->GetAppRegistry(); +	if (registry) { +		if (E_KEY_NOT_FOUND == registry->Get(CONFIG_KEY, volume)) { +			registry->Add(CONFIG_KEY, volume); +			volume = levels[INIT_LEVEL]; +		} else { +			AppLog("Setting volume: %d", volume); +		} +	} + +	_muted = false; +	_mixer->setReady(true); +	_audioOut->SetVolume(isSilentMode() ? 0 : volume); +	_audioOut->Start(); +	return true; +} + +void AudioThread::OnStop(void) { +	logEntered(); + +	_mixer->setReady(false); + +	if (_timer) { +		if (!_muted) { +			_timer->Cancel(); +		} +		delete _timer; +	} + +	if (_audioOut) { +		_audioOut->Reset(); +		delete _audioOut; +	} +} + +void AudioThread::OnAudioOutErrorOccurred(Osp::Media::AudioOut &src, result r) { +	logEntered(); +} + +void AudioThread::OnAudioOutInterrupted(Osp::Media::AudioOut &src) { +	logEntered(); +} + +void AudioThread::OnAudioOutReleased(Osp::Media::AudioOut &src) { +	logEntered(); +	_audioOut->Start(); +} + +void AudioThread::OnAudioOutBufferEndReached(Osp::Media::AudioOut &src) { +	if (_ready > 0) { +		_playing = _tail; +		_audioOut->WriteBuffer(_audioBuffer[_tail]); +		_tail = (_tail + 1) % NUM_AUDIO_BUFFERS; +		_ready--; +	} else { +		// audio buffer empty: decrease timer inverval +		_playing = -1; +		_interval -= TIMER_INCREMENT; +		if (_interval < MIN_TIMER_INTERVAL) { +			_interval = MIN_TIMER_INTERVAL; +		} +	} +} + +void AudioThread::OnTimerExpired(Timer &timer) { +	if (_ready < NUM_AUDIO_BUFFERS) { +		uint len = _audioBuffer[_head].GetCapacity(); +		int samples = _mixer->mixCallback((byte*)_audioBuffer[_head].GetPointer(), len); +		if (samples) { +			_head = (_head + 1) % NUM_AUDIO_BUFFERS; +			_ready++; +		} +	} else { +		// audio buffer full: increase timer inverval +		_interval += TIMER_INCREMENT; +		if (_interval > MAX_TIMER_INTERVAL) { +			_interval = MAX_TIMER_INTERVAL; +		} +	} + +	if (_ready && _playing == -1) { +		OnAudioOutBufferEndReached(*_audioOut); +	} + +	_timer->Start(_interval); +} + diff --git a/backends/platform/bada/audio.h b/backends/platform/bada/audio.h new file mode 100644 index 0000000000..72c537a942 --- /dev/null +++ b/backends/platform/bada/audio.h @@ -0,0 +1,73 @@ +/* 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. + * + */ + +#ifndef BADA_AUDIO_H +#define BADA_AUDIO_H + +#include <FBase.h> +#include <FMedia.h> +#include <FIo.h> +#include <FBaseByteBuffer.h> + +#include "config.h" +#include "common/scummsys.h" +#include "common/system.h" +#include "audio/mixer_intern.h" + +using namespace Osp::Base; +using namespace Osp::Base::Collection; +using namespace Osp::Base::Runtime; +using namespace Osp::Media; +using namespace Osp::Io; + +#define NUM_AUDIO_BUFFERS 2 + +class AudioThread: public Osp::Media::IAudioOutEventListener, +									 public Osp::Base::Runtime::ITimerEventListener, +									 public Osp::Base::Runtime::Thread { +public: +	AudioThread(void); +	~AudioThread(void); + +	Audio::MixerImpl *Construct(OSystem *system); +	bool isSilentMode(); +	void setMute(bool on); +	int setVolume(bool up, bool minMax); + +	bool OnStart(void); +	void OnStop(void); +	void OnAudioOutErrorOccurred(Osp::Media::AudioOut &src, result r); +	void OnAudioOutInterrupted(Osp::Media::AudioOut &src); +	void OnAudioOutReleased(Osp::Media::AudioOut &src); +	void OnAudioOutBufferEndReached(Osp::Media::AudioOut &src); +	void OnTimerExpired(Timer &timer); + +private: +	Audio::MixerImpl *_mixer; +	Osp::Base::Runtime::Timer *_timer; +	Osp::Media::AudioOut *_audioOut; +	Osp::Base::ByteBuffer _audioBuffer[NUM_AUDIO_BUFFERS]; +	int _head, _tail, _ready, _interval, _playing; +	bool _muted; +}; + +#endif diff --git a/backends/platform/bada/bada.mk b/backends/platform/bada/bada.mk new file mode 100644 index 0000000000..7c72d7752b --- /dev/null +++ b/backends/platform/bada/bada.mk @@ -0,0 +1,5 @@ +# Bada specific modules are built under eclipse + +$(EXECUTABLE): $(OBJS) +	rm -f $@ +	ar Tru $@ $(OBJS) diff --git a/backends/platform/bada/form.cpp b/backends/platform/bada/form.cpp new file mode 100644 index 0000000000..6163053c96 --- /dev/null +++ b/backends/platform/bada/form.cpp @@ -0,0 +1,464 @@ +/* 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. + * + */ + +#include <FAppApplication.h> + +#include "common/translation.h" +#include "base/main.h" + +#include "backends/platform/bada/form.h" +#include "backends/platform/bada/system.h" + +using namespace Osp::Base::Runtime; +using namespace Osp::Ui; +using namespace Osp::Ui::Controls; + +// number of volume levels +#define LEVEL_RANGE 5 + +// round down small Y touch values to 1 to allow the +// cursor to be positioned at the top of the screen +#define MIN_TOUCH_Y 10 + +// block for up to 2.5 seconds during shutdown to +// allow the game thread to exit gracefully. +#define EXIT_SLEEP_STEP 10 +#define EXIT_SLEEP 250 + +// +// BadaAppForm +// +BadaAppForm::BadaAppForm() : +	_gameThread(0), +	_state(InitState), +	_buttonState(LeftButton), +	_shortcut(SetVolume) { +	_eventQueueLock = new Mutex(); +	_eventQueueLock->Create(); +} + +result BadaAppForm::Construct() { +	result r = Form::Construct(Controls::FORM_STYLE_NORMAL); +	if (IsFailed(r)) { +		return r; +	} + +	BadaSystem *badaSystem = NULL; +	_gameThread = NULL; + +	badaSystem = new BadaSystem(this); +	r = badaSystem != NULL ? E_SUCCESS : E_OUT_OF_MEMORY; + +	if (!IsFailed(r)) { +		r = badaSystem->Construct(); +	} + +	if (!IsFailed(r)) { +		_gameThread = new Thread(); +		r = _gameThread != NULL ? E_SUCCESS : E_OUT_OF_MEMORY; +	} + +	if (!IsFailed(r)) { +		r = _gameThread->Construct(*this); +	} + +	if (IsFailed(r)) { +		if (badaSystem != NULL) { +			delete badaSystem; +		} +		if (_gameThread != NULL) { +			delete _gameThread; +			_gameThread = NULL; +		} +	} else { +		g_system = badaSystem; +	} + +	return r; +} + +BadaAppForm::~BadaAppForm() { +	logEntered(); + +	if (_gameThread && _state != ErrorState) { +		terminate(); + +		_gameThread->Stop(); +		if (_state != ErrorState) { +			_gameThread->Join(); +		} + +		delete _gameThread; +		_gameThread = NULL; +	} + +	if (_eventQueueLock) { +		delete _eventQueueLock; +		_eventQueueLock = NULL; +	} + +	logLeaving(); +} + +// +// abort the game thread +// +void BadaAppForm::terminate() { +	if (_state == ActiveState) { +		((BadaSystem *)g_system)->setMute(true); + +		_eventQueueLock->Acquire(); + +		Common::Event e; +		e.type = Common::EVENT_QUIT; +		_eventQueue.push(e); +		_state = ClosingState; + +		_eventQueueLock->Release(); + +		// block while thread ends +		AppLog("waiting for shutdown"); +		for (int i = 0; i < EXIT_SLEEP_STEP && _state == ClosingState; i++) { +			Thread::Sleep(EXIT_SLEEP); +		} + +		if (_state == ClosingState) { +			// failed to terminate - Join() will freeze +			_state = ErrorState; +		} +	} +} + +void BadaAppForm::exitSystem() { +	_state = ErrorState; + +	if (_gameThread) { +		_gameThread->Stop(); +		delete _gameThread; +		_gameThread = NULL; +	} +} + +result BadaAppForm::OnInitializing(void) { +	logEntered(); + +	SetOrientation(ORIENTATION_LANDSCAPE); +	AddOrientationEventListener(*this); +	AddTouchEventListener(*this); +	AddKeyEventListener(*this); + +	// set focus to enable receiving key events +	SetFocusable(true); +	SetFocus(); + +	return E_SUCCESS; +} + +result BadaAppForm::OnDraw(void) { +	logEntered(); + +	if (g_system) { +		BadaSystem *system = (BadaSystem *)g_system; +		BadaGraphicsManager *graphics = system->getGraphics(); +		if (graphics && graphics->isReady()) { +			g_system->updateScreen(); +		} +	} + +	return E_SUCCESS; +} + +bool BadaAppForm::pollEvent(Common::Event &event) { +	bool result = false; + +	_eventQueueLock->Acquire(); +	if (!_eventQueue.empty()) { +		event = _eventQueue.pop(); +		result = true; +	} +	_eventQueueLock->Release(); + +	return result; +} + +void BadaAppForm::pushEvent(Common::EventType type, +														const Point ¤tPosition) { +	BadaSystem *system = (BadaSystem *)g_system; +	BadaGraphicsManager *graphics = system->getGraphics(); +	if (graphics) { +		// graphics could be NULL at startup or when +		// displaying the system error screen +		Common::Event e; +		e.type = type; +		e.mouse.x = currentPosition.x; +		e.mouse.y = currentPosition.y > MIN_TOUCH_Y ? currentPosition.y : 1; + +		bool moved = graphics->moveMouse(e.mouse.x, e.mouse.y); + +		_eventQueueLock->Acquire(); + +		if (moved && type != Common::EVENT_MOUSEMOVE) { +			Common::Event moveEvent; +			moveEvent.type = Common::EVENT_MOUSEMOVE; +			moveEvent.mouse = e.mouse; +			_eventQueue.push(moveEvent); +		} + +		_eventQueue.push(e); +		_eventQueueLock->Release(); +	} +} + +void BadaAppForm::pushKey(Common::KeyCode keycode) { +	Common::Event e; +	e.synthetic = false; +	e.kbd.keycode = keycode; +	e.kbd.ascii = keycode; +	e.kbd.flags = 0; + +	_eventQueueLock->Acquire(); + +	e.type = Common::EVENT_KEYDOWN; +	_eventQueue.push(e); +	e.type = Common::EVENT_KEYUP; +	_eventQueue.push(e); + +	_eventQueueLock->Release(); +} + +void BadaAppForm::OnOrientationChanged(const Control &source, +																			 OrientationStatus orientationStatus) { +	logEntered(); +	if (_state == InitState) { +		_state = ActiveState; +		_gameThread->Start(); +	} +} + +Object *BadaAppForm::Run(void) { +	scummvm_main(0, 0); + +	if (_state == ActiveState) { +		Application::GetInstance()->SendUserEvent(USER_MESSAGE_EXIT, NULL); +	} +	_state = DoneState; +	return NULL; +} + +void BadaAppForm::setButtonShortcut() { +	switch (_buttonState) { +	case LeftButton: +		g_system->displayMessageOnOSD(_("Right Click Once")); +		_buttonState = RightButtonOnce; +		break; +	case RightButtonOnce: +		g_system->displayMessageOnOSD(_("Right Click")); +		_buttonState = RightButton; +		break; +	case RightButton: +		g_system->displayMessageOnOSD(_("Move Only")); +		_buttonState = MoveOnly; +		break; +	case MoveOnly: +		g_system->displayMessageOnOSD(_("Left Click")); +		_buttonState = LeftButton; +		break; +	} +} + +void BadaAppForm::setShortcut() { +	// cycle to the next shortcut +	switch (_shortcut) { +	case ControlMouse: +		g_system->displayMessageOnOSD(_("Escape Key")); +		_shortcut = EscapeKey; +		break; + +	case EscapeKey: +		g_system->displayMessageOnOSD(_("Game Menu")); +		_shortcut = GameMenu; +		break; + +	case GameMenu: +		g_system->displayMessageOnOSD(_("Show Keypad")); +		_shortcut = ShowKeypad; +		break; + +	case SetVolume: +		// fallthru + +	case ShowKeypad: +		g_system->displayMessageOnOSD(_("Control Mouse")); +		_shortcut = ControlMouse; +		break; +	} +} + +void BadaAppForm::setVolume(bool up, bool minMax) { +	int level = ((BadaSystem *)g_system)->setVolume(up, minMax); +	if (level != -1) { +		char message[32]; +		char ind[LEVEL_RANGE]; // 1..5 (0=off) +		int j = LEVEL_RANGE - 1; // 0..4 +		for (int i = 1; i <= LEVEL_RANGE; i++) { +			ind[j--] = level >= i ? '|' : ' '; +		} +		snprintf(message, sizeof(message), "Volume: [ %c%c%c%c%c ]", +						 ind[0], ind[1], ind[2], ind[3], ind[4]); +		g_system->displayMessageOnOSD(message); +	} +} + +void BadaAppForm::showKeypad() { +	// display the soft keyboard +	_buttonState = LeftButton; +	pushKey(Common::KEYCODE_F7); +} + +void BadaAppForm::OnTouchDoublePressed(const Control &source, +																			 const Point ¤tPosition, +																			 const TouchEventInfo &touchInfo) { +	if (_buttonState != MoveOnly) { +		pushEvent(_buttonState == LeftButton ? Common::EVENT_LBUTTONDOWN : Common::EVENT_RBUTTONDOWN, +							currentPosition); +		pushEvent(_buttonState == LeftButton ? Common::EVENT_LBUTTONDOWN : Common::EVENT_RBUTTONDOWN, +							currentPosition); +	} +} + +void BadaAppForm::OnTouchFocusIn(const Control &source, +																 const Point ¤tPosition, +																 const TouchEventInfo &touchInfo) { +} + +void BadaAppForm::OnTouchFocusOut(const Control &source, +																	const Point ¤tPosition, +																	const TouchEventInfo &touchInfo) { +} + +void BadaAppForm::OnTouchLongPressed(const Control &source, +																		 const Point ¤tPosition, +																		 const TouchEventInfo &touchInfo) { +	if (_buttonState != LeftButton) { +		pushKey(Common::KEYCODE_RETURN); +	} +} + +void BadaAppForm::OnTouchMoved(const Control &source, +															 const Point ¤tPosition, +															 const TouchEventInfo &touchInfo) { +	pushEvent(Common::EVENT_MOUSEMOVE, currentPosition); +} + +void BadaAppForm::OnTouchPressed(const Control &source, +																 const Point ¤tPosition, +																 const TouchEventInfo &touchInfo) { +	if (_buttonState != MoveOnly) { +		pushEvent(_buttonState == LeftButton ? Common::EVENT_LBUTTONDOWN : Common::EVENT_RBUTTONDOWN, +							currentPosition); +	} +} + +void BadaAppForm::OnTouchReleased(const Control &source, +																	const Point ¤tPosition, +																	const TouchEventInfo &touchInfo) { +	if (_buttonState != MoveOnly) { +		pushEvent(_buttonState == LeftButton ? Common::EVENT_LBUTTONUP : Common::EVENT_RBUTTONUP, +							currentPosition); +		if (_buttonState == RightButtonOnce) { +			_buttonState = LeftButton; +		} +		// flick to skip dialog +		if (touchInfo.IsFlicked()) { +			pushKey(Common::KEYCODE_PERIOD); +		} +	} +} + +void BadaAppForm::OnKeyLongPressed(const Control &source, KeyCode keyCode) { +	logEntered(); +	switch (keyCode) { +	case KEY_SIDE_UP: +		_shortcut = SetVolume; +		setVolume(true, true); +		return; + +	case KEY_SIDE_DOWN: +		_shortcut = SetVolume; +		setVolume(false, true); +		return; + +	case KEY_CAMERA: +		_shortcut = ShowKeypad; +		showKeypad(); +		return; + +	default: +		break; +	} +} + +void BadaAppForm::OnKeyPressed(const Control &source, KeyCode keyCode) { +	switch (keyCode) { +	case KEY_SIDE_UP: +		if (_shortcut != SetVolume) { +			_shortcut = SetVolume; +		} else { +			setVolume(true, false); +		} +		return; + +	case KEY_SIDE_DOWN: +		switch (_shortcut) { +		case ControlMouse: +			setButtonShortcut(); +			break; + +		case EscapeKey: +			pushKey(Common::KEYCODE_ESCAPE); +			break; + +		case GameMenu: +			pushKey(Common::KEYCODE_F5); +			break; + +		case ShowKeypad: +			showKeypad(); +			break; + +		default: +			setVolume(false, false); +			break; +		} +		break; + +	case KEY_CAMERA: +		setShortcut(); +		break; + +	default: +		break; +	} +} + +void BadaAppForm::OnKeyReleased(const Control &source, KeyCode keyCode) { +} diff --git a/backends/platform/bada/form.h b/backends/platform/bada/form.h new file mode 100644 index 0000000000..09ce941a7b --- /dev/null +++ b/backends/platform/bada/form.h @@ -0,0 +1,108 @@ +/* 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. + * + */ + +#ifndef BADA_FORM_H +#define BADA_FORM_H + +#include <FApp.h> +#include <FUi.h> +#include <FSystem.h> +#include <FBase.h> +#include <FUiITouchEventListener.h> +#include <FUiITextEventListener.h> + +#include "config.h" +#include "common/scummsys.h" +#include "common/events.h" +#include "common/queue.h" +#include "common/mutex.h" + +// +// BadaAppForm +// +class BadaAppForm : public Osp::Ui::Controls::Form, +										public Osp::Ui::IOrientationEventListener, +										public Osp::Ui::ITouchEventListener, +										public Osp::Ui::IKeyEventListener, +										public Osp::Base::Runtime::IRunnable { +public: +	BadaAppForm(); +	~BadaAppForm(); + +	result Construct(); +	bool pollEvent(Common::Event &event); +	bool isClosing() { return _state == ClosingState; } +	void pushKey(Common::KeyCode keycode); +	void exitSystem(); + +private: +	Object *Run(); +	result OnInitializing(void); +	result OnDraw(void); +	void OnOrientationChanged(const Osp::Ui::Control &source, +														Osp::Ui::OrientationStatus orientationStatus); +	void OnTouchDoublePressed(const Osp::Ui::Control &source, +														const Osp::Graphics::Point ¤tPosition, +														const Osp::Ui::TouchEventInfo &touchInfo); +	void OnTouchFocusIn(const Osp::Ui::Control &source, +											const Osp::Graphics::Point ¤tPosition, +											const Osp::Ui::TouchEventInfo &touchInfo); +	void OnTouchFocusOut(const Osp::Ui::Control &source, +											 const Osp::Graphics::Point ¤tPosition, +											 const Osp::Ui::TouchEventInfo &touchInfo); +	void OnTouchLongPressed(const Osp::Ui::Control &source, +													const Osp::Graphics::Point ¤tPosition, +													const Osp::Ui::TouchEventInfo &touchInfo); +	void OnTouchMoved(const Osp::Ui::Control &source, +										const Osp::Graphics::Point ¤tPosition, +										const Osp::Ui::TouchEventInfo &touchInfo); +	void OnTouchPressed(const Osp::Ui::Control &source, +											const Osp::Graphics::Point ¤tPosition, +											const Osp::Ui::TouchEventInfo &touchInfo); +	void OnTouchReleased(const Osp::Ui::Control &source, +											 const Osp::Graphics::Point ¤tPosition, +											 const Osp::Ui::TouchEventInfo &touchInfo); +	void OnKeyLongPressed(const Osp::Ui::Control &source, +												Osp::Ui::KeyCode keyCode); +	void OnKeyPressed(const Osp::Ui::Control &source, +										Osp::Ui::KeyCode keyCode); +	void OnKeyReleased(const Osp::Ui::Control &source, +										 Osp::Ui::KeyCode keyCode); + +	void pushEvent(Common::EventType type, +								 const Osp::Graphics::Point ¤tPosition); +	void terminate(); +	void setButtonShortcut(); +	void setShortcut(); +	void setVolume(bool up, bool minMax); +	void showKeypad(); + +	// event handling +	Osp::Base::Runtime::Thread *_gameThread; +	Osp::Base::Runtime::Mutex *_eventQueueLock; +	Common::Queue<Common::Event> _eventQueue; +	enum {InitState, ActiveState, ClosingState, DoneState, ErrorState} _state; +	enum {LeftButton, RightButtonOnce, RightButton, MoveOnly} _buttonState; +	enum {ControlMouse, EscapeKey, GameMenu, ShowKeypad, SetVolume} _shortcut; +}; + +#endif diff --git a/backends/platform/bada/fs.cpp b/backends/platform/bada/fs.cpp new file mode 100644 index 0000000000..8e3c4f0f7c --- /dev/null +++ b/backends/platform/bada/fs.cpp @@ -0,0 +1,436 @@ +/* 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. + */ + +#include "config.h" +#include "backends/platform/bada/system.h" +#include "backends/platform/bada/fs.h" + +#define BUFFER_SIZE 1024 + +// internal BADA paths +#define PATH_ROOT        "/" +#define PATH_HOME        "/Home" +#define PATH_HOME_SHARE  "/Home/Share" +#define PATH_HOME_SHARE2 "/Home/Share2" +#define PATH_HOME_X      "/Home/" +#define PATH_HOME_EXT    "/HomeExt" +#define PATH_MEDIA       "/Media" +#define PATH_CARD        "/Storagecard" +#define PATH_CARD_MEDIA  "/Storagecard/Media" + +// +// BadaFileStream +// +class BadaFileStream : public Common::SeekableReadStream, +											 public Common::WriteStream, +											 public Common::NonCopyable { +public: +	static BadaFileStream *makeFromPath(const String &path, bool writeMode); + +	BadaFileStream(File *file, bool writeMode); +	~BadaFileStream(); + +	bool err() const; +	void clearErr(); +	bool eos() const; + +	uint32 write(const void *dataPtr, uint32 dataSize); +	bool flush(); + +	int32 pos() const; +	int32 size() const; +	bool seek(int32 offs, int whence = SEEK_SET); +	uint32 read(void *dataPtr, uint32 dataSize); + +private: +	byte buffer[BUFFER_SIZE]; +	uint32 bufferIndex; +	uint32 bufferLength; +	bool writeMode; +	File *file; +}; + +BadaFileStream::BadaFileStream(File *ioFile, bool writeMode) : +	bufferIndex(0), +	bufferLength(0), +	writeMode(writeMode), +	file(ioFile) { +	AppAssert(ioFile != 0); +} + +BadaFileStream::~BadaFileStream() { +	if (file) { +		if (writeMode) { +			flush(); +		} +		delete file; +	} +} + +bool BadaFileStream::err() const { +	result r = GetLastResult(); +	return (r != E_SUCCESS && r != E_END_OF_FILE); +} + +void BadaFileStream::clearErr() { +	SetLastResult(E_SUCCESS); +} + +bool BadaFileStream::eos() const { +	return (bufferLength - bufferIndex == 0) && (GetLastResult() == E_END_OF_FILE); +} + +int32 BadaFileStream::pos() const { +	return file->Tell() - (bufferLength - bufferIndex); +} + +int32 BadaFileStream::size() const { +	int32 oldPos = file->Tell(); +	file->Seek(FILESEEKPOSITION_END, 0); + +	int32 length = file->Tell(); +	SetLastResult(file->Seek(FILESEEKPOSITION_BEGIN, oldPos)); + +	return length; +} + +bool BadaFileStream::seek(int32 offs, int whence) { +	bool result = false; +	switch (whence) { +	case SEEK_SET: +		// set from start of file +		SetLastResult(file->Seek(FILESEEKPOSITION_BEGIN, offs)); +		result = (E_SUCCESS == GetLastResult()); +		break; + +	case SEEK_CUR: +		// set relative to offs +		if (bufferIndex < bufferLength && bufferIndex > (uint32)-offs) { +			// re-position within the buffer +			SetLastResult(E_SUCCESS); +			bufferIndex += offs; +			return true; +		} else { +			offs -= (bufferLength - bufferIndex); +			if (offs < 0 && file->Tell() + offs < 0) { +				// avoid negative positioning +				offs = 0; +			} +			if (offs != 0) { +				SetLastResult(file->Seek(FILESEEKPOSITION_CURRENT, offs)); +				result = (E_SUCCESS == GetLastResult()); +			} else { +				result = true; +			} +		} +		break; + +	case SEEK_END: +		// set relative to end - positive will increase the file size +		SetLastResult(file->Seek(FILESEEKPOSITION_END, offs)); +		result = (E_SUCCESS == GetLastResult()); +		break; + +	default: +		AppLog("Invalid whence %d", whence); +		return false; +	} + +	if (!result) { +		AppLog("seek failed"); +	} + +	bufferIndex = bufferLength = 0; +	return result; +} + +uint32 BadaFileStream::read(void *ptr, uint32 len) { +	uint32 result = 0; +	if (!eos()) { +		if (bufferIndex < bufferLength) { +			// use existing buffer +			uint32 available = bufferLength - bufferIndex; +			if (len <= available) { +				// use allocation +				memcpy((byte*)ptr, &buffer[bufferIndex], len); +				bufferIndex += len; +				result = len; +			} else { +				// use remaining allocation +				memcpy((byte*)ptr, &buffer[bufferIndex], available); +				uint32 remaining = len - available; +				result = available; + +				if (remaining) { +					result += file->Read(((byte*)ptr) + available, remaining); +				} +				bufferIndex = bufferLength = 0; +			} +		} else if (len < BUFFER_SIZE) { +			// allocate and use buffer +			bufferIndex = 0; +			bufferLength = file->Read(buffer, BUFFER_SIZE); +			if (bufferLength) { +				if (bufferLength < len) { +					len = bufferLength; +				} +				memcpy((byte*)ptr, buffer, len); +				result = bufferIndex = len; +			} +		} else { +			result = file->Read((byte*)ptr, len); +			bufferIndex = bufferLength = 0; +		} +	} else { +		AppLog("Attempted to read past EOS"); +	} +	return result; +} + +uint32 BadaFileStream::write(const void *ptr, uint32 len) { +	result r = file->Write(ptr, len); +	SetLastResult(r); +	return (r == E_SUCCESS ? len : 0); +} + +bool BadaFileStream::flush() { +	logEntered(); +	SetLastResult(file->Flush()); +	return (E_SUCCESS == GetLastResult()); +} + +BadaFileStream *BadaFileStream::makeFromPath(const String &path, bool writeMode) { +	File *ioFile = new File(); + +	String filePath = path; +	if (writeMode && (path[0] != '.' && path[0] != '/')) { +		filePath.Insert(PATH_HOME_X, 0); +	} + +	AppLog("Open file %S", filePath.GetPointer()); + +	result r = ioFile->Construct(filePath, writeMode ? L"w" : L"r", writeMode); +	if (r == E_SUCCESS) { +		return new BadaFileStream(ioFile, writeMode); +	} + +	AppLog("Failed to open file"); +	delete ioFile; +	return 0; +} + +// +// converts a bada (wchar) String into a scummVM (char) string +// +Common::String fromString(const Osp::Base::String &in) { +	ByteBuffer *buf = StringUtil::StringToUtf8N(in); +	Common::String result((const char*)buf->GetPointer()); +	delete buf; + +	return result; +} + +// +// BadaFilesystemNode +// +BadaFilesystemNode::BadaFilesystemNode(const Common::String &nodePath) { +	AppAssert(nodePath.size() > 0); +	init(nodePath); +} + +BadaFilesystemNode::BadaFilesystemNode(const Common::String &root, +																			 const Common::String &nodePath) { +	// Make sure the string contains no slashes +	AppAssert(!nodePath.contains('/')); + +	// We assume here that path is already normalized (hence don't bother to +	// call Common::normalizePath on the final path). +	Common::String newPath(root); +	if (root.lastChar() != '/') { +		newPath += '/'; +	} +	newPath += nodePath; + +	init(newPath); +} + +void BadaFilesystemNode::init(const Common::String &nodePath) { +	// Normalize the path (that is, remove unneeded slashes etc.) +	_path = Common::normalizePath(nodePath, '/'); +	_displayName = Common::lastPathComponent(_path, '/'); + +	StringUtil::Utf8ToString(_path.c_str(), _unicodePath); +	_isVirtualDir = (_path == PATH_ROOT || +									 _path == PATH_HOME || +									 _path == PATH_HOME_SHARE || +									 _path == PATH_HOME_SHARE2 || +									 _path == PATH_CARD); +	_isValid = _isVirtualDir || !IsFailed(File::GetAttributes(_unicodePath, _attr)); +} + +bool BadaFilesystemNode::exists() const { +	return _isValid; +} + +bool BadaFilesystemNode::isReadable() const { +	return _isVirtualDir || _isValid; +} + +bool BadaFilesystemNode::isDirectory() const { +	return _isVirtualDir || (_isValid && _attr.IsDirectory()); +} + +bool BadaFilesystemNode::isWritable() const { +	bool result = (_isValid && !_isVirtualDir && !_attr.IsDirectory() && !_attr.IsReadOnly()); +	if (_path == PATH_HOME || +			_path == PATH_HOME_EXT || +			_path == PATH_HOME_SHARE || +			_path == PATH_HOME_SHARE2) { +		result = true; +	} +	return result; +} + +AbstractFSNode *BadaFilesystemNode::getChild(const Common::String &n) const { +	AppAssert(!_path.empty()); +	AppAssert(isDirectory()); +	return new BadaFilesystemNode(_path, n); +} + +bool BadaFilesystemNode::getChildren(AbstractFSList &myList, +																		 ListMode mode, bool hidden) const { +	AppAssert(isDirectory()); + +	bool result = false; + +	if (_isVirtualDir && mode != Common::FSNode::kListFilesOnly) { +		// present well known BADA file system areas +		if (_path == PATH_ROOT) { +			myList.push_back(new BadaFilesystemNode(PATH_HOME)); +			myList.push_back(new BadaFilesystemNode(PATH_HOME_EXT)); +			myList.push_back(new BadaFilesystemNode(PATH_MEDIA)); +			myList.push_back(new BadaFilesystemNode(PATH_CARD)); +			result = true; // no more entries +		} else if (_path == PATH_CARD) { +			myList.push_back(new BadaFilesystemNode(PATH_CARD_MEDIA)); +			result = true; // no more entries +		} else if (_path == PATH_HOME) { +			// ensure share path is always included +			myList.push_back(new BadaFilesystemNode(PATH_HOME_SHARE)); +			myList.push_back(new BadaFilesystemNode(PATH_HOME_SHARE2)); +		} +	} + +	if (!result) { +		DirEnumerator *pDirEnum = 0; +		Directory *pDir = new Directory(); + +		// open directory +		if (IsFailed(pDir->Construct(_unicodePath))) { +			AppLog("Failed to open directory"); +		} else { +			// read all directory entries +			pDirEnum = pDir->ReadN(); +			if (pDirEnum) { +				result = true; +			} + +			// loop through all directory entries +			while (pDirEnum && pDirEnum->MoveNext() == E_SUCCESS) { +				DirEntry dirEntry = pDirEnum->GetCurrentDirEntry(); + +				// skip 'invisible' files if necessary +				Osp::Base::String fileName = dirEntry.GetName(); + +				if (fileName[0] == '.' && !hidden) { +					continue; +				} + +				// skip '.' and '..' to avoid cycles +				if ((fileName[0] == '.' && fileName[1] == 0) || +						(fileName[0] == '.' && fileName[1] == '.')) { +					continue; +				} + +				// Honor the chosen mode +				if ((mode == Common::FSNode::kListFilesOnly && dirEntry.IsDirectory()) || +						(mode == Common::FSNode::kListDirectoriesOnly && !dirEntry.IsDirectory())) { +					continue; +				} +				myList.push_back(new BadaFilesystemNode(_path, fromString(fileName))); +			} +		} + +		// cleanup +		if (pDirEnum) { +			delete pDirEnum; +		} + +		// close the opened directory +		if (pDir) { +			delete pDir; +		} +	} + +	return result; +} + +AbstractFSNode *BadaFilesystemNode::getParent() const { +	logEntered(); +	if (_path == PATH_ROOT) { +		return 0; // The filesystem root has no parent +	} + +	const char *start = _path.c_str(); +	const char *end = start + _path.size(); + +	// Strip of the last component. We make use of the fact that at this +	// point, path is guaranteed to be normalized +	while (end > start && *(end-1) != '/') { +		end--; +	} + +	if (end == start) { +		// This only happens if we were called with a relative path, for which +		// there simply is no parent. +		// TODO: We could also resolve this by assuming that the parent is the +		//			 current working directory, and returning a node referring to that. +		return 0; +	} + +	return new BadaFilesystemNode(Common::String(start, end)); +} + +Common::SeekableReadStream *BadaFilesystemNode::createReadStream() { +	Common::SeekableReadStream *result = BadaFileStream::makeFromPath(_unicodePath, false); +	if (result != NULL) { +		_isValid = !IsFailed(File::GetAttributes(_unicodePath, _attr)); +	} +	return result; +} + +Common::WriteStream *BadaFilesystemNode::createWriteStream() { +	Common::WriteStream *result = BadaFileStream::makeFromPath(_unicodePath, true); +	if (result != NULL) { +		_isValid = !IsFailed(File::GetAttributes(_unicodePath, _attr)); +	} +	return result; +} diff --git a/backends/platform/bada/fs.h b/backends/platform/bada/fs.h new file mode 100644 index 0000000000..d7d368ac20 --- /dev/null +++ b/backends/platform/bada/fs.h @@ -0,0 +1,82 @@ +/* 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. + */ + +#ifndef BADA_FILESYSTEM_H +#define BADA_FILESYSTEM_H + +#include <FBaseString.h> +#include <FBaseUtilStringUtil.h> +#include <FIoDirectory.h> +#include <FIoFile.h> + +#include "config.h" +#include "common/scummsys.h" +#include "common/stream.h" +#include "backends/fs/abstract-fs.h" + +using namespace Osp::Io; +using namespace Osp::Base; +using namespace Osp::Base::Utility; + +/** + * Implementation of the ScummVM file system API based on BADA. + * + * Parts of this class are documented in the base interface class, AbstractFSNode. + */ +class BadaFilesystemNode : public AbstractFSNode { +public: +	/** +	 * Creates a BadaFilesystemNode for a given path. +	 * +	 * @param path the path the new node should point to. +	 */ +	BadaFilesystemNode(const Common::String &path); + +	Common::String getDisplayName() const { return _displayName; } +	Common::String getName() const { return _displayName; } +	Common::String getPath() const { return _path; } + +	bool exists() const; +	bool isDirectory() const; +	bool isReadable() const; +	bool isWritable() const; + +	AbstractFSNode *getChild(const Common::String &n) const; +	bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const; +	AbstractFSNode *getParent() const; + +	Common::SeekableReadStream *createReadStream(); +	Common::WriteStream *createWriteStream(); + +protected: +	BadaFilesystemNode(const Common::String &root, +										 const Common::String &p); +	void init(const Common::String &nodePath); + +	Common::String _displayName; +	Common::String _path; +	String _unicodePath; +	bool _isValid; +	bool _isVirtualDir; +	FileAttributes _attr; +}; + +#endif diff --git a/backends/platform/bada/graphics.cpp b/backends/platform/bada/graphics.cpp new file mode 100644 index 0000000000..4ab90a633f --- /dev/null +++ b/backends/platform/bada/graphics.cpp @@ -0,0 +1,315 @@ +/* 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. + * + */ + +#include "graphics/fontman.h" + +#include "backends/platform/bada/form.h" +#include "backends/platform/bada/system.h" +#include "backends/platform/bada/graphics.h" + +// +// BadaGraphicsManager +// +BadaGraphicsManager::BadaGraphicsManager(BadaAppForm *appForm) : +	_appForm(appForm), +	_eglDisplay(EGL_DEFAULT_DISPLAY), +	_eglSurface(EGL_NO_SURFACE), +	_eglConfig(0), +	_eglContext(EGL_NO_CONTEXT), +	_initState(true) { +	assert(appForm != NULL); +	_videoMode.fullscreen = true; +	_videoMode.antialiasing = true; +} + +const Graphics::Font *BadaGraphicsManager::getFontOSD() { +	return FontMan.getFontByUsage(Graphics::FontManager::kBigGUIFont); +} + +bool BadaGraphicsManager::moveMouse(int16 &x, int16 &y) { +	int16 currentX = _cursorState.x; +	int16 currentY = _cursorState.y; + +	// save the current hardware coordinates +	_cursorState.x = x; +	_cursorState.y = y; + +	// return x/y as game coordinates +	adjustMousePosition(x, y); + +	// convert current x/y to game coordinates +	adjustMousePosition(currentX, currentY); + +	// return whether game coordinates have changed +	return (currentX != x || currentY != y); +} + +Common::List<Graphics::PixelFormat> BadaGraphicsManager::getSupportedFormats() const { +	logEntered(); + +	Common::List<Graphics::PixelFormat> res; +	res.push_back(Graphics::PixelFormat(2, 4, 4, 4, 4, 12, 8, 4, 0)); +	res.push_back(Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); +	res.push_back(Graphics::PixelFormat(2, 5, 5, 5, 1, 11, 6, 1, 0)); +	res.push_back(Graphics::PixelFormat::createFormatCLUT8()); +	return res; +} + +bool BadaGraphicsManager::hasFeature(OSystem::Feature f) { +	bool result = (f == OSystem::kFeatureFullscreenMode || +								 f == OSystem::kFeatureVirtualKeyboard || +								 OpenGLGraphicsManager::hasFeature(f)); +	return result; +} + +void BadaGraphicsManager::setFeatureState(OSystem::Feature f, bool enable) { +	OpenGLGraphicsManager::setFeatureState(f, enable); +} + +void BadaGraphicsManager::setReady() { +	_initState = false; +} + +void BadaGraphicsManager::updateScreen() { +	if (_transactionMode == kTransactionNone) { +		internUpdateScreen(); +	} +} + +bool BadaGraphicsManager::loadEgl() { +	logEntered(); + +	EGLint numConfigs = 1; +	EGLint eglConfigList[] = { +		EGL_RED_SIZE,		5, +		EGL_GREEN_SIZE, 6, +		EGL_BLUE_SIZE,	5, +		EGL_ALPHA_SIZE, 0, +		EGL_DEPTH_SIZE, 8, +		EGL_SURFACE_TYPE, EGL_WINDOW_BIT, +		EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT, +		EGL_NONE +	}; + +	EGLint eglContextList[] = { +		EGL_CONTEXT_CLIENT_VERSION, 1, +		EGL_NONE +	}; + +	eglBindAPI(EGL_OPENGL_ES_API); + +	if (_eglDisplay) { +		unloadGFXMode(); +	} + +	_eglDisplay = eglGetDisplay((EGLNativeDisplayType) EGL_DEFAULT_DISPLAY); +	if (EGL_NO_DISPLAY == _eglDisplay) { +		systemError("eglGetDisplay() failed"); +		return false; +	} + +	if (EGL_FALSE == eglInitialize(_eglDisplay, NULL, NULL) || +			EGL_SUCCESS != eglGetError()) { +		systemError("eglInitialize() failed"); +		return false; +	} + +	if (EGL_FALSE == eglChooseConfig(_eglDisplay, eglConfigList, +																	 &_eglConfig, 1, &numConfigs) || +			EGL_SUCCESS != eglGetError()) { +		systemError("eglChooseConfig() failed"); +		return false; +	} + +	if (!numConfigs) { +		systemError("eglChooseConfig() failed. Matching config does not exist \n"); +		return false; +	} + +	_eglSurface = eglCreateWindowSurface(_eglDisplay, _eglConfig, +																			(EGLNativeWindowType)_appForm, NULL); +	if (EGL_NO_SURFACE == _eglSurface || EGL_SUCCESS != eglGetError()) { +		systemError("eglCreateWindowSurface() failed. EGL_NO_SURFACE"); +		return false; +	} + +	_eglContext = eglCreateContext(_eglDisplay, _eglConfig, +																EGL_NO_CONTEXT, eglContextList); +	if (EGL_NO_CONTEXT == _eglContext || +			EGL_SUCCESS != eglGetError()) { +		systemError("eglCreateContext() failed"); +		return false; +	} + +	if (false == eglMakeCurrent(_eglDisplay, _eglSurface, _eglSurface, _eglContext) || +			EGL_SUCCESS != eglGetError()) { +		systemError("eglMakeCurrent() failed"); +		return false; +	} + +	logLeaving(); +	return true; +} + +bool BadaGraphicsManager::loadGFXMode() { +	logEntered(); + +	if (!loadEgl()) { +		unloadGFXMode(); +		return false; +	} + +	int x, y, width, height; +	_appForm->GetBounds(x, y, width, height); +	_videoMode.overlayWidth = _videoMode.hardwareWidth = width; +	_videoMode.overlayHeight = _videoMode.hardwareHeight = height; +	_videoMode.scaleFactor = 3; // for proportional sized cursor in the launcher + +	AppLog("screen size: %dx%d", _videoMode.hardwareWidth, _videoMode.hardwareHeight); +	return OpenGLGraphicsManager::loadGFXMode(); +} + +void BadaGraphicsManager::loadTextures() { +	logEntered(); + +	OpenGLGraphicsManager::loadTextures(); + +	// prevent image skew in some games, see: +	// http://www.opengl.org/resources/features/KilgardTechniques/oglpitfall +	// note: this did not solve the pixel border problem in refreshGameScreen() +	glPixelStorei(GL_UNPACK_ALIGNMENT, 1); +} + +void BadaGraphicsManager::internUpdateScreen() { +	if (!_initState) { +		OpenGLGraphicsManager::internUpdateScreen(); +		eglSwapBuffers(_eglDisplay, _eglSurface); +	} else { +		showSplash(); +	} +} + +void BadaGraphicsManager::unloadGFXMode() { +	logEntered(); + +	if (EGL_NO_DISPLAY != _eglDisplay) { +		eglMakeCurrent(_eglDisplay, NULL, NULL, NULL); + +		if (_eglContext != EGL_NO_CONTEXT) { +			eglDestroyContext(_eglDisplay, _eglContext); +			_eglContext = EGL_NO_CONTEXT; +		} + +		if (_eglSurface != EGL_NO_SURFACE) { +			eglDestroySurface(_eglDisplay, _eglSurface); +			_eglSurface = EGL_NO_SURFACE; +		} + +		eglTerminate(_eglDisplay); +		_eglDisplay = EGL_NO_DISPLAY; +	} + +	_eglConfig = NULL; + +	OpenGLGraphicsManager::unloadGFXMode(); +	logLeaving(); +} + +void BadaGraphicsManager::refreshGameScreen() { +	if (_screenNeedsRedraw) +		_screenDirtyRect = Common::Rect(0, 0, _screenData.w, _screenData.h); + +	int x = _screenDirtyRect.left; +	int y = _screenDirtyRect.top; +	int w = _screenDirtyRect.width(); +	int h = _screenDirtyRect.height(); + +	if (_screenData.format.bytesPerPixel == 1) { +		// Create a temporary RGB888 surface +		int sw = w; +		int sh = h; + +		if (_videoMode.screenWidth == w && _videoMode.screenHeight == h) { +			// The extra border prevents random pixels from appearing in the right and bottom +			// screen column/row. Not sure whether this should be applied to opengl-graphics.cpp +			sw = w + 1; +			sh = h + 1; +		} + +		byte *surface = new byte[sw * sh * 3]; + +		// Convert the paletted buffer to RGB888 +		const byte *src = (byte *)_screenData.pixels + y * _screenData.pitch; +		src += x * _screenData.format.bytesPerPixel; +		byte *dst = surface; +		for (int i = 0; i < h; i++) { +			for (int j = 0; j < w; j++) { +				dst[0] = _gamePalette[src[j] * 3]; +				dst[1] = _gamePalette[src[j] * 3 + 1]; +				dst[2] = _gamePalette[src[j] * 3 + 2]; +				dst += 3; +			} +			src += _screenData.pitch; +		} + +		// Update the texture +		_gameTexture->updateBuffer(surface, w * 3, x, y, sw, sh); + +		// Free the temp surface +		delete[] surface; +	} else { +		// Update the texture +		_gameTexture->updateBuffer((byte *)_screenData.pixels + y * _screenData.pitch + +			x * _screenData.format.bytesPerPixel, _screenData.pitch, x, y, w, h); +	} + +	_screenNeedsRedraw = false; +	_screenDirtyRect = Common::Rect(); +} + +// display a simple splash screen until launcher is ready +void BadaGraphicsManager::showSplash() { +	Canvas canvas; +	canvas.Construct(); +	canvas.SetBackgroundColor(Color::COLOR_BLACK); +	canvas.Clear(); + +	int x = _videoMode.hardwareWidth / 3; +	int y = _videoMode.hardwareHeight / 3; + +	Font *pFont = new Font(); +	pFont->Construct(FONT_STYLE_ITALIC | FONT_STYLE_BOLD, 55); +	canvas.SetFont(*pFont); +	canvas.SetForegroundColor(Color::COLOR_GREEN); +	canvas.DrawText(Point(x, y), L"ScummVM"); +	delete pFont; + +	pFont = new Font(); +	pFont->Construct(FONT_STYLE_ITALIC | FONT_STYLE_BOLD, 35); +	canvas.SetFont(*pFont); +	canvas.SetForegroundColor(Color::COLOR_WHITE); +	canvas.DrawText(Point(x + 70, y + 50), L"Loading ..."); +	delete pFont; + +	canvas.Show(); + +} diff --git a/backends/platform/bada/graphics.h b/backends/platform/bada/graphics.h new file mode 100644 index 0000000000..5e49419979 --- /dev/null +++ b/backends/platform/bada/graphics.h @@ -0,0 +1,73 @@ +/* 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. + * + */ + +#ifndef BADA_GRAPHICS_H +#define BADA_GRAPHICS_H + +#include <FBase.h> +#include <FGraphics.h> +#include <FApp.h> +#include <FGraphicsOpengl.h> +#include <FSystem.h> +#include <FUi.h> + +#include "config.h" +#include "backends/graphics/opengl/opengl-graphics.h" +#include "graphics/font.h" +#include "backends/platform/bada/form.h" + +using namespace Osp::Graphics; +using namespace Osp::Graphics::Opengl; +using namespace Osp::App; + +class BadaGraphicsManager : public OpenGLGraphicsManager { +public: +	BadaGraphicsManager(BadaAppForm *appForm); + +	Common::List<Graphics::PixelFormat> getSupportedFormats() const; +	bool hasFeature(OSystem::Feature f); +	void updateScreen(); +	void setFeatureState(OSystem::Feature f, bool enable); +	void setReady(); +	bool isReady() { return !_initState; } +	const Graphics::Font *getFontOSD(); +	bool moveMouse(int16 &x, int16 &y); + +private: +	void internUpdateScreen(); +	bool loadGFXMode(); +	void loadTextures(); +	void unloadGFXMode(); +	void refreshGameScreen(); +	void setInternalMousePosition(int x, int y) {} +	void showSplash(); + +	bool loadEgl(); +	BadaAppForm *_appForm; +	EGLDisplay _eglDisplay; +	EGLSurface _eglSurface; +	EGLConfig	 _eglConfig; +	EGLContext _eglContext; +	bool _initState; +}; + +#endif diff --git a/backends/platform/bada/main.cpp b/backends/platform/bada/main.cpp new file mode 100644 index 0000000000..8c40f24dd1 --- /dev/null +++ b/backends/platform/bada/main.cpp @@ -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. + * + */ + +#include <FBase.h> +#include <FApp.h> +#include <FSystem.h> + +#include "backends/platform/bada/portdefs.h" +#include "backends/platform/bada/form.h" +#include "backends/platform/bada/system.h" +#include "backends/platform/bada/application.h" + +using namespace Osp::Base; +using namespace Osp::Base::Collection; + +C_LINKAGE_BEGIN + +_EXPORT_ int OspMain(int argc, char *pArgv[]); + +/** + * The entry function of bada application called by the operating system. + */ +int OspMain(int argc, char *pArgv[]) { +	result r = E_SUCCESS; + +	AppLog("Application started."); +	ArrayList *pArgs = new ArrayList(); +	pArgs->Construct(); + +	for (int i = 0; i < argc; i++) { +		pArgs->Add(*(new String(pArgv[i]))); +	} + +	r = Osp::App::Application::Execute(BadaScummVM::createInstance, pArgs); +	if (IsFailed(r)) { +		r &= 0x0000FFFF; +	} + +	pArgs->RemoveAll(true); +	delete pArgs; +	AppLog("Application finished."); + +	return static_cast<int>(r); +} + +C_LINKAGE_END + + diff --git a/backends/platform/bada/missing.cpp b/backends/platform/bada/missing.cpp new file mode 100644 index 0000000000..a5433ec61a --- /dev/null +++ b/backends/platform/bada/missing.cpp @@ -0,0 +1,113 @@ +/* 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. + * + */ + +#include <FApp.h> +#include <FGraphics.h> +#include <FUi.h> +#include <FSystem.h> +#include <FBase.h> + +#include "backends/platform/bada/portdefs.h" + +#include <stdio.h> +#include <string.h> +#include <stdarg.h> +#include <ctype.h> + +#define BUF_SIZE 255 + +void systemError(const char *message); + +C_LINKAGE_BEGIN + +int __errno; // for overridden method in saves/default/default-saves.cpp + +void __assert_func(const char *file, int line, +									 const char *func, const char *err) { +	char buffer[BUF_SIZE]; +	snprintf(buffer, sizeof(buffer), "%s %d %s %s", file, line, func, err); +	systemError(buffer); +} + +void stderr_fprintf(void*, const char *format, ...) { +	va_list ap; +	char buffer[BUF_SIZE]; + +	va_start(ap, format); +	vsnprintf(buffer, sizeof(buffer), format, ap); +	va_end(ap); + +	AppLog(buffer); +} + +void stderr_vfprintf(void*, const char *format, va_list ap) { +	char buffer[BUF_SIZE]; +	vsnprintf(buffer, sizeof(buffer), format, ap); +	AppLog(buffer); +} + +int printf(const char *format, ...) { +	int result = 0; +	va_list ap; +	char buffer[BUF_SIZE]; + +	va_start(ap, format); +	result = vsnprintf(buffer, sizeof(buffer), format, ap); +	va_end(ap); + +	AppLog(buffer); + +	return result; +} + +int sprintf(char *str, const char *format, ...) { +	va_list ap; +	int result; +	char buffer[BUF_SIZE]; + +	va_start(ap, format); +	result = vsnprintf(buffer, sizeof(buffer), format, ap); +	va_end(ap); + +	strcpy(str, buffer); + +	return result; +} + +char *strdup(const char *strSource) { +	char *buffer; +	int len = strlen(strSource) + 1; +	buffer = (char*)malloc(len); +	if (buffer) { +		memcpy(buffer, strSource, len); +	} +	return buffer; +} + +int vsprintf(char *str, const char *format, va_list ap) { +	char buffer[BUF_SIZE]; +	int result = vsnprintf(buffer, sizeof(buffer), format, ap); +	strcpy(str, buffer); +	return result; +} + +C_LINKAGE_END diff --git a/backends/platform/bada/portdefs.h b/backends/platform/bada/portdefs.h new file mode 100644 index 0000000000..e85d578678 --- /dev/null +++ b/backends/platform/bada/portdefs.h @@ -0,0 +1,84 @@ +/* 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. + * + */ + +#ifndef PORT_DEFS_H +#define PORT_DEFS_H + +#include <assert.h> +#include <stdarg.h> +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> +#include <math.h> + +#define M_PI 3.14159265358979323846 + +#ifdef __cplusplus + #include <ctype.h> // causes a link error when building c programs + #define C_LINKAGE_BEGIN extern "C" { + #define C_LINKAGE_END } +#else + #define C_LINKAGE_BEGIN + #define C_LINKAGE_END +#endif + +C_LINKAGE_BEGIN + +// for libFLAC +#undef fseeko +#undef ftello +#define fseeko fseek +#define ftello ftell + +// overcome use of fprintf since bada/newlib (1.2) does not +// support stderr/stdout (undefined reference to `_impure_ptr'). + +void stderr_fprintf(void*, const char *format, ...); +void stderr_vfprintf(void*, const char *format, va_list ap); + +#undef fprintf +#undef vfprintf +#undef stderr +#undef stdout +#undef stdin +#undef fputs +#undef fflush + +#define stderr (void*)0 +#define stdout (void*)1 +#define stdin	 (void*)2 +#define fputs(str, file) +#define fflush(file) +#define sscanf simple_sscanf +#define fprintf stderr_fprintf +#define vfprintf stderr_vfprintf + +int printf(const char *format, ...); +int sprintf(char *str, const char *format, ...); +int simple_sscanf(const char *buffer, const char *format, ...); +char *strdup(const char *s1); +int vsprintf(char *str, const char *format, va_list ap); + +C_LINKAGE_END + +#endif diff --git a/backends/platform/bada/sscanf.cpp b/backends/platform/bada/sscanf.cpp new file mode 100644 index 0000000000..4ef964b47e --- /dev/null +++ b/backends/platform/bada/sscanf.cpp @@ -0,0 +1,182 @@ +/* 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. + * + */ + +#include <stdlib.h> +#include <stdio.h> +#include <stdarg.h> +#include <string.h> +#include <ctype.h> + +// +// simple sscanf replacement to match scummvm usage patterns +// + +bool scanInt(const char **in, va_list *ap, int max) { +	while (**in && (**in == ' ' || **in == '0')) { +		(*in)++; +	} + +	int *arg = va_arg(*ap, int*); +	char *end; +	long n = strtol(*in, &end, 0); + +	bool err = false; +	if (end == *in || (max > 0 && (end - *in) > max)) { +		err = true; +	} else { +		*arg = (int)n; +		*in = end; +	} +	return err; +} + +bool scanHex(const char **in, va_list *ap) { +	unsigned *arg = va_arg(*ap, unsigned*); +	char *end; +	long n = strtol(*in, &end, 16); +	if (end == *in) { +		return true; +	} + +	*in = end; +	*arg = (unsigned) n; +	return false; +} + +bool scanString(const char **in, va_list *ap) { +	char *arg = va_arg(*ap, char*); +	while (**in && **in != ' ' && **in != '\n' && **in != '\t') { +		*arg = **in; +		arg++; +		(*in)++; +	} +	*arg = '\0'; +	(*in)++; +	return false; +} + +bool scanStringUntil(const char **in, va_list *ap, char c_end) { +	char *arg = va_arg(*ap, char*); +	while (**in && **in != c_end) { +		*arg = **in; +		*arg++; +		(*in)++; +	} +	*arg = 0; +	(*in)++; +	return false; +} + +bool scanChar(const char **in, va_list *ap) { +	char *arg = va_arg(*ap, char*); +	if (**in) { +		*arg = **in; +		(*in)++; +	} +	return false; +} + +extern "C" int simple_sscanf(const char *input, const char *format, ...) { +	va_list ap; +	int result = 0; +	const char *next = input; + +	va_start(ap, format); + +	while (*format) { +		if (*format == '%') { +			format++; +			int max = 0; +			while (isdigit(*format)) { +				max = (max * 10) + (*format - '0'); +				format++; +			} + +			bool err = false; +			switch (*format++) { +			case 'c': +				err = scanChar(&next, &ap); +				break; +			case 'd': +			case 'u': +				err = scanInt(&next, &ap, max); +				break; +			case 'x': +				err = scanHex(&next, &ap); +				break; +			case 's': +				err = scanString(&next, &ap); +				break; +			case '[': +				// assume %[^c] +				if ('^' != *format) { +					err = true; +				} else { +					format++; +					if (*format && *(format+1) == ']') { +						err = scanStringUntil(&next, &ap, *format); +						format += 2; +					} else { +						err = true; +					} +				} +				break; +			default: +				err = true; +				break; +			} + +			if (err) { +				break; +			} else { +				result++; +			} +		} else if (*format++ != *next++) { +			// match input +			break; +		} +	} + +	va_end(ap); +	return result; +} + +#if defined(TEST) +int main(int argc, char *pArgv[]) { +	int x,y,h; +	char buffer[100]; +	unsigned u; +	char c; +	strcpy(buffer, "hello"); +	char *b = buffer; + +	//	strcpy(buffer, "in the buffer something"); +	if (simple_sscanf("CAT 123x-10 0x100 FONT large 1 enough\n	 123456.AUD $", +										"CAT %dx%d %x FONT %[^\n] %06u.AUD %c", +										&x, &y, &h, b, &u, &c) != 6) { +		printf("Failed\n"); +	} else { +		printf("Success %d %d %d %s %d '%c'\n", x, y, h, buffer, u, c); +	} +	return 0; +} +#endif diff --git a/backends/platform/bada/system.cpp b/backends/platform/bada/system.cpp new file mode 100644 index 0000000000..37d7028687 --- /dev/null +++ b/backends/platform/bada/system.cpp @@ -0,0 +1,499 @@ +/* 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. + * + */ + +#include <FUiCtrlMessageBox.h> + +#include "common/config-manager.h" +#include "common/file.h" +#include "engines/engine.h" +#include "graphics/font.h" +#include "graphics/fontman.h" +#include "graphics/fonts/bdf.h" +#include "backends/saves/default/default-saves.h" +#include "backends/events/default/default-events.h" +#include "backends/audiocd/default/default-audiocd.h" +#include "backends/mutex/mutex.h" +#include "backends/fs/fs-factory.h" +#include "backends/timer/bada/timer.h" + +#include "backends/platform/bada/form.h" +#include "backends/platform/bada/system.h" +#include "backends/platform/bada/graphics.h" +#include "backends/platform/bada/audio.h" + +using namespace Osp::Base; +using namespace Osp::Base::Runtime; +using namespace Osp::Ui::Controls; + +#define DEFAULT_CONFIG_FILE "/Home/scummvm.ini" +#define MUTEX_BUFFER_SIZE 5 + +// +// BadaFilesystemFactory +// +class BadaFilesystemFactory : public FilesystemFactory { +	AbstractFSNode *makeRootFileNode() const; +	AbstractFSNode *makeCurrentDirectoryFileNode() const; +	AbstractFSNode *makeFileNodePath(const Common::String &path) const; +}; + +AbstractFSNode *BadaFilesystemFactory::makeRootFileNode() const { +	return new BadaFilesystemNode("/"); +} + +AbstractFSNode *BadaFilesystemFactory::makeCurrentDirectoryFileNode() const { +	return new BadaFilesystemNode("/Home"); +} + +AbstractFSNode *BadaFilesystemFactory::makeFileNodePath(const Common::String &path) const { +	AppAssert(!path.empty()); +	return new BadaFilesystemNode(path); +} + +// +// BadaSaveFileManager +// +struct BadaSaveFileManager : public DefaultSaveFileManager { +	bool removeSavefile(const Common::String &filename); +}; + +bool BadaSaveFileManager::removeSavefile(const Common::String &filename) { +	Common::String savePathName = getSavePath(); + +	checkPath(Common::FSNode(savePathName)); +	if (getError().getCode() != Common::kNoError) { +		return false; +	} + +	// recreate FSNode since checkPath may have changed/created the directory +	Common::FSNode savePath(savePathName); +	Common::FSNode file = savePath.getChild(filename); + +	String unicodeFileName; +	StringUtil::Utf8ToString(file.getPath().c_str(), unicodeFileName); + +	switch (Osp::Io::File::Remove(unicodeFileName)) { +	case E_SUCCESS: +		return true; + +	case E_ILLEGAL_ACCESS: +		setError(Common::kWritePermissionDenied, "Search or write permission denied: " + +						 file.getName()); +		break; + +	default: +		setError(Common::kPathDoesNotExist, "removeSavefile: '" + file.getName() + +						 "' does not exist or path is invalid"); +		break; +	} + +	return false; +} + +// +// BadaMutexManager +// +struct BadaMutexManager : public MutexManager { +	BadaMutexManager(); +	~BadaMutexManager(); +	OSystem::MutexRef createMutex(); +	void lockMutex(OSystem::MutexRef mutex); +	void unlockMutex(OSystem::MutexRef mutex); +	void deleteMutex(OSystem::MutexRef mutex); +private: +	Mutex *buffer[MUTEX_BUFFER_SIZE]; +}; + +BadaMutexManager::BadaMutexManager() { +	for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) { +		buffer[i] = NULL; +	} +} + +BadaMutexManager::~BadaMutexManager() { +	for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) { +		if (buffer[i] != NULL) { +			delete buffer[i]; +		} +	} +} + +OSystem::MutexRef BadaMutexManager::createMutex() { +	Mutex *mutex = new Mutex(); +	mutex->Create(); + +	for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) { +		if (buffer[i] == NULL) { +			buffer[i] = mutex; +			break; +		} +	} + +	return (OSystem::MutexRef) mutex; +} + +void BadaMutexManager::lockMutex(OSystem::MutexRef mutex) { +	Mutex *m = (Mutex*)mutex; +	m->Acquire(); +} + +void BadaMutexManager::unlockMutex(OSystem::MutexRef mutex) { +	Mutex *m = (Mutex*)mutex; +	m->Release(); +} + +void BadaMutexManager::deleteMutex(OSystem::MutexRef mutex) { +	Mutex *m = (Mutex*)mutex; + +	for (int i = 0; i < MUTEX_BUFFER_SIZE; i++) { +		if (buffer[i] == m) { +			buffer[i] = NULL; +		} +	} + +	delete m; +} + +// +// BadaEventManager +// +struct BadaEventManager : public DefaultEventManager { +	BadaEventManager(Common::EventSource *boss); +	void init(); +	int shouldQuit() const; +}; + +BadaEventManager::BadaEventManager(Common::EventSource *boss) : +	DefaultEventManager(boss) { +} + +void BadaEventManager::init() { +	DefaultEventManager::init(); + +	// theme and vkbd should have now loaded - clear the splash screen +	BadaSystem *system = (BadaSystem *)g_system; +	BadaGraphicsManager *graphics = system->getGraphics(); +	if (graphics) { +		graphics->setReady(); +		graphics->updateScreen(); +	} +} + +int BadaEventManager::shouldQuit() const { +	BadaSystem *system = (BadaSystem *)g_system; +	return DefaultEventManager::shouldQuit() || system->isClosing(); +} + +// +// BadaSystem +// +BadaSystem::BadaSystem(BadaAppForm *appForm) : +	_appForm(appForm), +	_audioThread(0), +	_epoch(0) { +} + +result BadaSystem::Construct(void) { +	logEntered(); + +	_fsFactory = new BadaFilesystemFactory(); +	if (!_fsFactory) { +		return E_OUT_OF_MEMORY; +	} + +	return E_SUCCESS; +} + +BadaSystem::~BadaSystem() { +	logEntered(); +} + +result BadaSystem::initModules() { +	logEntered(); + +	_mutexManager = new BadaMutexManager(); +	if (!_mutexManager) { +		return E_OUT_OF_MEMORY; +	} + +	_timerManager = new BadaTimerManager(); +	if (!_timerManager) { +		return E_OUT_OF_MEMORY; +	} + +	_savefileManager = new BadaSaveFileManager(); +	if (!_savefileManager) { +		return E_OUT_OF_MEMORY; +	} + +	_graphicsManager = (GraphicsManager*) new BadaGraphicsManager(_appForm); +	if (!_graphicsManager) { +		return E_OUT_OF_MEMORY; +	} + +	// depends on _graphicsManager when ENABLE_VKEYBD enabled +	_eventManager = new BadaEventManager(this); +	if (!_eventManager) { +		return E_OUT_OF_MEMORY; +	} + +	_audioThread = new AudioThread(); +	if (!_audioThread) { +		return E_OUT_OF_MEMORY; +	} + +	_mixer = _audioThread->Construct(this); +	if (!_mixer) { +		return E_OUT_OF_MEMORY; +	} + +	_audiocdManager = (AudioCDManager*) new DefaultAudioCDManager(); +	if (!_audiocdManager) { +		return E_OUT_OF_MEMORY; +	} + +	if (IsFailed(_audioThread->Start())) { +		AppLog("Failed to start audio thread"); +		return E_OUT_OF_MEMORY; +	} + +	logLeaving(); +	return E_SUCCESS; +} + +void BadaSystem::initBackend() { +	logEntered(); + +	// allow translations and game .DAT files to be found +	ConfMan.set("extrapath", "/Res"); + +	// use the mobile device theme +	ConfMan.set("gui_theme", "/Res/scummmobile"); + +	// allow bada virtual keypad pack to be found +	ConfMan.set("vkeybdpath", "/Res/vkeybd_bada"); +	ConfMan.set("vkeybd_pack_name", "vkeybd_bada"); + +	// set default save path to writable area +	if (!ConfMan.hasKey("savepath")) { +		ConfMan.set("savepath", "/Home/Share"); +	} + +	// default to no auto-save +	if (!ConfMan.hasKey("autosave_period")) { +		ConfMan.setInt("autosave_period", 0); +	} + +	ConfMan.registerDefault("fullscreen", true); +	ConfMan.registerDefault("aspect_ratio", true); +	ConfMan.setBool("confirm_exit", false); + +	Osp::System::SystemTime::GetTicks(_epoch); + +	if (E_SUCCESS != initModules()) { +		AppLog("initModules failed"); +	} else { +		OSystem::initBackend(); +	} + +	// replace kBigGUIFont using the large font from the scummmobile theme +	Common::File fontFile; +	Common::String fileName = "/Res/scummmobile/helvB14-ASCII.fcc"; +	BadaFilesystemNode file(fileName); +	if (file.exists()) { +		Common::SeekableReadStream *stream = file.createReadStream(); +		if (stream) { +			if (fontFile.open(stream, fileName)) { +				Graphics::BdfFont *font = Graphics::BdfFont::loadFromCache(fontFile); +				if (font) { +					// use this font for the vkbd and on-screen messages +					FontMan.setFont(Graphics::FontManager::kBigGUIFont, font); +				} +			} +		} +	} + +	logLeaving(); +} + +void BadaSystem::destroyBackend() { +	closeAudio(); + +	delete _graphicsManager; +	_graphicsManager = 0; + +	delete _savefileManager; +	_savefileManager = 0; + +	delete _fsFactory; +	_fsFactory = 0; + +	delete _mixer; +	_mixer = 0; + +	delete _audiocdManager; +	_audiocdManager = 0; + +	delete _timerManager; +	_timerManager = 0; + +	delete _eventManager; +	_eventManager = 0; + +	delete _mutexManager; +	_mutexManager = 0; +} + +bool BadaSystem::pollEvent(Common::Event &event) { +	return _appForm->pollEvent(event); +} + +uint32 BadaSystem::getMillis() { +	long long result, ticks = 0; +	Osp::System::SystemTime::GetTicks(ticks); +	result = ticks - _epoch; +	return result; +} + +void BadaSystem::delayMillis(uint msecs) { +	if (!_appForm->isClosing()) { +		Thread::Sleep(msecs); +	} +} + +void BadaSystem::updateScreen() { +	if (_graphicsManager != NULL) { +		_graphicsManager->updateScreen(); +	} +} + +void BadaSystem::getTimeAndDate(TimeDate &td) const { +	DateTime currentTime; + +	if (E_SUCCESS == Osp::System::SystemTime::GetCurrentTime(currentTime)) { +		td.tm_sec = currentTime.GetSecond(); +		td.tm_min = currentTime.GetMinute(); +		td.tm_hour = currentTime.GetHour(); +		td.tm_mday = currentTime.GetDay(); +		td.tm_mon = currentTime.GetMonth(); +		td.tm_year = currentTime.GetYear(); +	} +} + +void BadaSystem::fatalError() { +	systemError("ScummVM: Fatal internal error."); +} + +void BadaSystem::exitSystem() { +	if (_appForm) { +		closeAudio(); +		closeGraphics(); +		_appForm->exitSystem(); +	} +} + +void BadaSystem::logMessage(LogMessageType::Type type, const char *message) { +	if (type == LogMessageType::kError) { +		systemError(message); +	} else { +		AppLog(message); +	} +} + +Common::SeekableReadStream *BadaSystem::createConfigReadStream() { +	BadaFilesystemNode file(DEFAULT_CONFIG_FILE); +	return file.createReadStream(); +} + +Common::WriteStream *BadaSystem::createConfigWriteStream() { +	BadaFilesystemNode file(DEFAULT_CONFIG_FILE); +	return file.createWriteStream(); +} + +void BadaSystem::closeAudio() { +	if (_audioThread) { +		_audioThread->Stop(); +		_audioThread->Join(); +		delete _audioThread; +		_audioThread = 0; +	} +} + +void BadaSystem::closeGraphics() { +	if (_graphicsManager) { +		delete _graphicsManager; +		_graphicsManager = 0; +	} +} + +void BadaSystem::setMute(bool on) { +	if (_audioThread) { +		_audioThread->setMute(on); +	} +} + +int BadaSystem::setVolume(bool up, bool minMax) { +	int level = -1; +	if (_audioThread) { +		level = _audioThread->setVolume(up, minMax); +	} +	return level; +} + +// +// create the ScummVM system +// +BadaAppForm *systemStart(Osp::App::Application *app) { +	logEntered(); + +	BadaAppForm *appForm = new BadaAppForm(); +	if (!appForm) { +		AppLog("Failed to create appForm"); +		return NULL; +	} + +	if (E_SUCCESS != appForm->Construct() || +			E_SUCCESS != app->GetAppFrame()->GetFrame()->AddControl(*appForm)) { +		delete appForm; +		AppLog("Failed to construct appForm"); +		return NULL; +	} + +	return appForm; +} + +// +// display a fatal error notification +// +void systemError(const char *message) { +	AppLog("Fatal system error: %s", message); + +	ArrayList *args = new ArrayList(); +	args->Construct(); +	args->Add(*(new String(message))); +	Application::GetInstance()->SendUserEvent(USER_MESSAGE_EXIT_ERR, args); + +	if (g_system) { +		BadaSystem *system = (BadaSystem *)g_system; +		system->exitSystem(); +	} +} diff --git a/backends/platform/bada/system.h b/backends/platform/bada/system.h new file mode 100644 index 0000000000..a091f952e5 --- /dev/null +++ b/backends/platform/bada/system.h @@ -0,0 +1,101 @@ +/* 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. + * + */ + +#ifndef BADA_SYSTEM_H +#define BADA_SYSTEM_H + +#include <FApp.h> +#include <FGraphics.h> +#include <FUi.h> +#include <FSystem.h> +#include <FBase.h> +#include <FIoFile.h> + +#include "config.h" +#include "common/scummsys.h" +#include "backends/modular-backend.h" + +#include "backends/platform/bada/fs.h" +#include "backends/platform/bada/form.h" +#include "backends/platform/bada/audio.h" +#include "backends/platform/bada/graphics.h" + +#if defined(_DEBUG) +#define logEntered() AppLog("%s entered (%s %d)", \ +														 __FUNCTION__, __FILE__, __LINE__); +#define logLeaving() AppLog("%s leaving (%s %d)", \ +														 __FUNCTION__, __FILE__, __LINE__); +#else +#define logEntered() +#define logLeaving() +#endif + +BadaAppForm *systemStart(Osp::App::Application *app); +void systemError(const char *message); + +#define USER_MESSAGE_EXIT			1000 +#define USER_MESSAGE_EXIT_ERR 1001 + +// +// BadaSystem +// +class BadaSystem : public ModularBackend, +									 Common::EventSource { +public: +	BadaSystem(BadaAppForm *appForm); +	~BadaSystem(); + +	result Construct(); +	void closeAudio(); +	void closeGraphics(); +	void destroyBackend(); +	void setMute(bool on); +	int setVolume(bool up, bool minMax); +	void exitSystem(); +	bool isClosing() { return _appForm->isClosing(); } + +	BadaGraphicsManager *getGraphics() { +		return (BadaGraphicsManager*)_graphicsManager; +	} + +private: +	void initBackend(); +	result initModules(); + +	void updateScreen(); +	bool pollEvent(Common::Event &event); +	uint32 getMillis(); +	void delayMillis(uint msecs); +	void getTimeAndDate(TimeDate &t) const; +	void fatalError(); +	void logMessage(LogMessageType::Type type, const char *message); + +	Common::EventSource *getDefaultEventSource() {return this;} +	Common::SeekableReadStream *createConfigReadStream(); +	Common::WriteStream *createConfigWriteStream(); + +	BadaAppForm *_appForm; +	AudioThread *_audioThread; +	long long _epoch; +}; + +#endif diff --git a/backends/platform/dc/DCLauncherDialog.h b/backends/platform/dc/DCLauncherDialog.h index 72df3e15cc..519524222f 100644 --- a/backends/platform/dc/DCLauncherDialog.h +++ b/backends/platform/dc/DCLauncherDialog.h @@ -25,4 +25,3 @@ class DCLauncherDialog {    DCLauncherDialog() {}    int runModal();  }; - diff --git a/backends/platform/dc/README b/backends/platform/dc/README index e4ebda840e..e26df500e8 100644 --- a/backends/platform/dc/README +++ b/backends/platform/dc/README @@ -23,4 +23,3 @@ should get a scrambled binary SCUMMVM.BIN and some plugins *.PLG.  For serial/IP upload, remove the "DYNAMIC_MODULES" line and just run `make',  to get a static binary with the name `scummvm.elf'. - diff --git a/backends/platform/dc/audio.cpp b/backends/platform/dc/audio.cpp index 1fee970a90..35cb51f349 100644 --- a/backends/platform/dc/audio.cpp +++ b/backends/platform/dc/audio.cpp @@ -74,5 +74,3 @@ void OSystem_Dreamcast::checkSound()    if ((fillpos += n) >= curr_ring_buffer_samples)      fillpos = 0;  } - - diff --git a/backends/platform/dc/cache.S b/backends/platform/dc/cache.S index 1a1595a9a1..4beeedcea7 100644 --- a/backends/platform/dc/cache.S +++ b/backends/platform/dc/cache.S @@ -35,4 +35,3 @@ ccr_addr:  	.long	0xff00001c  ccr_data:  	.word	0x0905 - diff --git a/backends/platform/dc/dc-fs.cpp b/backends/platform/dc/dc-fs.cpp index c46f9df093..f30c9c56d1 100644 --- a/backends/platform/dc/dc-fs.cpp +++ b/backends/platform/dc/dc-fs.cpp @@ -165,4 +165,3 @@ AbstractFSNode *OSystem_Dreamcast::makeFileNodePath(const Common::String &path)  	AbstractFSNode *node = RoninCDFileNode::makeFileNodePath(path);  	return (node? node : new RoninCDNonexistingNode(path));  } - diff --git a/backends/platform/dc/dc.h b/backends/platform/dc/dc.h index bde50daa2d..2e32ff3eb4 100644 --- a/backends/platform/dc/dc.h +++ b/backends/platform/dc/dc.h @@ -259,4 +259,3 @@ extern int handleInput(struct mapledev *pad,  		       int &mouse_x, int &mouse_y,  		       byte &shiftFlags, Interactive *inter = NULL);  extern bool selectGame(char *&, char *&, Common::Language &, Common::Platform &, class Icon &); - diff --git a/backends/platform/dc/dcmain.cpp b/backends/platform/dc/dcmain.cpp index 06738a687d..3e3279f9c3 100644 --- a/backends/platform/dc/dcmain.cpp +++ b/backends/platform/dc/dcmain.cpp @@ -377,4 +377,3 @@ int DCLauncherDialog::runModal()    return 0;  } - diff --git a/backends/platform/dc/display.cpp b/backends/platform/dc/display.cpp index a11e329df3..76658c6590 100644 --- a/backends/platform/dc/display.cpp +++ b/backends/platform/dc/display.cpp @@ -732,4 +732,3 @@ int16 OSystem_Dreamcast::getOverlayWidth()  {    return OVL_W;  } - diff --git a/backends/platform/dc/input.cpp b/backends/platform/dc/input.cpp index 3759eec6df..7b21c76efa 100644 --- a/backends/platform/dc/input.cpp +++ b/backends/platform/dc/input.cpp @@ -249,4 +249,3 @@ bool OSystem_Dreamcast::pollEvent(Common::Event &event)      return false;    }  } - diff --git a/backends/platform/dc/label.cpp b/backends/platform/dc/label.cpp index 1094dd3fb4..5db031958f 100644 --- a/backends/platform/dc/label.cpp +++ b/backends/platform/dc/label.cpp @@ -134,4 +134,3 @@ void Label::draw(float x, float y, unsigned int argb, float scale)    myvertex.cmd |= TA_CMD_VERTEX_EOS;    ta_commit_list(&myvertex);  } - diff --git a/backends/platform/dc/plugin_head.S b/backends/platform/dc/plugin_head.S index 6cbe9eec85..a056f1c0f0 100644 --- a/backends/platform/dc/plugin_head.S +++ b/backends/platform/dc/plugin_head.S @@ -3,4 +3,3 @@  	.section        .dtors,"aw",@progbits  	.end -	 diff --git a/backends/platform/dingux/README.DINGUX b/backends/platform/dingux/README.DINGUX index d867e02f03..04f0d30844 100644 --- a/backends/platform/dingux/README.DINGUX +++ b/backends/platform/dingux/README.DINGUX @@ -65,4 +65,3 @@ I still raccomand the use of opendingux kernel + rootfs, but if you don't, this  image plus another kernel (eg. SiENcE's one) should be do the job.  Enjoy - diff --git a/backends/platform/dingux/scummvm.gpe b/backends/platform/dingux/scummvm.gpe index 84ab0c6b95..ce5d174a5c 100644 --- a/backends/platform/dingux/scummvm.gpe +++ b/backends/platform/dingux/scummvm.gpe @@ -2,4 +2,3 @@  HOME=`pwd`  $HOME/scummvm.elf - diff --git a/backends/platform/ds/arm7/source/libcartreset/cartreset.c b/backends/platform/ds/arm7/source/libcartreset/cartreset.c index db2f3cfddc..85be823b71 100644 --- a/backends/platform/ds/arm7/source/libcartreset/cartreset.c +++ b/backends/platform/ds/arm7/source/libcartreset/cartreset.c @@ -104,6 +104,3 @@ void cartExecute()  }  #endif - - - diff --git a/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h b/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h index f1faebea37..98808f79c5 100644 --- a/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h +++ b/backends/platform/ds/arm7/source/libcartreset/cartreset_nolibfat.h @@ -54,4 +54,3 @@ void cartExecute();  #endif  #endif - diff --git a/backends/platform/ds/arm7/source/main.cpp b/backends/platform/ds/arm7/source/main.cpp index 6b5a0ec321..2e9cacc669 100644 --- a/backends/platform/ds/arm7/source/main.cpp +++ b/backends/platform/ds/arm7/source/main.cpp @@ -650,4 +650,3 @@ int main(int argc, char ** argv) {  ////////////////////////////////////////////////////////////////////// - diff --git a/backends/platform/ds/arm9/dist/readme_ds.txt b/backends/platform/ds/arm9/dist/readme_ds.txt index 24c85ad556..dc37fecce5 100644 --- a/backends/platform/ds/arm9/dist/readme_ds.txt +++ b/backends/platform/ds/arm9/dist/readme_ds.txt @@ -861,8 +861,3 @@ For other builds, substitute the letters b - g in the above line.  To build everything, type:    make allbuildssafe - - - - - diff --git a/backends/platform/ds/arm9/source/dsoptions.cpp b/backends/platform/ds/arm9/source/dsoptions.cpp index 263ca58705..7154d4ae3f 100644 --- a/backends/platform/ds/arm9/source/dsoptions.cpp +++ b/backends/platform/ds/arm9/source/dsoptions.cpp @@ -433,4 +433,3 @@ void setOptions() {  }  }	// End of namespace DS - diff --git a/backends/platform/ds/arm9/source/fat/disc_io.h b/backends/platform/ds/arm9/source/fat/disc_io.h index 0fc83a7493..cd930ba454 100644 --- a/backends/platform/ds/arm9/source/fat/disc_io.h +++ b/backends/platform/ds/arm9/source/fat/disc_io.h @@ -218,4 +218,3 @@ typedef struct {  #endif  #endif	// define DISC_IO_H - diff --git a/backends/platform/ds/arm9/source/fat/io_m3_common.c b/backends/platform/ds/arm9/source/fat/io_m3_common.c index 9c8280c808..e3232a4df6 100644 --- a/backends/platform/ds/arm9/source/fat/io_m3_common.c +++ b/backends/platform/ds/arm9/source/fat/io_m3_common.c @@ -57,4 +57,3 @@ void _M3_changeMode (u32 mode) {  		_M3_readHalfword (0x08000188);  	}  } - diff --git a/backends/platform/ds/arm9/source/fat/io_m3_common.h b/backends/platform/ds/arm9/source/fat/io_m3_common.h index 6d0c669783..6a0cc03c2e 100644 --- a/backends/platform/ds/arm9/source/fat/io_m3_common.h +++ b/backends/platform/ds/arm9/source/fat/io_m3_common.h @@ -45,4 +45,3 @@  extern void _M3_changeMode (u32 mode);  #endif // IO_M3_COMMON_H - diff --git a/backends/platform/ds/arm9/source/fat/io_m3sd_asm.s b/backends/platform/ds/arm9/source/fat/io_m3sd_asm.s index a6bb8dc187..f2bcce7da9 100644 --- a/backends/platform/ds/arm9/source/fat/io_m3sd_asm.s +++ b/backends/platform/ds/arm9/source/fat/io_m3sd_asm.s @@ -193,4 +193,3 @@ sd_data_write_busy2:  	ldmfd   r13!,{r4-r5,r15}  @-----------------end------------------- - diff --git a/backends/platform/ds/arm9/source/fat/io_njsd.c b/backends/platform/ds/arm9/source/fat/io_njsd.c index b9cb52aa00..12388da8e9 100644 --- a/backends/platform/ds/arm9/source/fat/io_njsd.c +++ b/backends/platform/ds/arm9/source/fat/io_njsd.c @@ -678,4 +678,4 @@ LPIO_INTERFACE NJSD_GetInterface(void) {  } ;  #endif // defined NDS -#endif
\ No newline at end of file +#endif diff --git a/backends/platform/ds/arm9/source/fat/io_scsd.c b/backends/platform/ds/arm9/source/fat/io_scsd.c index 0a6ab5a528..270691436d 100644 --- a/backends/platform/ds/arm9/source/fat/io_scsd.c +++ b/backends/platform/ds/arm9/source/fat/io_scsd.c @@ -103,4 +103,4 @@ LPIO_INTERFACE SCSD_GetInterface(void) {  	return &io_scsd ;  } ; -#endif
\ No newline at end of file +#endif diff --git a/backends/platform/ds/arm9/source/fat/io_scsd_asm.s b/backends/platform/ds/arm9/source/fat/io_scsd_asm.s index 390d36afeb..a33fa6af35 100644 --- a/backends/platform/ds/arm9/source/fat/io_scsd_asm.s +++ b/backends/platform/ds/arm9/source/fat/io_scsd_asm.s @@ -508,14 +508,3 @@ MemoryCard_IsInserted:  @----------------end MemoryCard_IsInserted---------------      .END - - - - - - - - - - - diff --git a/backends/platform/ds/arm9/source/fat/io_sd_common.c b/backends/platform/ds/arm9/source/fat/io_sd_common.c index ade9df0d80..e7ab472e1b 100644 --- a/backends/platform/ds/arm9/source/fat/io_sd_common.c +++ b/backends/platform/ds/arm9/source/fat/io_sd_common.c @@ -199,5 +199,3 @@ bool _SD_InitCard (_SD_FN_CMD_6BYTE_RESPONSE cmd_6byte_response,  	return true;  } - - diff --git a/backends/platform/ds/arm9/source/fat/m3sd.s b/backends/platform/ds/arm9/source/fat/m3sd.s index f6fab1a9e2..899cbc7927 100644 --- a/backends/platform/ds/arm9/source/fat/m3sd.s +++ b/backends/platform/ds/arm9/source/fat/m3sd.s @@ -197,4 +197,3 @@ DC_FlushRangeLoop:      bx      lr  @---------------------------------------  	.end - diff --git a/backends/platform/ds/arm9/source/keys.cpp b/backends/platform/ds/arm9/source/keys.cpp index 2f8497ab19..aec7d57bda 100644 --- a/backends/platform/ds/arm9/source/keys.cpp +++ b/backends/platform/ds/arm9/source/keys.cpp @@ -134,4 +134,3 @@ uint32 keysUp(void) {  }	// End of namespace DS - diff --git a/backends/platform/ds/arm9/source/osystem_ds.cpp b/backends/platform/ds/arm9/source/osystem_ds.cpp index b157a3a87a..fdd310ec17 100644 --- a/backends/platform/ds/arm9/source/osystem_ds.cpp +++ b/backends/platform/ds/arm9/source/osystem_ds.cpp @@ -901,5 +901,3 @@ void OSystem_DS::engineDone() {  #endif  } - - diff --git a/backends/platform/ds/arm9/source/scummhelp.cpp b/backends/platform/ds/arm9/source/scummhelp.cpp index 670b46a3b9..112ba49d76 100644 --- a/backends/platform/ds/arm9/source/scummhelp.cpp +++ b/backends/platform/ds/arm9/source/scummhelp.cpp @@ -98,4 +98,3 @@ void updateStrings(byte gameId, byte version, Common::Platform platform,  #undef ADD_BIND  #undef ADD_TEXT  #undef ADD_LINE - diff --git a/backends/platform/ds/ds.mk b/backends/platform/ds/ds.mk index 654475e1f3..78216cb9a2 100644 --- a/backends/platform/ds/ds.mk +++ b/backends/platform/ds/ds.mk @@ -236,4 +236,3 @@ $(ndsdir)/arm7/arm7.bin: $(ndsdir)/arm7/arm7.elf  #  # Fingolfin used  # CXX=arm-eabi-g++ CC=arm-eabi-gcc ./configure --host=arm-elf --enable-speed --enable-sso -enable-fpm=arm CFLAGS='-specs=ds_arm9.specs -mthumb-interwork' --disable-shared --disable-debugging LDFLAGS=$DEVKITPRO/libnds/lib/libnds9.a - diff --git a/backends/platform/gph/devices/gp2x/mmuhack/flush_uppermem_cache.h b/backends/platform/gph/devices/gp2x/mmuhack/flush_uppermem_cache.h index 520841ace7..d01548e474 100644 --- a/backends/platform/gph/devices/gp2x/mmuhack/flush_uppermem_cache.h +++ b/backends/platform/gph/devices/gp2x/mmuhack/flush_uppermem_cache.h @@ -8,4 +8,3 @@ void flush_uppermem_cache(void *start_address, void *end_address, int flags);  #ifdef __cplusplus  }  #endif - diff --git a/backends/platform/gph/devices/gp2x/mmuhack/flush_uppermem_cache.s b/backends/platform/gph/devices/gp2x/mmuhack/flush_uppermem_cache.s index 17628c156a..265908e1fd 100644 --- a/backends/platform/gph/devices/gp2x/mmuhack/flush_uppermem_cache.s +++ b/backends/platform/gph/devices/gp2x/mmuhack/flush_uppermem_cache.s @@ -3,4 +3,3 @@  flush_uppermem_cache:      swi #0x9f0002      bx lr - diff --git a/backends/platform/iphone/iphone_main.m b/backends/platform/iphone/iphone_main.m index 7bb5f0c317..c2ec328bf5 100644 --- a/backends/platform/iphone/iphone_main.m +++ b/backends/platform/iphone/iphone_main.m @@ -137,4 +137,3 @@ int main(int argc, char** argv) {  }  @end - diff --git a/backends/platform/iphone/iphone_video.m b/backends/platform/iphone/iphone_video.m index 04d25cebf8..eb16676428 100644 --- a/backends/platform/iphone/iphone_video.m +++ b/backends/platform/iphone/iphone_video.m @@ -754,4 +754,3 @@ bool getLocalMouseCoords(CGPoint *point) {  }  @end - diff --git a/backends/platform/n64/Makefile b/backends/platform/n64/Makefile index cffe277312..4f3744f7e8 100644 --- a/backends/platform/n64/Makefile +++ b/backends/platform/n64/Makefile @@ -90,4 +90,3 @@ spotless : distclean  send: $(TARGET).v64  	sudo ucon64 --xv64  $(TARGET).v64 - diff --git a/backends/platform/n64/README.N64 b/backends/platform/n64/README.N64 index b47b239658..42f78f4754 100644 --- a/backends/platform/n64/README.N64 +++ b/backends/platform/n64/README.N64 @@ -113,4 +113,3 @@ Notes  ==========  Write the rest of this README. - diff --git a/backends/platform/n64/framfs_save_manager.cpp b/backends/platform/n64/framfs_save_manager.cpp index 983b9aba8d..78f5333f2e 100644 --- a/backends/platform/n64/framfs_save_manager.cpp +++ b/backends/platform/n64/framfs_save_manager.cpp @@ -69,4 +69,3 @@ Common::StringArray FRAMSaveManager::listSavefiles(const Common::String &pattern  	return list;  } - diff --git a/backends/platform/n64/framfs_save_manager.h b/backends/platform/n64/framfs_save_manager.h index d50c17d85b..da553e423a 100644 --- a/backends/platform/n64/framfs_save_manager.h +++ b/backends/platform/n64/framfs_save_manager.h @@ -129,4 +129,3 @@ public:  #endif - diff --git a/backends/platform/n64/n64.mk b/backends/platform/n64/n64.mk index 2e383e670d..83ad405503 100644 --- a/backends/platform/n64/n64.mk +++ b/backends/platform/n64/n64.mk @@ -26,4 +26,3 @@ endif  	$(srcdir)/backends/platform/n64/pad_rom.sh scummvm.v64  	rm scummvm.bak  	mv scummvm.v64 $(bundle_name)/scummvm.v64 - diff --git a/backends/platform/n64/nintendo64.cpp b/backends/platform/n64/nintendo64.cpp index 3e811e73d2..bc416157e6 100644 --- a/backends/platform/n64/nintendo64.cpp +++ b/backends/platform/n64/nintendo64.cpp @@ -31,4 +31,3 @@ int main(void) {  	g_system->quit();       // TODO: Consider removing / replacing this!  	return res;  } - diff --git a/backends/platform/n64/osys_n64.h b/backends/platform/n64/osys_n64.h index 354f25a1cf..4788beb1ca 100644 --- a/backends/platform/n64/osys_n64.h +++ b/backends/platform/n64/osys_n64.h @@ -212,4 +212,3 @@ public:  };  #endif /* __OSYS_N64_H__ */ - diff --git a/backends/platform/n64/osys_n64_base.cpp b/backends/platform/n64/osys_n64_base.cpp index 4bc3780fe2..c3adb9691c 100644 --- a/backends/platform/n64/osys_n64_base.cpp +++ b/backends/platform/n64/osys_n64_base.cpp @@ -922,4 +922,3 @@ void OSystem_N64::detectControllers(void) {  inline uint16 colRGB888toBGR555(byte r, byte g, byte b) {  	return ((r >> 3) << 1) | ((g >> 3) << 6) | ((b >> 3) << 11);  } - diff --git a/backends/platform/n64/osys_n64_events.cpp b/backends/platform/n64/osys_n64_events.cpp index 62f11aef64..c83eb194ac 100644 --- a/backends/platform/n64/osys_n64_events.cpp +++ b/backends/platform/n64/osys_n64_events.cpp @@ -439,4 +439,3 @@ bool OSystem_N64::pollEvent(Common::Event &event) {  	return false;  } - diff --git a/backends/platform/n64/osys_n64_utilities.cpp b/backends/platform/n64/osys_n64_utilities.cpp index 0622e6423d..94d727e421 100644 --- a/backends/platform/n64/osys_n64_utilities.cpp +++ b/backends/platform/n64/osys_n64_utilities.cpp @@ -115,4 +115,3 @@ int timer_handler(int t) {  	tm->handler();  	return t;  } - diff --git a/backends/platform/n64/pad_rom.sh b/backends/platform/n64/pad_rom.sh index 085203306f..463eeb4e28 100755 --- a/backends/platform/n64/pad_rom.sh +++ b/backends/platform/n64/pad_rom.sh @@ -10,4 +10,3 @@ REMAINDER=`echo $BASESIZE - $REMAINDER  | bc`  CARTSIZE=`echo $CARTSIZE + $REMAINDER  | bc`  ucon64 -q --n64 --v64 --chk --padn=$CARTSIZE  $1 - diff --git a/backends/platform/n64/pakfs_save_manager.cpp b/backends/platform/n64/pakfs_save_manager.cpp index df9baa4d21..bf2fe8b1bc 100644 --- a/backends/platform/n64/pakfs_save_manager.cpp +++ b/backends/platform/n64/pakfs_save_manager.cpp @@ -70,4 +70,3 @@ Common::StringArray PAKSaveManager::listSavefiles(const Common::String &pattern)  	return list;  } - diff --git a/backends/platform/n64/pakfs_save_manager.h b/backends/platform/n64/pakfs_save_manager.h index 6987801294..e0fcbc1e2d 100644 --- a/backends/platform/n64/pakfs_save_manager.h +++ b/backends/platform/n64/pakfs_save_manager.h @@ -130,4 +130,3 @@ public:  #endif - diff --git a/backends/platform/n64/portdefs.h b/backends/platform/n64/portdefs.h index 35ef3c71db..677ad48477 100644 --- a/backends/platform/n64/portdefs.h +++ b/backends/platform/n64/portdefs.h @@ -49,4 +49,3 @@ typedef signed int int32;  #define SCUMMVM_DONT_DEFINE_TYPES  #endif - diff --git a/backends/platform/openpandora/build/PXML_schema.xsd b/backends/platform/openpandora/build/PXML_schema.xsd index 335efe5002..7c0d635016 100644 --- a/backends/platform/openpandora/build/PXML_schema.xsd +++ b/backends/platform/openpandora/build/PXML_schema.xsd @@ -338,4 +338,4 @@  			</xs:sequence>  		</xs:complexType>  	</xs:element> -</xs:schema>
\ No newline at end of file +</xs:schema> diff --git a/backends/platform/openpandora/build/runscummvm.sh b/backends/platform/openpandora/build/runscummvm.sh index c641235219..9c9d8362cb 100755 --- a/backends/platform/openpandora/build/runscummvm.sh +++ b/backends/platform/openpandora/build/runscummvm.sh @@ -12,4 +12,3 @@ mkdir runtime  cd runtime  ../bin/scummvm --fullscreen  --gfx-mode=2x --config=../scummvm.config  --themepath=../data - diff --git a/backends/platform/ps2/DmaPipe.h b/backends/platform/ps2/DmaPipe.h index fd8f55c154..c99da1c395 100644 --- a/backends/platform/ps2/DmaPipe.h +++ b/backends/platform/ps2/DmaPipe.h @@ -64,4 +64,3 @@ private:  };  #endif //__DMAPIPE_H__ - diff --git a/backends/platform/ps2/Gs2dScreen.cpp b/backends/platform/ps2/Gs2dScreen.cpp index 332b2a3c03..ddc1bdf668 100644 --- a/backends/platform/ps2/Gs2dScreen.cpp +++ b/backends/platform/ps2/Gs2dScreen.cpp @@ -816,5 +816,3 @@ const uint32 Gs2dScreen::_binaryClut[16] __attribute__((aligned(64))) = {  	GS_RGBA(0xFF, 0xFF, 0xFF, 0x80), GS_RGBA(0xFF, 0xFF, 0xFF, 0x80),  	GS_RGBA(0xFF, 0xFF, 0xFF, 0x80), GS_RGBA(0xFF, 0xFF, 0xFF, 0x80)  }; - - diff --git a/backends/platform/ps2/Makefile.gdb b/backends/platform/ps2/Makefile.gdb index 1e2510d3f4..8ca47cd9f1 100644 --- a/backends/platform/ps2/Makefile.gdb +++ b/backends/platform/ps2/Makefile.gdb @@ -102,4 +102,3 @@ all: $(TARGET)  $(TARGET): $(OBJS)  	$(LD) $^ $(LDFLAGS) -o $@ - diff --git a/backends/platform/ps2/Makefile.ps2 b/backends/platform/ps2/Makefile.ps2 index 77cc735c5f..d6ce08ae84 100644 --- a/backends/platform/ps2/Makefile.ps2 +++ b/backends/platform/ps2/Makefile.ps2 @@ -105,4 +105,3 @@ all: $(TARGET)  $(TARGET): $(OBJS)  	$(LD) $^ $(LDFLAGS) -o $@ - diff --git a/backends/platform/ps2/asyncfio.cpp b/backends/platform/ps2/asyncfio.cpp index d3d8eb65c7..3f20349107 100644 --- a/backends/platform/ps2/asyncfio.cpp +++ b/backends/platform/ps2/asyncfio.cpp @@ -237,4 +237,3 @@ bool AsyncFio::fioAvail(void) {  	}  	return retVal;  } - diff --git a/backends/platform/ps2/asyncfio.h b/backends/platform/ps2/asyncfio.h index 26ee3f63dd..31684d4349 100644 --- a/backends/platform/ps2/asyncfio.h +++ b/backends/platform/ps2/asyncfio.h @@ -50,4 +50,3 @@ private:  	volatile int * volatile _runningOp;  	volatile int _ioSlots[MAX_HANDLES];  }; - diff --git a/backends/platform/ps2/eecodyvdfs.c b/backends/platform/ps2/eecodyvdfs.c index e9d4bc6a5c..f410b0c8ec 100644 --- a/backends/platform/ps2/eecodyvdfs.c +++ b/backends/platform/ps2/eecodyvdfs.c @@ -63,5 +63,3 @@ int driveStandby(void) {  		driveStopped = 0;  	return *(int *)sbuff;  } - - diff --git a/backends/platform/ps2/eecodyvdfs.h b/backends/platform/ps2/eecodyvdfs.h index 4b383795c7..1d43fb662f 100644 --- a/backends/platform/ps2/eecodyvdfs.h +++ b/backends/platform/ps2/eecodyvdfs.h @@ -49,4 +49,3 @@ extern "C" {  #endif  #endif - diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h b/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h index ebf57328dd..ad86631cfd 100644 --- a/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h +++ b/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h @@ -131,4 +131,3 @@ typedef struct {  } ISOPvd __attribute__ ((packed));	// 0x800  #endif // __CDTYPES_H__ - diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c index 77a5b93720..e55e62853b 100644 --- a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c +++ b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c @@ -344,4 +344,3 @@ int strnicmp(const char *s1, const char *s2, int n) {  	}  	return 0;  } - diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h index 902065f385..b9f1edc194 100644 --- a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h +++ b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h @@ -81,4 +81,3 @@ int checkDiscReady(int retries);  int strnicmp(const char *s1, const char *s2, int n);  #endif // __MYCDVDFS_H__ - diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c index 8aecece3d9..f0a06f927b 100644 --- a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c +++ b/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c @@ -262,4 +262,3 @@ int cd_dclose(iop_file_t *handle) {  	hd->size = hd->lba = 0;  	return 0;  } - diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.h b/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.h index d0aa9533f2..db942b0b7e 100644 --- a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.h +++ b/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.h @@ -34,4 +34,3 @@ int cd_dread(iop_file_t *handle, fio_dirent_t *buf);  int cd_dclose(iop_file_t *handle);  #endif // __FIOFS_H__ - diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/imports.lst b/backends/platform/ps2/iop/CoDyVDfs/iop/imports.lst index eb85e04462..4950bf8ced 100644 --- a/backends/platform/ps2/iop/CoDyVDfs/iop/imports.lst +++ b/backends/platform/ps2/iop/CoDyVDfs/iop/imports.lst @@ -61,5 +61,3 @@ I_StartThread  I_GetThreadId  I_DelayThread  thbase_IMPORTS_end - - diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c index 3e45a5ff3d..5b760faa06 100644 --- a/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c +++ b/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c @@ -111,5 +111,3 @@ void *rpcServer(int func, void *data, int size) {  	}  	return NULL;  } - - diff --git a/backends/platform/ps2/iop/rpckbd/src/imports.lst b/backends/platform/ps2/iop/rpckbd/src/imports.lst index 41e13e6e73..e9ba01e020 100644 --- a/backends/platform/ps2/iop/rpckbd/src/imports.lst +++ b/backends/platform/ps2/iop/rpckbd/src/imports.lst @@ -55,4 +55,3 @@ I_UsbSetDevicePrivateData  I_UsbTransfer  I_UsbRegisterDriver  usbd_IMPORTS_end - diff --git a/backends/platform/ps2/irxboot.cpp b/backends/platform/ps2/irxboot.cpp index 5072e8a52c..aa904d4f5b 100644 --- a/backends/platform/ps2/irxboot.cpp +++ b/backends/platform/ps2/irxboot.cpp @@ -210,4 +210,3 @@ int loadIrxModules(int device, const char *irxPath, IrxReference **modules) {  		sioprintf("%s\n", resModules[i].path);  	return curModule - resModules;  } - diff --git a/backends/platform/ps2/irxboot.h b/backends/platform/ps2/irxboot.h index ef1bfb1256..81b47a37c6 100644 --- a/backends/platform/ps2/irxboot.h +++ b/backends/platform/ps2/irxboot.h @@ -84,4 +84,3 @@ struct IrxReference {  int loadIrxModules(int device, const char *irxPath, IrxReference **modules);  #endif // __IRXBOOT_H__ - diff --git a/backends/platform/ps2/ps2debug.cpp b/backends/platform/ps2/ps2debug.cpp index 1fc3d50170..300e18316f 100644 --- a/backends/platform/ps2/ps2debug.cpp +++ b/backends/platform/ps2/ps2debug.cpp @@ -44,4 +44,3 @@ void sioprintf(const char *zFormat, ...) {  		pos++;  	}  } - diff --git a/backends/platform/ps2/ps2debug.h b/backends/platform/ps2/ps2debug.h index 127032ae80..02831e0623 100644 --- a/backends/platform/ps2/ps2debug.h +++ b/backends/platform/ps2/ps2debug.h @@ -28,4 +28,3 @@  void sioprintf(const char *zFormat, ...);  #endif // __PS2DEBUG_H__ - diff --git a/backends/platform/ps2/ps2input.cpp b/backends/platform/ps2/ps2input.cpp index 07104a6d97..6f36c5ff90 100644 --- a/backends/platform/ps2/ps2input.cpp +++ b/backends/platform/ps2/ps2input.cpp @@ -545,5 +545,3 @@ const Common::KeyCode Ps2Input::_padFlags[16] = {  	Common::KEYCODE_INVALID,			 //	Cross  	Common::KEYCODE_INVALID				 //	Square  }; - - diff --git a/backends/platform/ps2/ps2input.h b/backends/platform/ps2/ps2input.h index c5d2f5b840..b97daac042 100644 --- a/backends/platform/ps2/ps2input.h +++ b/backends/platform/ps2/ps2input.h @@ -61,4 +61,3 @@ private:  };  #endif // __PS2INPUT_H__ - diff --git a/backends/platform/ps2/ps2mutex.cpp b/backends/platform/ps2/ps2mutex.cpp index 75b3a15482..5b30fa7862 100644 --- a/backends/platform/ps2/ps2mutex.cpp +++ b/backends/platform/ps2/ps2mutex.cpp @@ -97,4 +97,3 @@ void OSystem_PS2::deleteMutex(MutexRef mutex) {  	sysMutex->sema = -1;  	SignalSema(_mutexSema);  } - diff --git a/backends/platform/ps2/ps2pad.cpp b/backends/platform/ps2/ps2pad.cpp index 00512c40c3..eeb9dfbd93 100644 --- a/backends/platform/ps2/ps2pad.cpp +++ b/backends/platform/ps2/ps2pad.cpp @@ -148,5 +148,3 @@ void Ps2Pad::readPad(uint16 *pbuttons, int16 *joyh, int16 *joyv) {  		*pbuttons = 0;  	}  } - - diff --git a/backends/platform/ps2/ps2pad.h b/backends/platform/ps2/ps2pad.h index 16c7c796d3..aebb3c6339 100644 --- a/backends/platform/ps2/ps2pad.h +++ b/backends/platform/ps2/ps2pad.h @@ -63,4 +63,3 @@ private:  };  #endif //__PS2PAD_H__ - diff --git a/backends/platform/ps2/rpckbd.c b/backends/platform/ps2/rpckbd.c index 0d37e4cfcb..0bb45208f5 100644 --- a/backends/platform/ps2/rpckbd.c +++ b/backends/platform/ps2/rpckbd.c @@ -175,4 +175,3 @@ int PS2KbdResetKeymap(void)  	} else  		return -1;  } - diff --git a/backends/platform/ps2/rpckbd.h b/backends/platform/ps2/rpckbd.h index bc94cddf1b..bffd8e5be5 100644 --- a/backends/platform/ps2/rpckbd.h +++ b/backends/platform/ps2/rpckbd.h @@ -47,4 +47,3 @@ extern "C" {  #endif  #endif - diff --git a/backends/platform/ps2/sdlkeys.h b/backends/platform/ps2/sdlkeys.h index b2f783cedd..791b1eb190 100644 --- a/backends/platform/ps2/sdlkeys.h +++ b/backends/platform/ps2/sdlkeys.h @@ -260,5 +260,3 @@ enum SdlKeyCodes {  };  #endif - - diff --git a/backends/platform/psp/Makefile b/backends/platform/psp/Makefile index 899bf37e80..7f4f20446e 100644 --- a/backends/platform/psp/Makefile +++ b/backends/platform/psp/Makefile @@ -201,4 +201,3 @@ SCEkxploit: $(TARGET).elf $(PSP_EBOOT_SFO)  	$(PACK_PBP) "%__SCE__$(TARGET)/$(PSP_EBOOT)" $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON)  \  		$(PSP_EBOOT_ICON1) $(PSP_EBOOT_PIC0) $(PSP_EBOOT_PIC1)  \  		$(PSP_EBOOT_SND0) NULL $(PSP_EBOOT_PSAR) - diff --git a/backends/platform/psp/README.PSP b/backends/platform/psp/README.PSP index dcfa30898c..a101481dca 100644 --- a/backends/platform/psp/README.PSP +++ b/backends/platform/psp/README.PSP @@ -169,4 +169,3 @@ Joost Peters   (joostp@scummvm.org)  Paolo Costabel (paoloc@pacbell.net)  Thomas Mayer   (tommybear@internode.on.net)  Yotam Barnoy   (yotambarnoy@gmail.com) - diff --git a/backends/platform/psp/README.PSP.in b/backends/platform/psp/README.PSP.in index 978f8a60bd..1ee99db84b 100644 --- a/backends/platform/psp/README.PSP.in +++ b/backends/platform/psp/README.PSP.in @@ -169,4 +169,3 @@ Joost Peters   (joostp@scummvm.org)  Paolo Costabel (paoloc@pacbell.net)  Thomas Mayer   (tommybear@internode.on.net)  Yotam Barnoy   (yotambarnoy@gmail.com) - diff --git a/backends/platform/psp/display_manager.cpp b/backends/platform/psp/display_manager.cpp index 422805714f..cdb130e2a0 100644 --- a/backends/platform/psp/display_manager.cpp +++ b/backends/platform/psp/display_manager.cpp @@ -479,4 +479,3 @@ Common::List<Graphics::PixelFormat> DisplayManager::getSupportedPixelFormats() c  	return list;  } - diff --git a/backends/platform/psp/dummy.cpp b/backends/platform/psp/dummy.cpp index 748ac8cbf3..998ecf1488 100644 --- a/backends/platform/psp/dummy.cpp +++ b/backends/platform/psp/dummy.cpp @@ -53,4 +53,4 @@  	getsockopt(0, 0, 0, NULL, NULL);  	return i; -}
\ No newline at end of file +} diff --git a/backends/platform/psp/image_viewer.cpp b/backends/platform/psp/image_viewer.cpp index 1ed7698bc8..98205ddee9 100644 --- a/backends/platform/psp/image_viewer.cpp +++ b/backends/platform/psp/image_viewer.cpp @@ -69,7 +69,7 @@ bool ImageViewer::load(int imageNum) {  	assert(_renderer);  	// Load a PNG into our buffer and palette. Size it by the actual size of the image -	PngLoader image(file, *_buffer, *_palette, Buffer::kSizeBySourceSize); +	PngLoader image(*file, *_buffer, *_palette, Buffer::kSizeBySourceSize);  	PngLoader::Status status = image.allocate();	// allocate the buffers for the file @@ -321,4 +321,4 @@ void ImageViewer::handleEvent(uint32 event) {  		PSP_ERROR("Unknown event %d\n", event);  		break;  	} -}
\ No newline at end of file +} diff --git a/backends/platform/psp/image_viewer.h b/backends/platform/psp/image_viewer.h index ad188536a3..91a70b85cc 100644 --- a/backends/platform/psp/image_viewer.h +++ b/backends/platform/psp/image_viewer.h @@ -99,4 +99,4 @@ public:  	void setDisplayManager(DisplayManager *displayManager) { _displayManager = displayManager; }  }; -#endif /* PSP_IMAGE_VIEWER_H */
\ No newline at end of file +#endif /* PSP_IMAGE_VIEWER_H */ diff --git a/backends/platform/psp/input.cpp b/backends/platform/psp/input.cpp index a9ad441b4d..5e20fb1e43 100644 --- a/backends/platform/psp/input.cpp +++ b/backends/platform/psp/input.cpp @@ -566,5 +566,3 @@ void InputHandler::setButtonsForImageViewer() {  	_nub.getPad().getButton(ButtonPad::BTN_RIGHT, UNSHIFTED).setPspEvent(PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_RIGHT,  		PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_STOP);  } - - diff --git a/backends/platform/psp/memory.h b/backends/platform/psp/memory.h index b5e29af634..5b728460fc 100644 --- a/backends/platform/psp/memory.h +++ b/backends/platform/psp/memory.h @@ -122,5 +122,3 @@ public:  };  #endif /* PSP_INCLUDE_SWAP */ - - diff --git a/backends/platform/psp/mp3.cpp b/backends/platform/psp/mp3.cpp index 266e31e445..3dbf31112a 100644 --- a/backends/platform/psp/mp3.cpp +++ b/backends/platform/psp/mp3.cpp @@ -179,8 +179,7 @@ bool Mp3PspStream::loadStartAudioModule(const char *modname, int partition){  // TODO: make parallel function for unloading the 1.50 modules  Mp3PspStream::Mp3PspStream(Common::SeekableReadStream *inStream, DisposeAfterUse::Flag dispose) : -	_inStream(inStream), -	_disposeAfterUse(dispose), +	_inStream(inStream, dispose),  	_pcmLength(0),  	_posInFrame(0),  	_state(MP3_STATE_INIT), @@ -274,9 +273,6 @@ Mp3PspStream::~Mp3PspStream() {  	deinitStream();  	releaseStreamME(); 	// free the memory used for this stream - -	if (_disposeAfterUse == DisposeAfterUse::YES) -		delete _inStream;  }  void Mp3PspStream::deinitStream() { diff --git a/backends/platform/psp/mp3.h b/backends/platform/psp/mp3.h index 8b01fe4872..f7bfdda254 100644 --- a/backends/platform/psp/mp3.h +++ b/backends/platform/psp/mp3.h @@ -23,6 +23,7 @@  #ifndef SOUND_MP3_PSP_H  #define SOUND_MP3_PSP_H +#include "common/ptr.h"  #include "common/types.h"  #include "common/scummsys.h" @@ -48,8 +49,7 @@ protected:  	byte _codecInBuffer[3072] __attribute__((aligned(64))); // the codec always needs alignment  	unsigned long _codecParams[65]__attribute__((aligned(64)));		// TODO: change to struct -	Common::SeekableReadStream *_inStream; -	DisposeAfterUse::Flag _disposeAfterUse; +	Common::DisposablePtr<Common::SeekableReadStream> _inStream;  	uint32 _pcmLength;		// how many pcm samples we have for this type of file (x2 this for stereo) diff --git a/backends/platform/psp/png_loader.cpp b/backends/platform/psp/png_loader.cpp index 16377539c8..4de13d1e73 100644 --- a/backends/platform/psp/png_loader.cpp +++ b/backends/platform/psp/png_loader.cpp @@ -78,7 +78,7 @@ PngLoader::Status PngLoader::allocate() {  bool PngLoader::load() {  	DEBUG_ENTER_FUNC();  	// Try to load the image -	_file->seek(0);	// Go back to start +	_file.seek(0);	// Go back to start  	if (!loadImageIntoBuffer()) {  		PSP_DEBUG_PRINT("failed to load image\n"); @@ -99,11 +99,9 @@ void PngLoader::warningFn(png_structp png_ptr, png_const_charp warning_msg) {  // Read function for png library to be able to read from our SeekableReadStream  //  void PngLoader::libReadFunc(png_structp pngPtr, png_bytep data, png_size_t length) { -	Common::SeekableReadStream *file; +	Common::SeekableReadStream &file = *(Common::SeekableReadStream *)pngPtr->io_ptr; -	file = (Common::SeekableReadStream *)pngPtr->io_ptr; - -	file->read(data, length); +	file.read(data, length);  }  bool PngLoader::basicImageLoad() { @@ -120,7 +118,7 @@ bool PngLoader::basicImageLoad() {  		return false;  	}  	// Set the png lib to use our read function -	png_set_read_fn(_pngPtr, (void *)_file, libReadFunc); +	png_set_read_fn(_pngPtr, &_file, libReadFunc);  	unsigned int sig_read = 0; diff --git a/backends/platform/psp/png_loader.h b/backends/platform/psp/png_loader.h index 0ff9d8a65d..48a3220d78 100644 --- a/backends/platform/psp/png_loader.h +++ b/backends/platform/psp/png_loader.h @@ -34,7 +34,7 @@ private:  	static void warningFn(png_structp png_ptr, png_const_charp warning_msg);  	static void libReadFunc(png_structp pngPtr, png_bytep data, png_size_t length); -	Common::SeekableReadStream *_file; +	Common::SeekableReadStream &_file;  	Buffer *_buffer;  	Palette *_palette; @@ -57,7 +57,7 @@ public:  		BAD_FILE  	}; -	PngLoader(Common::SeekableReadStream *file, Buffer &buffer, Palette &palette, +	PngLoader(Common::SeekableReadStream &file, Buffer &buffer, Palette &palette,  		Buffer::HowToSize sizeBy = Buffer::kSizeByTextureSize) :  			_file(file), _buffer(&buffer), _palette(&palette),  			_width(0), _height(0), _paletteSize(0), diff --git a/backends/platform/psp/portdefs.h b/backends/platform/psp/portdefs.h index feb0c944ee..e8a28b31e2 100644 --- a/backends/platform/psp/portdefs.h +++ b/backends/platform/psp/portdefs.h @@ -53,5 +53,3 @@  //#define printf  pspDebugScreenPrintf  #endif /* PORTDEFS_H */ - - diff --git a/backends/platform/psp/pspkeyboard.cpp b/backends/platform/psp/pspkeyboard.cpp index 43c4cada15..66efe9145d 100644 --- a/backends/platform/psp/pspkeyboard.cpp +++ b/backends/platform/psp/pspkeyboard.cpp @@ -298,7 +298,7 @@ bool PSPKeyboard::load() {  			goto ERROR;  		} -		PngLoader image(file, _buffers[i], _palettes[i]); +		PngLoader image(*file, _buffers[i], _palettes[i]);  		if (image.allocate() != PngLoader::OK) {  			PSP_ERROR("Failed to allocate memory for keyboard image %s\n", _guiStrings[i]); diff --git a/backends/platform/psp/rtc.cpp b/backends/platform/psp/rtc.cpp index 6c8e919986..cbbb7d3f80 100644 --- a/backends/platform/psp/rtc.cpp +++ b/backends/platform/psp/rtc.cpp @@ -83,4 +83,3 @@ uint32 PspRtc::getMicros() {  	return ticks[0];  } - diff --git a/backends/platform/psp/thread.cpp b/backends/platform/psp/thread.cpp index 5f38a54ab7..57370f7685 100644 --- a/backends/platform/psp/thread.cpp +++ b/backends/platform/psp/thread.cpp @@ -228,4 +228,3 @@ void PspCondition::wait(PspMutex &externalMutex) {          externalMutex.lock();		// must lock external mutex here for continuation  } - diff --git a/backends/platform/psp/thread.h b/backends/platform/psp/thread.h index a2f3b5eda2..ca94b8c82c 100644 --- a/backends/platform/psp/thread.h +++ b/backends/platform/psp/thread.h @@ -105,5 +105,3 @@ enum StackSizes {  };  #endif /* PSP_THREADS_H */ - - diff --git a/backends/platform/psp/trace.cpp b/backends/platform/psp/trace.cpp index b799b4e870..008b508b7e 100644 --- a/backends/platform/psp/trace.cpp +++ b/backends/platform/psp/trace.cpp @@ -148,4 +148,3 @@ void mipsBacktrace(uint32 levels, void **addresses) {  		}  	}  } - diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp index ddfc99570a..d9de4e5e33 100644 --- a/backends/platform/sdl/macosx/macosx.cpp +++ b/backends/platform/sdl/macosx/macosx.cpp @@ -30,6 +30,7 @@  #include "backends/platform/sdl/macosx/macosx.h"  #include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h"  #include "backends/platform/sdl/macosx/appmenu_osx.h" +#include "backends/updates/macosx/macosx-updates.h"  #include "common/archive.h"  #include "common/config-manager.h" @@ -63,6 +64,11 @@ void OSystem_MacOSX::initBackend() {  	// Replace the SDL generated menu items with our own translated ones on Mac OS X  	replaceApplicationMenuItems(); +#ifdef USE_SPARKLE +	// Initialize updates manager +	_updateManager = new MacOSXUpdateManager(); +#endif +  	// Invoke parent implementation of this method  	OSystem_POSIX::initBackend();  } diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index d05cca4d1f..8dff5cec05 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -49,6 +49,7 @@  #include "backends/graphics/surfacesdl/surfacesdl-graphics.h"  #ifdef USE_OPENGL  #include "backends/graphics/openglsdl/openglsdl-graphics.h" +#include "graphics/cursorman.h"  #endif  #include "icons/scummvm.xpm" @@ -174,7 +175,7 @@ void OSystem_SDL::initBackend() {  			// If the gfx_mode is from OpenGL, create the OpenGL graphics manager  			if (use_opengl) { -				_graphicsManager = new OpenGLSdlGraphicsManager(); +				_graphicsManager = new OpenGLSdlGraphicsManager(_eventSource);  				graphicsManagerType = 1;  			}  		} @@ -472,7 +473,8 @@ uint32 OSystem_SDL::getMillis() {  }  void OSystem_SDL::delayMillis(uint msecs) { -	SDL_Delay(msecs); +	if (!g_eventRec.processDelayMillis(msecs)) +		SDL_Delay(msecs);  }  void OSystem_SDL::getTimeAndDate(TimeDate &td) const { @@ -523,6 +525,22 @@ bool OSystem_SDL::setGraphicsMode(int mode) {  		i = _sdlModesCount;  	} +	// Very hacky way to set up the old graphics manager state, in case we +	// switch from SDL->OpenGL or OpenGL->SDL. +	// +	// This is a probably temporary workaround to fix bugs like #3368143 +	// "SDL/OpenGL: Crash when switching renderer backend". +	const int screenWidth = _graphicsManager->getWidth(); +	const int screenHeight = _graphicsManager->getHeight(); +	const bool arState = _graphicsManager->getFeatureState(kFeatureAspectRatioCorrection); +	const bool fullscreen = _graphicsManager->getFeatureState(kFeatureFullscreenMode); +	const bool cursorPalette = _graphicsManager->getFeatureState(kFeatureCursorPalette); +#ifdef USE_RGB_COLOR +	const Graphics::PixelFormat pixelFormat = _graphicsManager->getScreenFormat(); +#endif + +	bool switchedManager = false; +  	// Loop through modes  	while (srcMode->name) {  		if (i == mode) { @@ -534,16 +552,55 @@ bool OSystem_SDL::setGraphicsMode(int mode) {  				_graphicsManager = new SurfaceSdlGraphicsManager(_eventSource);  				((SurfaceSdlGraphicsManager *)_graphicsManager)->initEventObserver();  				_graphicsManager->beginGFXTransaction(); + +				switchedManager = true;  			} else if (_graphicsMode < _sdlModesCount && mode >= _sdlModesCount) {  				debug(1, "switching to OpenGL graphics");  				delete _graphicsManager; -				_graphicsManager = new OpenGLSdlGraphicsManager(); +				_graphicsManager = new OpenGLSdlGraphicsManager(_eventSource);  				((OpenGLSdlGraphicsManager *)_graphicsManager)->initEventObserver();  				_graphicsManager->beginGFXTransaction(); + +				switchedManager = true;  			}  			_graphicsMode = mode; -			return _graphicsManager->setGraphicsMode(srcMode->id); + +			if (switchedManager) { +#ifdef USE_RGB_COLOR +				_graphicsManager->initSize(screenWidth, screenHeight, &pixelFormat); +#else +				_graphicsManager->initSize(screenWidth, screenHeight, 0); +#endif +				_graphicsManager->setFeatureState(kFeatureAspectRatioCorrection, arState); +				_graphicsManager->setFeatureState(kFeatureFullscreenMode, fullscreen); +				_graphicsManager->setFeatureState(kFeatureCursorPalette, cursorPalette); + +				// Worst part about this right now, tell the cursor manager to +				// resetup the cursor + cursor palette if necessarily + +				// First we need to try to setup the old state on the new manager... +				if (_graphicsManager->endGFXTransaction() != kTransactionSuccess) { +					// Oh my god if this failed the client code might just explode. +					return false; +				} + +				// Next setup the cursor again +				CursorMan.pushCursor(0, 0, 0, 0, 0, 0); +				CursorMan.popCursor(); + +				// Next setup cursor palette if needed +				if (cursorPalette) { +					CursorMan.pushCursorPalette(0, 0, 0); +					CursorMan.popCursorPalette(); +				} + +				_graphicsManager->beginGFXTransaction(); +				// Oh my god if this failed the client code might just explode. +				return _graphicsManager->setGraphicsMode(srcMode->id); +			} else { +				return _graphicsManager->setGraphicsMode(srcMode->id); +			}  		}  		i++; diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h index 395b2b3aac..22d79dbfe7 100644 --- a/backends/platform/sdl/sdl.h +++ b/backends/platform/sdl/sdl.h @@ -74,12 +74,6 @@ public:  	virtual void getTimeAndDate(TimeDate &td) const;  	virtual Audio::Mixer *getMixer(); -	// HACK: Special SDL events types -	enum SdlEvent { -		kSdlEventExpose = 100, -		kSdlEventResize = 101 -	}; -  protected:  	bool _inited;  	bool _initedSDL; diff --git a/backends/platform/symbian/.placeholder b/backends/platform/symbian/.placeholder index dcf4d34a62..4af1e27cc7 100644 --- a/backends/platform/symbian/.placeholder +++ b/backends/platform/symbian/.placeholder @@ -1 +1 @@ ->> SumthinWicked *grins* <<
\ No newline at end of file +>> SumthinWicked *grins* << diff --git a/backends/platform/symbian/BuildPackageUpload_AllVersions.pl b/backends/platform/symbian/BuildPackageUpload_AllVersions.pl index 3bdcede76a..3062068852 100644 --- a/backends/platform/symbian/BuildPackageUpload_AllVersions.pl +++ b/backends/platform/symbian/BuildPackageUpload_AllVersions.pl @@ -798,5 +798,3 @@ sub PrintMessage()  }  ################################################################################################################## - - diff --git a/backends/platform/symbian/README b/backends/platform/symbian/README index 1f49c52f02..3e3be592e7 100644 --- a/backends/platform/symbian/README +++ b/backends/platform/symbian/README @@ -177,4 +177,3 @@ Greetz & such  	greetz,  	SumthinWicked & Anotherguest - diff --git a/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg b/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg index 469c815afb..0d22c9d016 100644 --- a/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg +++ b/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg @@ -61,4 +61,4 @@  ""-"!:\system\apps\ScummVM\sdl.ini",FILENULL  ; This install layout will let you upgrade to newer versions wihout loss of scummvm.ini. -; It will remove the config file, std***.txt files & dirs on uninstall.
\ No newline at end of file +; It will remove the config file, std***.txt files & dirs on uninstall. diff --git a/backends/platform/symbian/S60v3/ScummVM_Loc.rss b/backends/platform/symbian/S60v3/ScummVM_Loc.rss index d98ef5ae71..7247ce1207 100644 --- a/backends/platform/symbian/S60v3/ScummVM_Loc.rss +++ b/backends/platform/symbian/S60v3/ScummVM_Loc.rss @@ -19,4 +19,3 @@ RESOURCE LOCALISABLE_APP_INFO  			}  		};  	} - diff --git a/backends/platform/symbian/S60v3/scummvm_A0000658_loc.rss b/backends/platform/symbian/S60v3/scummvm_A0000658_loc.rss index 9273312f42..849e0b017f 100644 --- a/backends/platform/symbian/S60v3/scummvm_A0000658_loc.rss +++ b/backends/platform/symbian/S60v3/scummvm_A0000658_loc.rss @@ -19,4 +19,3 @@ RESOURCE LOCALISABLE_APP_INFO  			}  		};  	} - diff --git a/backends/platform/symbian/S60v3/scummvm_A0000658_reg.rss b/backends/platform/symbian/S60v3/scummvm_A0000658_reg.rss index 1b1cc9e64f..031be012cd 100644 --- a/backends/platform/symbian/S60v3/scummvm_A0000658_reg.rss +++ b/backends/platform/symbian/S60v3/scummvm_A0000658_reg.rss @@ -15,4 +15,3 @@ RESOURCE APP_REGISTRATION_INFO  	// Specify the location of the localisable icon/caption definition file  	localisable_resource_file = "\\Resource\\Apps\\ScummVM_A0000658_loc";  	} - diff --git a/backends/platform/symbian/S60v3/scummvm_reg.rss b/backends/platform/symbian/S60v3/scummvm_reg.rss index 1156694bd7..b5617913d6 100644 --- a/backends/platform/symbian/S60v3/scummvm_reg.rss +++ b/backends/platform/symbian/S60v3/scummvm_reg.rss @@ -15,4 +15,3 @@ RESOURCE APP_REGISTRATION_INFO  	// Specify the location of the localisable icon/caption definition file  	localisable_resource_file = "\\Resource\\Apps\\ScummVM_loc";  	} - diff --git a/backends/platform/symbian/S80/ScummVM_S80.mmp.in b/backends/platform/symbian/S80/ScummVM_S80.mmp.in index efd0d0ee32..5e4b6d447e 100644 --- a/backends/platform/symbian/S80/ScummVM_S80.mmp.in +++ b/backends/platform/symbian/S80/ScummVM_S80.mmp.in @@ -107,4 +107,3 @@ LIBRARY euser.lib apparc.lib fbscli.lib  LIBRARY estlib.lib apgrfx.lib  LIBRARY gdi.lib hal.lib bitgdi.lib  LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib bafl.lib - diff --git a/backends/platform/symbian/S90/Scummvm_S90.mmp.in b/backends/platform/symbian/S90/Scummvm_S90.mmp.in index 4afdb5c62e..06d65f1641 100644 --- a/backends/platform/symbian/S90/Scummvm_S90.mmp.in +++ b/backends/platform/symbian/S90/Scummvm_S90.mmp.in @@ -107,4 +107,3 @@ LIBRARY euser.lib apparc.lib fbscli.lib  LIBRARY estlib.lib apgrfx.lib  LIBRARY gdi.lib hal.lib bitgdi.lib bafl.lib  LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib - diff --git a/backends/platform/symbian/UIQ2/ScummVM.rss b/backends/platform/symbian/UIQ2/ScummVM.rss index 3550d82f7d..374bd50680 100644 --- a/backends/platform/symbian/UIQ2/ScummVM.rss +++ b/backends/platform/symbian/UIQ2/ScummVM.rss @@ -41,4 +41,3 @@ RESOURCE TBUF16 { buf=""; }  RESOURCE EIK_APP_INFO  	{  	} - diff --git a/backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in b/backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in index 4000b1653d..80ba37d694 100644 --- a/backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in +++ b/backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in @@ -106,4 +106,3 @@ LIBRARY qikctl.lib bafl.lib  START WINS  WIN32_LIBRARY	lldiv.obj llmul.obj llshl.obj  END - diff --git a/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg b/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg index ad3a31cb30..8284f64611 100644 --- a/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg +++ b/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg @@ -54,4 +54,4 @@  ; add extra Vibration lib for P800, will be ignored during all other installs  IF MachineUID = 0x101F408B  @"Vibration.sis", (0x101F94A3) -ENDIF
\ No newline at end of file +ENDIF diff --git a/backends/platform/symbian/UIQ3/ScummVM.rss b/backends/platform/symbian/UIQ3/ScummVM.rss index cb47568288..2021b0506e 100644 --- a/backends/platform/symbian/UIQ3/ScummVM.rss +++ b/backends/platform/symbian/UIQ3/ScummVM.rss @@ -48,4 +48,3 @@ RESOURCE EIK_APP_INFO  	}  #include <sdl.ra> - diff --git a/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss b/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss index cb47568288..2021b0506e 100644 --- a/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss +++ b/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss @@ -48,4 +48,3 @@ RESOURCE EIK_APP_INFO  	}  #include <sdl.ra> - diff --git a/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss b/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss index a6ee70ab25..7f3b71ef84 100644 --- a/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss +++ b/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss @@ -82,4 +82,3 @@ RESOURCE LOCALISABLE_APP_INFO  		}  	   };  	} - diff --git a/backends/platform/symbian/UIQ3/scummvm_A0000658_reg.rss b/backends/platform/symbian/UIQ3/scummvm_A0000658_reg.rss index 2158406d0d..68d0d33abd 100644 --- a/backends/platform/symbian/UIQ3/scummvm_A0000658_reg.rss +++ b/backends/platform/symbian/UIQ3/scummvm_A0000658_reg.rss @@ -15,4 +15,3 @@ RESOURCE APP_REGISTRATION_INFO  	// Specify the location of the localisable icon/caption definition file  	localisable_resource_file = "\\Resource\\Apps\\ScummVM_A0000658_loc";  	} - diff --git a/backends/platform/symbian/UIQ3/scummvm_loc.rss b/backends/platform/symbian/UIQ3/scummvm_loc.rss index 201aacefa3..d00a67f3dc 100644 --- a/backends/platform/symbian/UIQ3/scummvm_loc.rss +++ b/backends/platform/symbian/UIQ3/scummvm_loc.rss @@ -56,4 +56,3 @@ RESOURCE LOCALISABLE_APP_INFO  		}  	   };  	} - diff --git a/backends/platform/symbian/UIQ3/scummvm_reg.rss b/backends/platform/symbian/UIQ3/scummvm_reg.rss index 1156694bd7..b5617913d6 100644 --- a/backends/platform/symbian/UIQ3/scummvm_reg.rss +++ b/backends/platform/symbian/UIQ3/scummvm_reg.rss @@ -15,4 +15,3 @@ RESOURCE APP_REGISTRATION_INFO  	// Specify the location of the localisable icon/caption definition file  	localisable_resource_file = "\\Resource\\Apps\\ScummVM_loc";  	} - diff --git a/backends/platform/symbian/mmp/scummvm_base.mmp.in b/backends/platform/symbian/mmp/scummvm_base.mmp.in index 9acef57cea..6a4bba8345 100644 --- a/backends/platform/symbian/mmp/scummvm_base.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_base.mmp.in @@ -156,4 +156,4 @@ SOURCE     backends\vkeybd\virtual-keyboard.cpp  // Downscaler  SOURCE	   graphics\scaler\downscaler.cpp -MACRO SDL_BACKEND
\ No newline at end of file +MACRO SDL_BACKEND diff --git a/backends/platform/symbian/res/ScummVmAif.rss b/backends/platform/symbian/res/ScummVmAif.rss index 31bf7bd394..b2addc3f21 100644 --- a/backends/platform/symbian/res/ScummVmAif.rss +++ b/backends/platform/symbian/res/ScummVmAif.rss @@ -42,6 +42,3 @@ RESOURCE AIF_DATA  	//  	num_icons=2;  	} - - - diff --git a/backends/platform/symbian/src/ScummApp.cpp b/backends/platform/symbian/src/ScummApp.cpp index c4d9fc88d9..405fb5c3c2 100644 --- a/backends/platform/symbian/src/ScummApp.cpp +++ b/backends/platform/symbian/src/ScummApp.cpp @@ -116,5 +116,3 @@ void CScummApp::GetDataFolder(TDes& aDataFolder)  	aDataFolder = _L("ScummVM");  }  ///////////////////////////////////////////////////////////////////////////////////////////////// - - diff --git a/backends/platform/symbian/src/ScummApp.h b/backends/platform/symbian/src/ScummApp.h index 376964f0a1..0b9ebcdf53 100644 --- a/backends/platform/symbian/src/ScummApp.h +++ b/backends/platform/symbian/src/ScummApp.h @@ -48,5 +48,3 @@ public:  #endif  };  #endif - - diff --git a/backends/platform/wii/gdb.txt b/backends/platform/wii/gdb.txt index 4e6c7928c3..0bd2209745 100644 --- a/backends/platform/wii/gdb.txt +++ b/backends/platform/wii/gdb.txt @@ -1,4 +1,3 @@  target remote /dev/ttyUSB0  info threads  bt - diff --git a/backends/platform/wii/main.cpp b/backends/platform/wii/main.cpp index 3965f51b7f..affe053b6a 100644 --- a/backends/platform/wii/main.cpp +++ b/backends/platform/wii/main.cpp @@ -247,4 +247,3 @@ int main(int argc, char *argv[]) {  #ifdef __cplusplus  }  #endif - diff --git a/backends/platform/wii/module.mk b/backends/platform/wii/module.mk index 00eb0d7e49..88e75fba26 100644 --- a/backends/platform/wii/module.mk +++ b/backends/platform/wii/module.mk @@ -12,4 +12,3 @@ MODULE_OBJS := \  MODULE_OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS))  OBJS := $(MODULE_OBJS) $(OBJS)  MODULE_DIRS += $(sort $(dir $(MODULE_OBJS))) - diff --git a/backends/platform/wii/options.cpp b/backends/platform/wii/options.cpp index 8c12ad9b81..ede81343ca 100644 --- a/backends/platform/wii/options.cpp +++ b/backends/platform/wii/options.cpp @@ -315,4 +315,3 @@ void WiiOptionsDialog::save() {  	ConfMan.flushToDisk();  } - diff --git a/backends/platform/wii/options.h b/backends/platform/wii/options.h index 00d42bc2ef..9b500ef29f 100644 --- a/backends/platform/wii/options.h +++ b/backends/platform/wii/options.h @@ -77,4 +77,3 @@ private:  };  #endif - diff --git a/backends/platform/wii/osystem_events.cpp b/backends/platform/wii/osystem_events.cpp index 389d3823e7..3ba66aed89 100644 --- a/backends/platform/wii/osystem_events.cpp +++ b/backends/platform/wii/osystem_events.cpp @@ -451,4 +451,3 @@ bool OSystem_Wii::pollEvent(Common::Event &event) {  	return false;  } - diff --git a/backends/platform/wii/osystem_gfx.cpp b/backends/platform/wii/osystem_gfx.cpp index 443e738a4a..83607984cc 100644 --- a/backends/platform/wii/osystem_gfx.cpp +++ b/backends/platform/wii/osystem_gfx.cpp @@ -747,4 +747,3 @@ void OSystem_Wii::setMouseCursor(const byte *buf, uint w, uint h, int hotspotX,  	if ((_texMouse.palette) && (oldKeycolor != _mouseKeyColor))  		_cursorPaletteDirty = true;  } - diff --git a/backends/platform/wii/osystem_sfx.cpp b/backends/platform/wii/osystem_sfx.cpp index acab6df7e1..2e658e47aa 100644 --- a/backends/platform/wii/osystem_sfx.cpp +++ b/backends/platform/wii/osystem_sfx.cpp @@ -131,4 +131,3 @@ void OSystem_Wii::deinitSfx() {  			free(sound_buffer[i]);  	}  } - diff --git a/backends/platform/wii/wii.mk b/backends/platform/wii/wii.mk index aed30523b2..7d2db68b4e 100644 --- a/backends/platform/wii/wii.mk +++ b/backends/platform/wii/wii.mk @@ -49,4 +49,3 @@ wiiloaddist: wiidist  	$(DEVKITPPC)/bin/wiiload wiidist/scummvm.zip  .PHONY: wiiclean wiiload geckoupload wiigdb wiidebug wiidist wiiloaddist - diff --git a/backends/platform/wince/CEScaler.cpp b/backends/platform/wince/CEScaler.cpp index f07a7ec84b..66f7809a3a 100644 --- a/backends/platform/wince/CEScaler.cpp +++ b/backends/platform/wince/CEScaler.cpp @@ -86,4 +86,3 @@ void SmartphoneLandscape(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, ui  }  #endif - diff --git a/backends/platform/wince/CEgui/CEGUI.h b/backends/platform/wince/CEgui/CEGUI.h index 4e44115476..8b2e3528e3 100644 --- a/backends/platform/wince/CEgui/CEGUI.h +++ b/backends/platform/wince/CEgui/CEGUI.h @@ -24,4 +24,3 @@  #include "Panel.h"  #include "ItemSwitch.h"  #include "PanelKeyboard.h" - diff --git a/backends/platform/wince/CEgui/PanelKeyboard.cpp b/backends/platform/wince/CEgui/PanelKeyboard.cpp index 442d7fc68c..cab02150c5 100644 --- a/backends/platform/wince/CEgui/PanelKeyboard.cpp +++ b/backends/platform/wince/CEgui/PanelKeyboard.cpp @@ -96,4 +96,3 @@ bool PanelKeyboard::action(int x, int y, bool pushed) {  }  } // End of namespace CEGUI - diff --git a/backends/platform/wince/CEkeys/CEKeys.h b/backends/platform/wince/CEkeys/CEKeys.h index ac4907704d..cf71b982f3 100644 --- a/backends/platform/wince/CEkeys/CEKeys.h +++ b/backends/platform/wince/CEkeys/CEKeys.h @@ -21,4 +21,3 @@   */  #include "EventsBuffer.h" - diff --git a/backends/platform/wince/CEkeys/EventsBuffer.cpp b/backends/platform/wince/CEkeys/EventsBuffer.cpp index d5818c3731..c993798dc8 100644 --- a/backends/platform/wince/CEkeys/EventsBuffer.cpp +++ b/backends/platform/wince/CEkeys/EventsBuffer.cpp @@ -76,5 +76,3 @@ bool EventsBuffer::simulateMouseRightClick(int x, int y, bool pushed) {  	return (SDL_PushEvent(&ev) == 0);  }  } - - diff --git a/backends/platform/wince/missing/assert.h b/backends/platform/wince/missing/assert.h index 734b8f9482..e9c871da60 100644 --- a/backends/platform/wince/missing/assert.h +++ b/backends/platform/wince/missing/assert.h @@ -6,4 +6,3 @@ void CDECL _declspec(noreturn) error(const char *s, ...);  #define assert(e) ((e) ? 0 : (::error("Assertion failed %s (%s, %d)", #e, __FILE__, __LINE__)))  #define abort() ::error("Abort (%s, %d)", __FILE__, __LINE__) - diff --git a/backends/platform/wince/missing/io.h b/backends/platform/wince/missing/io.h index de492cac68..b2cb2abd8e 100644 --- a/backends/platform/wince/missing/io.h +++ b/backends/platform/wince/missing/io.h @@ -9,4 +9,3 @@ typedef void FILE;  #endif  FILE *wce_fopen(const char *fname, const char *fmode);  #define fopen wce_fopen -  | 
