diff options
Diffstat (limited to 'backends/platform')
| -rw-r--r-- | backends/platform/android/android.cpp | 44 | ||||
| -rw-r--r-- | backends/platform/android/android.h | 3 | 
2 files changed, 20 insertions, 27 deletions
| diff --git a/backends/platform/android/android.cpp b/backends/platform/android/android.cpp index 461b863df8..beb9516fea 100644 --- a/backends/platform/android/android.cpp +++ b/backends/platform/android/android.cpp @@ -54,6 +54,7 @@  #include "common/config-manager.h"  #include "backends/keymapper/keymapper.h" +#include "backends/mutex/pthread/pthread-mutex.h"  #include "backends/saves/default/default-saves.h"  #include "backends/timer/default/default-timer.h" @@ -132,10 +133,11 @@ OSystem_Android::OSystem_Android(int audio_sample_rate, int audio_buffer_size) :  	_show_mouse(false),  	_show_overlay(false),  	_enable_zoning(false), +	_mutexManager(0),  	_mixer(0),  	_shake_offset(0),  	_queuedEventTime(0), -	_event_queue_lock(createMutex()), +	_event_queue_lock(0),  	_touch_pt_down(),  	_touch_pt_scroll(),  	_touch_pt_dt(), @@ -180,6 +182,9 @@ OSystem_Android::~OSystem_Android() {  	_timerManager = 0;  	deleteMutex(_event_queue_lock); + +	delete _mutexManager; +	_mutexManager = 0;  }  void *OSystem_Android::timerThreadFunc(void *arg) { @@ -366,8 +371,11 @@ void OSystem_Android::initBackend() {  	// screen. Passing the savepath in this way makes it stick  	// (via ConfMan.registerDefault)  	_savefileManager = new DefaultSaveFileManager(ConfMan.get("savepath")); +	_mutexManager = new PthreadMutexManager();  	_timerManager = new DefaultTimerManager(); +	_event_queue_lock = createMutex(); +  	gettimeofday(&_startTime, 0);  	_mixer = new Audio::MixerImpl(this, _audio_sample_rate); @@ -470,41 +478,23 @@ void OSystem_Android::delayMillis(uint msecs) {  }  OSystem::MutexRef OSystem_Android::createMutex() { -	pthread_mutexattr_t attr; - -	pthread_mutexattr_init(&attr); -	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - -	pthread_mutex_t *mutex = new pthread_mutex_t; - -	if (pthread_mutex_init(mutex, &attr) != 0) { -		warning("pthread_mutex_init() failed"); - -		delete mutex; - -		return 0; -	} - -	return (MutexRef)mutex; +	assert(_mutexManager); +	return _mutexManager->createMutex();  }  void OSystem_Android::lockMutex(MutexRef mutex) { -	if (pthread_mutex_lock((pthread_mutex_t *)mutex) != 0) -		warning("pthread_mutex_lock() failed"); +	assert(_mutexManager); +	_mutexManager->lockMutex(mutex);  }  void OSystem_Android::unlockMutex(MutexRef mutex) { -	if (pthread_mutex_unlock((pthread_mutex_t *)mutex) != 0) -		warning("pthread_mutex_unlock() failed"); +	assert(_mutexManager); +	_mutexManager->unlockMutex(mutex);  }  void OSystem_Android::deleteMutex(MutexRef mutex) { -	pthread_mutex_t *m = (pthread_mutex_t *)mutex; - -	if (pthread_mutex_destroy(m) != 0) -		warning("pthread_mutex_destroy() failed"); -	else -		delete m; +	assert(_mutexManager); +	_mutexManager->deleteMutex(mutex);  }  void OSystem_Android::quit() { diff --git a/backends/platform/android/android.h b/backends/platform/android/android.h index 3b33247be1..9f91a65b55 100644 --- a/backends/platform/android/android.h +++ b/backends/platform/android/android.h @@ -96,6 +96,8 @@ extern void checkGlError(const char *expr, const char *file, int line);  #define GLTHREADCHECK do {  } while (false)  #endif +class MutexManager; +  class OSystem_Android : public EventsBaseBackend, public PaletteManager {  private:  	// passed from the dark side @@ -145,6 +147,7 @@ private:  	bool _enable_zoning;  	bool _virtkeybd_on; +	MutexManager *_mutexManager;  	Audio::MixerImpl *_mixer;  	timeval _startTime; | 
