diff options
| -rw-r--r-- | backends/PalmOS/Src/palm.cpp | 27 | ||||
| -rw-r--r-- | backends/PalmOS/Src/palm.h | 24 | ||||
| -rw-r--r-- | backends/dc/audio.cpp | 2 | ||||
| -rw-r--r-- | backends/dc/dc.h | 9 | ||||
| -rw-r--r-- | backends/dc/dcmain.cpp | 5 | ||||
| -rw-r--r-- | backends/dc/time.cpp | 2 | ||||
| -rw-r--r-- | backends/gp32/gp32.cpp | 7 | ||||
| -rw-r--r-- | backends/gp32/gp32.h | 7 | ||||
| -rw-r--r-- | backends/morphos/morphos.cpp | 27 | ||||
| -rw-r--r-- | backends/morphos/morphos.h | 12 | ||||
| -rw-r--r-- | backends/null/null.cpp | 3 | ||||
| -rw-r--r-- | backends/sdl/sdl-common.cpp | 8 | ||||
| -rw-r--r-- | backends/sdl/sdl-common.h | 8 | ||||
| -rw-r--r-- | backends/wince/wince.cpp | 18 | ||||
| -rw-r--r-- | backends/wince/wince.h | 10 | ||||
| -rw-r--r-- | backends/x11/x11.cpp | 21 | ||||
| -rw-r--r-- | common/system.h | 23 | ||||
| -rw-r--r-- | common/timer.cpp | 2 | 
18 files changed, 47 insertions, 168 deletions
diff --git a/backends/PalmOS/Src/palm.cpp b/backends/PalmOS/Src/palm.cpp index a1bf3a760a..a9e4ef0691 100644 --- a/backends/PalmOS/Src/palm.cpp +++ b/backends/PalmOS/Src/palm.cpp @@ -646,22 +646,7 @@ void OSystem_PALMOS::delay_msecs(uint msecs) {  	SysTaskDelay((SysTicksPerSecond()*msecs)/1000);  } -void OSystem_PALMOS::create_thread(ThreadProc *proc, void *param) { -	if (_threadCounter == MAX_THREAD) { -		warning("Cannot create thread."); -		return; -	} - -	_thread[_threadCounter].active = true; -	_thread[_threadCounter].proc = proc; -	_thread[_threadCounter].param = param; -	_thread[_threadCounter].old_time = get_msecs(); -	_thread[_threadCounter].sleep = true; - -	_threadCounter++; -} - -void OSystem_PALMOS::set_timer(int timer, int (*callback)(int)) { +void OSystem_PALMOS::set_timer(TimerProc callback, int timer) {  	if (callback != NULL) {  		_timer.duration = timer;  		_timer.next_expiry = get_msecs() + timer; @@ -729,11 +714,6 @@ bool OSystem_PALMOS::poll_event(Event *event) {  	}  	current_msecs = get_msecs(); -	//thread handler -	for(_threadID = 0; _threadID < _threadCounter; _threadID++) { -		if (_thread[_threadID].active) -			_thread[_threadID].proc(_thread[_threadID].param); -	}  	// sound handler  	if(_sound.active) @@ -1242,9 +1222,6 @@ OSystem_PALMOS::OSystem_PALMOS() {  	_paletteDirtyEnd = 0;  	memset(&_sound, 0, sizeof(SoundDataType)); -	memset(_thread, 0, sizeof(_thread)); -	_threadID = 0; -	_threadCounter = 0;  	_currentPalette = NULL; @@ -1350,7 +1327,7 @@ void OSystem_PALMOS::move_screen(int dx, int dy, int height) {  	SysTaskDelay(1);  } -bool OSystem_PALMOS::set_sound_proc(SoundProc *proc, void *param, SoundFormat format) { +bool OSystem_PALMOS::set_sound_proc(SoundProc proc, void *param, SoundFormat format) {  	_sound.active = true;  	_sound.proc = proc;  	_sound.param = param; diff --git a/backends/PalmOS/Src/palm.h b/backends/PalmOS/Src/palm.h index f2d157e623..e9d6fc93d6 100644 --- a/backends/PalmOS/Src/palm.h +++ b/backends/PalmOS/Src/palm.h @@ -31,20 +31,9 @@ Err HwrDisplayPalette(UInt8 operation, Int16 startIndex,  			 	  			 UInt16 paletteEntries, RGBColorType *tableP)  							SYS_TRAP(sysTrapHwrDisplayPalette); -#define MAX_THREAD	2 - -typedef struct { -		bool active; -		OSystem::ThreadProc *proc; -		void *param; -		bool sleep; -		int old_time; - -} ThreadEmuType, *ThreadEmuPtr; -  typedef struct {  	bool active;	 -	OSystem::SoundProc *proc; +	OSystem::SoundProc proc;  	void *param;  	OSystem::SoundFormat format;  	SndStreamRef sndRefNum; @@ -95,9 +84,6 @@ public:  	// Delay for a specified amount of milliseconds  	void delay_msecs(uint msecs); -	// Create a thread -	void create_thread(ThreadProc *proc, void *param); -	  	// Get the next event.  	// Returns true if an event was retrieved.	  	bool poll_event(Event *event); @@ -113,7 +99,7 @@ public:  	 * @param param		an arbitrary parameter which is stored and passed to proc.  	 * @param format	the sample type format.  	 */ -	bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format); +	bool set_sound_proc(SoundProc proc, void *param, SoundFormat format);  	/**  	 * Remove any audio callback previously set via set_sound_proc, thus effectively @@ -137,7 +123,7 @@ public:  	void update_cdrom();  	// Add a callback timer -	void set_timer(int timer, int (*callback)(int)); +	void set_timer(TimerProc callback, int timer);  	// Mutex handling  	MutexRef create_mutex(); @@ -200,10 +186,6 @@ public:  	int _offScreenPitch;  	int _screenPitch; -	ThreadEmuType _thread[MAX_THREAD];	// 0: midi native, 1:multi-midi (adlib wrapper) -	UInt8 _threadCounter; -	UInt8 _threadID; -  private:  	byte *_offScreenP; diff --git a/backends/dc/audio.cpp b/backends/dc/audio.cpp index 22c1015189..12a66dec9c 100644 --- a/backends/dc/audio.cpp +++ b/backends/dc/audio.cpp @@ -34,7 +34,7 @@ void initSound()    do_sound_command(CMD_SET_BUFFER(3));  } -bool OSystem_Dreamcast::set_sound_proc(SoundProc *proc, void *param, SoundFormat format) +bool OSystem_Dreamcast::set_sound_proc(SoundProc proc, void *param, SoundFormat format)  {  #if SAMPLE_MODE == 0    assert(format == SOUND_16BIT); diff --git a/backends/dc/dc.h b/backends/dc/dc.h index e022976de9..e2839396c6 100644 --- a/backends/dc/dc.h +++ b/backends/dc/dc.h @@ -44,15 +44,12 @@ class OSystem_Dreamcast : public OSystem {    // Delay for a specified amount of milliseconds    void delay_msecs(uint msecs); -  // Create a thread -  void create_thread(ThreadProc *proc, void *param); -	    // Get the next event.    // Returns true if an event was retrieved.	    bool poll_event(Event *event);    // Set function that generates samples  -  bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format); +  bool set_sound_proc(SoundProc proc, void *param, SoundFormat format);    void clear_sound_proc();    // Poll cdrom status @@ -82,7 +79,7 @@ class OSystem_Dreamcast : public OSystem {    void copy_rect_overlay(const int16 *buf, int pitch, int x, int y, int w, int h);    // Add a callback timer -  virtual void set_timer(int timer, int (*callback)(int)); +  virtual void set_timer(TimerProc callback, int timer);    // Mutex handling    virtual MutexRef create_mutex(); @@ -104,7 +101,7 @@ class OSystem_Dreamcast : public OSystem {    int _current_shake_pos, _screen_w, _screen_h;    int _overlay_x, _overlay_y;    unsigned char *_ms_buf; -  SoundProc *_sound_proc; +  SoundProc _sound_proc;    void *_sound_proc_param;    bool _overlay_visible, _overlay_dirty, _screen_dirty;    int _screen_buffer, _overlay_buffer, _mouse_buffer; diff --git a/backends/dc/dcmain.cpp b/backends/dc/dcmain.cpp index a9c758a578..bca55bcc25 100644 --- a/backends/dc/dcmain.cpp +++ b/backends/dc/dcmain.cpp @@ -127,11 +127,6 @@ void OSystem_Dreamcast::quit() {    exit(0);  } -void OSystem_Dreamcast::create_thread(ThreadProc *proc, void *param) { -  warning("Creating a thread! (not supported.)\n"); -} - -  /* Mutex handling */  OSystem::MutexRef OSystem_Dreamcast::create_mutex()  { diff --git a/backends/dc/time.cpp b/backends/dc/time.cpp index d0dda69b8c..3821294238 100644 --- a/backends/dc/time.cpp +++ b/backends/dc/time.cpp @@ -53,7 +53,7 @@ void OSystem_Dreamcast::delay_msecs(uint msecs)    get_msecs();  } -void OSystem_Dreamcast::set_timer(int timer, int (*callback)(int)) +void OSystem_Dreamcast::set_timer(TimerProc callback, int timer)  {    if (callback != NULL) {      _timer_duration = timer; diff --git a/backends/gp32/gp32.cpp b/backends/gp32/gp32.cpp index e78f185aa5..5eba66274a 100644 --- a/backends/gp32/gp32.cpp +++ b/backends/gp32/gp32.cpp @@ -858,9 +858,6 @@ void OSystem_GP32::delay_msecs(uint msecs) {  	while ( ( GpTickCountGet() - n ) < msecs) ;  } -// Create a thread -void OSystem_GP32::create_thread(ThreadProc *proc, void *param) { } -	  // Get the next event.  // Returns true if an event was retrieved.	 @@ -979,7 +976,7 @@ bool OSystem_GP32::poll_event(Event *event) { 	// fixme: make more user-friendly  // Set the function to be invoked whenever samples need to be generated  // Format is the sample type format.  // Only 16-bit signed mode is needed for simon & scumm -bool OSystem_GP32::set_sound_proc(SoundProc *proc, void *param, SoundFormat format) {  +bool OSystem_GP32::set_sound_proc(SoundProc proc, void *param, SoundFormat format) {   	return false;   } @@ -1076,7 +1073,7 @@ void OSystem_GP32::stop_cdrom() { }  void OSystem_GP32::update_cdrom() { }  // Add a new callback timer -void OSystem_GP32::set_timer(int timer, int (*callback)(int)) { } +void OSystem_GP32::set_timer(TimerProc callback, int timer) { }  // Mutex handling  OSystem::MutexRef OSystem_GP32::create_mutex() { diff --git a/backends/gp32/gp32.h b/backends/gp32/gp32.h index 0b3f3dd338..0faf3f0cf2 100644 --- a/backends/gp32/gp32.h +++ b/backends/gp32/gp32.h @@ -73,9 +73,6 @@ public:  	// Delay for a specified amount of milliseconds  	void delay_msecs(uint msecs); -	// Create a thread -	void create_thread(ThreadProc *proc, void *param); -	  	// Get the next event.  	// Returns true if an event was retrieved.	  	bool poll_event(Event *event); @@ -83,7 +80,7 @@ public:  	// Set the function to be invoked whenever samples need to be generated  	// Format is the sample type format.  	// Only 16-bit signed mode is needed for simon & scumm -	bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format); +	bool set_sound_proc(SoundProc proc, void *param, SoundFormat format);  	void clear_sound_proc();  	// Get or set a property @@ -103,7 +100,7 @@ public:  	void update_cdrom();  	// Add a new callback timer -	void set_timer(int timer, int (*callback)(int)); +	void set_timer(TimerProc callback, int timer);  	// Mutex handling  	OSystem::MutexRef create_mutex(); diff --git a/backends/morphos/morphos.cpp b/backends/morphos/morphos.cpp index d565a57d6c..c98a8d305d 100644 --- a/backends/morphos/morphos.cpp +++ b/backends/morphos/morphos.cpp @@ -97,7 +97,6 @@ OSystem_MorphOS::OSystem_MorphOS(SCALERTYPE gfx_mode, bool full_screen)  	ScummScreenBuffer[1] = NULL;  	ScummRenderTo = NULL;  	ScummNoCursor = NULL; -	ScummMusicThread = NULL;  	ScummSoundThread = NULL;  	ScummWinX = -1;  	ScummWinY = -1; @@ -323,24 +322,11 @@ void OSystem_MorphOS::delay_msecs(uint msecs)     TimeDelay(UNIT_MICROHZ, 0, msecs*1000);  } -void OSystem_MorphOS::set_timer(int timer, int (*callback)(int)) +void OSystem_MorphOS::set_timer(TimerProc callback, int timer)  {  	warning("set_timer() unexpectedly called");  } -void OSystem_MorphOS::create_thread(ThreadProc *proc, void *param) -{ -	MusicStartup.mn_Node.ln_Type = NT_MESSAGE; -	MusicStartup.mn_ReplyPort = ThreadPort; -	MusicStartup.mn_Length = sizeof(MusicStartup); - -	ScummMusicThread = CreateNewProcTags(NP_Entry, (ULONG) proc, NP_CodeType, CODETYPE_PPC, -													 NP_Name, (ULONG) "ScummVM Music Thread", -													 NP_Priority, 40, NP_StackSize, 32000, -													 NP_StartupMsg, &MusicStartup, -													 NP_PPC_Arg1, (ULONG) param, TAG_DONE); -} -  OSystem::MutexRef OSystem_MorphOS::create_mutex()  {  	SignalSemaphore *sem = (SignalSemaphore *) AllocVec(sizeof (SignalSemaphore), MEMF_PUBLIC); @@ -518,13 +504,6 @@ void OSystem_MorphOS::quit()  {  	int num_threads = 0; -	if (ScummMusicThread) -	{ -		num_threads++; -		Signal((Task *) ScummMusicThread, SIGBREAKF_CTRL_C); -		ScummMusicThread = NULL; -	} -  	if (ScummSoundThread)  	{  		num_threads++; @@ -532,6 +511,8 @@ void OSystem_MorphOS::quit()  		ScummSoundThread = NULL;  	} +	// TODO: this code could probably greatly simplified now that there is +	// only one thread left...  	while (num_threads > 0)  	{  		Message* msg; @@ -1463,7 +1444,7 @@ void OSystem_MorphOS::set_mouse_cursor(const byte *buf, uint w, uint h, int hots  	UndrawMouse();  } -bool OSystem_MorphOS::set_sound_proc(OSystem::SoundProc *proc, void *param, OSystem::SoundFormat format) +bool OSystem_MorphOS::set_sound_proc(OSystem::SoundProc proc, void *param, OSystem::SoundFormat format)  {  	if (ScummSoundThread)  	{ diff --git a/backends/morphos/morphos.h b/backends/morphos/morphos.h index 3164af83b4..deea09bbf7 100644 --- a/backends/morphos/morphos.h +++ b/backends/morphos/morphos.h @@ -37,7 +37,7 @@  class OSystem_MorphOS : public OSystem  {  	public: -					OSystem_MorphOS(SCALERTYPE gfx_mode, bool full_screen); +		OSystem_MorphOS(SCALERTYPE gfx_mode, bool full_screen);  		virtual ~OSystem_MorphOS();  		bool Initialise(); @@ -85,7 +85,7 @@ class OSystem_MorphOS : public OSystem  		virtual void delay_msecs(uint msecs);  		// Add a new callback timer -		virtual void set_timer(int timer, int (*callback)(int)); +		virtual void set_timer(TimerProc callback, int timer);  		// Mutex handling  		virtual MutexRef create_mutex(); @@ -93,9 +93,6 @@ class OSystem_MorphOS : public OSystem  		virtual void unlock_mutex(MutexRef mutex);  		virtual void delete_mutex(MutexRef mutex); -		// Create a thread -		virtual void create_thread(ThreadProc *proc, void *param); -  		// Get the next event.  		// Returns true if an event was retrieved.  		virtual bool poll_event(Event *event); @@ -104,7 +101,7 @@ class OSystem_MorphOS : public OSystem  		virtual void warp_mouse(int x, int y);  		// Set the function to be invoked whenever samples need to be generated -		virtual bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format); +		virtual bool set_sound_proc(SoundProc proc, void *param, SoundFormat format);  				  void fill_sound    (byte * stream, int len);  				  void clear_sound_proc(); @@ -180,9 +177,8 @@ class OSystem_MorphOS : public OSystem  		ColorMap *OvlCMap;  		/* Sound-related attributes */ -		Process   *ScummMusicThread;  		Process 	 *ScummSoundThread; -		SoundProc *SoundProc; +		SoundProc SoundProc;  		void      *SoundParam;  		MsgPort	 *ThreadPort;  		Message 	  MusicStartup; diff --git a/backends/null/null.cpp b/backends/null/null.cpp index b4eb5f87c9..6e2f870709 100644 --- a/backends/null/null.cpp +++ b/backends/null/null.cpp @@ -40,9 +40,8 @@ public:  	void set_shake_pos(int shake_pos) {}  	uint32 get_msecs();  	void delay_msecs(uint msecs); -	void create_thread(ThreadProc *proc, void *param) { }  	bool poll_event(Event *event) { return false; } -	bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format) {} +	bool set_sound_proc(SoundProc proc, void *param, SoundFormat format) {}  	void quit() { exit(1); }  	uint32 property(int param, Property *value) { return 0; }  	static OSystem *create(int gfx_mode, bool full_screen); diff --git a/backends/sdl/sdl-common.cpp b/backends/sdl/sdl-common.cpp index 7a407ad385..ecfc114844 100644 --- a/backends/sdl/sdl-common.cpp +++ b/backends/sdl/sdl-common.cpp @@ -83,7 +83,7 @@ void OSystem_SDL_Common::init_intern(int gfx_mode, bool full_screen, bool aspect  	}  } -void OSystem_SDL_Common::set_timer(int timer, int (*callback)(int)) { +void OSystem_SDL_Common::set_timer(TimerProc callback, int timer) {  	SDL_SetTimer(timer, (SDL_TimerCallback) callback);  } @@ -507,10 +507,6 @@ void OSystem_SDL_Common::delay_msecs(uint msecs) {  	SDL_Delay(msecs);  } -void OSystem_SDL_Common::create_thread(ThreadProc *proc, void *param) { -	SDL_CreateThread(proc, param); -} -  static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode)  {  	if (key >= SDLK_F1 && key <= SDLK_F9) { @@ -900,7 +896,7 @@ bool OSystem_SDL_Common::poll_event(Event *event) {  	return false;  } -bool OSystem_SDL_Common::set_sound_proc(SoundProc *proc, void *param, SoundFormat format) { +bool OSystem_SDL_Common::set_sound_proc(SoundProc proc, void *param, SoundFormat format) {  	SDL_AudioSpec desired;  	memset(&desired, 0, sizeof(desired)); diff --git a/backends/sdl/sdl-common.h b/backends/sdl/sdl-common.h index a36ea2dbff..78ecba892b 100644 --- a/backends/sdl/sdl-common.h +++ b/backends/sdl/sdl-common.h @@ -28,7 +28,6 @@  #include "backends/intern.h"  #include <SDL.h> -#include <SDL_thread.h>  class OSystem_SDL_Common : public OSystem {  public: @@ -68,15 +67,12 @@ public:  	// Delay for a specified amount of milliseconds  	void delay_msecs(uint msecs); -	// Create a thread -	void create_thread(ThreadProc *proc, void *param); -  	// Get the next event.  	// Returns true if an event was retrieved.	  	bool poll_event(Event *event);  	// Set function that generates samples  -	bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format); +	bool set_sound_proc(SoundProc proc, void *param, SoundFormat format);  	void clear_sound_proc(); @@ -100,7 +96,7 @@ public:  	uint32 property(int param, Property *value);  	// Add a callback timer -	void set_timer(int timer, int (*callback)(int)); +	void set_timer(TimerProc callback, int timer);  	// Mutex handling  	MutexRef create_mutex(); diff --git a/backends/wince/wince.cpp b/backends/wince/wince.cpp index 86fe31a486..86e3ec8043 100644 --- a/backends/wince/wince.cpp +++ b/backends/wince/wince.cpp @@ -64,9 +64,6 @@ typedef struct  #define CURRENT_KEYS_VERSION 3 -typedef int (*tTimeCallback)(int); -typedef void SoundProc(void *param, byte *buf, int len); -  // Dynamically linked Aygshell  typedef BOOL (*tSHFullScreen)(HWND,DWORD);  //typedef BOOL (WINSHELLAPI *tSHHandleWMSettingChange)(HWND,WPARAM,LPARAM,SHACTIVATEINFO*); @@ -371,7 +368,7 @@ extern Scumm *g_scumm;  //OSystem *g_system;  //SoundMixer *g_mixer;  Config *g_config; -tTimeCallback timer_callback; +OSystem::TimerProc timer_callback;  int timer_interval;  tSHFullScreen dynamicSHFullScreen = NULL; @@ -444,7 +441,7 @@ dirty_square ds[MAX_NUMBER_OF_DIRTY_SQUARES];  int num_of_dirty_square; -SoundProc *real_soundproc; +OSystem::SoundProc real_soundproc;  extern void startFindGame();  extern void displayGameInfo(); @@ -1347,7 +1344,7 @@ OSystem *OSystem_WINCE3_create() {  	return OSystem_WINCE3::create(0, 0);  } -void OSystem_WINCE3::set_timer(int timer, int (*callback)(int)) { +void OSystem_WINCE3::set_timer(TimerProc callback, int timer) {  	if (!SetTimer(hWnd, 1, timer, NULL))  		exit(1);  	timer_interval = timer; @@ -1705,13 +1702,6 @@ void OSystem_WINCE3::delay_msecs(uint msecs) {  	Sleep(msecs);  } -void OSystem_WINCE3::create_thread(ThreadProc *proc, void *param) { -	// needed for emulated MIDI support (Sam'n'Max) -	HANDLE handle; -	handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)proc, param, 0, NULL); -	SetThreadPriority(handle, THREAD_PRIORITY_NORMAL); -} -  int mapKey(int key, byte mod)  {  	if (key>=VK_F1 && key<=VK_F9) { @@ -1763,7 +1753,7 @@ void own_soundProc(void *buffer, byte *samples, int len) {  		memset(samples, 0, len);  } -bool OSystem_WINCE3::set_sound_proc(SoundProc *proc, void *param, SoundFormat format) { +bool OSystem_WINCE3::set_sound_proc(SoundProc proc, void *param, SoundFormat format) {  	SDL_AudioSpec desired;  	/* only one format supported at the moment */ diff --git a/backends/wince/wince.h b/backends/wince/wince.h index 1c9bb4bd9a..d4cd0660da 100644 --- a/backends/wince/wince.h +++ b/backends/wince/wince.h @@ -50,9 +50,6 @@  #include "SDL.h" -#include "SDL_audio.h" -#include "SDL_timer.h" -#include "SDL_thread.h"  #include "dynamic_imports.h" @@ -108,15 +105,12 @@ public:  	// Delay for a specified amount of milliseconds  	void delay_msecs(uint msecs); -	// Create a thread -	void create_thread(ThreadProc *proc, void *param); -	  	// Get the next event.  	// Returns true if an event was retrieved.	  	bool poll_event(Event *event);  	// Set function that generates samples  -	bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format); +	bool set_sound_proc(SoundProc proc, void *param, SoundFormat format);  	// Poll cdrom status  	// Returns true if cd audio is playing @@ -132,7 +126,7 @@ public:  	void update_cdrom();  	// Add a new callback timer -	void set_timer(int timer, int (*callback)(int)); +	void set_timer(TimerProc callback, int timer);  	// Quit  	void quit(); diff --git a/backends/x11/x11.cpp b/backends/x11/x11.cpp index 37b3ec69a4..e8a73321a3 100644 --- a/backends/x11/x11.cpp +++ b/backends/x11/x11.cpp @@ -89,15 +89,12 @@ public:  	// Delay for a specified amount of milliseconds  	void delay_msecs(uint msecs); -	// Create a thread -	void create_thread(ThreadProc *proc, void *param); -  	// Get the next event.  	// Returns true if an event was retrieved.    	bool poll_event(Event *event);  	// Set function that generates samples  -	bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format); +	bool set_sound_proc(SoundProc proc, void *param, SoundFormat format);  	void clear_sound_proc(); @@ -121,7 +118,7 @@ public:  	uint32 property(int param, Property *value);  	// Add a callback timer -	void set_timer(int timer, int (*callback) (int)); +	void set_timer(TimerProc callback, int interval);  	// Mutex handling  	MutexRef create_mutex(); @@ -199,7 +196,7 @@ private:  };  typedef struct { -	OSystem::SoundProc *sound_proc; +	OSystem::SoundProc sound_proc;  	void *param;  	byte format;  } THREAD_PARAM; @@ -212,7 +209,7 @@ static void *sound_and_music_thread(void *params)  	/* Init sound */  	int sound_fd, param, frag_size;  	uint8 sound_buffer[FRAG_SIZE]; -	OSystem::SoundProc *sound_proc = ((THREAD_PARAM *) params)->sound_proc; +	OSystem::SoundProc sound_proc = ((THREAD_PARAM *) params)->sound_proc;  	void *proc_param = ((THREAD_PARAM *) params)->param;  #ifdef CAPTURE_SOUND @@ -441,7 +438,7 @@ void OSystem_X11::init_size(uint w, uint h)  	palette = (uint16 *)calloc(256, sizeof(uint16));  } -bool OSystem_X11::set_sound_proc(SoundProc *proc, void *param, SoundFormat format) +bool OSystem_X11::set_sound_proc(SoundProc proc, void *param, SoundFormat format)  {  	static THREAD_PARAM thread_param; @@ -779,12 +776,6 @@ void OSystem_X11::set_shake_pos(int shake_pos)  	new_shake_pos = shake_pos;  } -void OSystem_X11::create_thread(ThreadProc *proc, void *param) -{ -	pthread_t *thread = (pthread_t *) malloc(sizeof(pthread_t)); -	pthread_create(thread, NULL, (void *(*)(void *))proc, param); -} -  uint32 OSystem_X11::property(int param, Property *value)  {  	switch (param) { @@ -1029,7 +1020,7 @@ bool OSystem_X11::poll_event(Event *scumm_event)  	return false;  } -void OSystem_X11::set_timer(int timer, int (*callback) (int)) +void OSystem_X11::set_timer(TimerProc callback, int interval)  {  	if (callback != NULL) {  		_timer_duration = timer; diff --git a/common/system.h b/common/system.h index e59bbe4632..4da287e980 100644 --- a/common/system.h +++ b/common/system.h @@ -33,15 +33,14 @@   * and use it to interact with the system.   *   * In particular, a backend provides a video surface for ScummVM to draw in; - * methods to create threads and timers, to handle user input events, + * methods to create timers, to handle user input events,   * control audio CD playback, and sound output.   */  class OSystem {  public:  	typedef struct Mutex *MutexRef; -	typedef int ThreadProc(void *param); -	typedef void SoundProc(void *param, byte *buf, int len); -	//typedef int TimerProc(int interval); +	typedef void (*SoundProc)(void *param, byte *buf, int len); +	typedef int (*TimerProc)(int interval);  	/**  	 * The types of events backends can generate. @@ -213,7 +212,7 @@ public: -	/** @name Events and Threads */ +	/** @name Events and Time */  	//@{  	/** Get the number of milliseconds since the program was started. */ @@ -222,16 +221,8 @@ public:  	/** Delay/sleep for the specified amount of milliseconds. */  	virtual void delay_msecs(uint msecs) = 0; -	/** -	 * Create a thread with the given entry procedure. -	 * @param proc	the thread main procedure -	 * @param param	an arbitrary parameter which is stored and passed to proc -	 * @return  -	 */ -	virtual void create_thread(ThreadProc *proc, void *param) = 0; -	 -	/** Add a new callback timer. */ -	virtual void set_timer(int timer, int (*callback)(int)) = 0; +	/** Set the timer callback. */ +	virtual void set_timer(TimerProc callback, int interval) = 0;  	/**  	 * Get the next event in the event queue. @@ -253,7 +244,7 @@ public:  	 * @param param		an arbitrary parameter which is stored and passed to proc.  	 * @param format	the sample type format.  	 */ -	virtual bool set_sound_proc(SoundProc *proc, void *param, SoundFormat format) = 0; +	virtual bool set_sound_proc(SoundProc proc, void *param, SoundFormat format) = 0;  	/**  	 * Remove any audio callback previously set via set_sound_proc, thus effectively diff --git a/common/timer.cpp b/common/timer.cpp index 243eba2872..e8d6e24c4e 100644 --- a/common/timer.cpp +++ b/common/timer.cpp @@ -46,7 +46,7 @@ Timer::Timer(OSystem *system) :  	_thisTime = _system->get_msecs();  	// Set the timer last, after everything has been initialised -	_system->set_timer(10, &timer_handler); +	_system->set_timer(&timer_handler, 10);  }  | 
