diff options
| author | Max Horn | 2002-11-13 14:38:49 +0000 | 
|---|---|---|
| committer | Max Horn | 2002-11-13 14:38:49 +0000 | 
| commit | aae641c6cfcf692c8f66d3f1bb7ca111fc5ef37d (patch) | |
| tree | 6acf286e5d11016e5ab443cf6c37cf8c57eea0cf /backends/sdl | |
| parent | 248b9d974fdd2a1c14a369711eb9167ad5467f1d (diff) | |
| download | scummvm-rg350-aae641c6cfcf692c8f66d3f1bb7ca111fc5ef37d.tar.gz scummvm-rg350-aae641c6cfcf692c8f66d3f1bb7ca111fc5ef37d.tar.bz2 scummvm-rg350-aae641c6cfcf692c8f66d3f1bb7ca111fc5ef37d.zip | |
properly initialize everything -> works w/o our custom new/delete now!
svn-id: r5531
Diffstat (limited to 'backends/sdl')
| -rw-r--r-- | backends/sdl/sdl-common.cpp | 46 | ||||
| -rw-r--r-- | backends/sdl/sdl-common.h | 5 | ||||
| -rw-r--r-- | backends/sdl/sdl.cpp | 40 | ||||
| -rw-r--r-- | backends/sdl/sdl_gl.cpp | 32 | 
4 files changed, 68 insertions, 55 deletions
| diff --git a/backends/sdl/sdl-common.cpp b/backends/sdl/sdl-common.cpp index 09f235035d..0efa7b4132 100644 --- a/backends/sdl/sdl-common.cpp +++ b/backends/sdl/sdl-common.cpp @@ -68,13 +68,19 @@ void OSystem_SDL_Common::set_timer(int timer, int (*callback)(int)) {  OSystem_SDL_Common::OSystem_SDL_Common()  	: _screen(0), _screenWidth(0), _screenHeight(0), _cdrom(0), -	_dirty_checksums(0), _currentShakePos(0), _newShakePos(0) +	_dirty_checksums(0), +	_mouseVisible(false), _mouseDrawn(false), _mouseData(0), +	_mouseHotspotX(0), _mouseHotspotY(0), +	_currentShakePos(0), _newShakePos(0)  {  	// allocate palette storage  	_currentPalette = (SDL_Color*)calloc(sizeof(SDL_Color), 256);  	// allocate the dirty rect storage  	_mouseBackup = (byte*)malloc(MAX_MOUSE_W * MAX_MOUSE_H * MAX_SCALING * 2); +	 +	// reset mouse state +	memset(&km, 0, sizeof(km));  }  OSystem_SDL_Common::~OSystem_SDL_Common() @@ -382,16 +388,16 @@ bool OSystem_SDL_Common::show_mouse(bool visible) {  }  void OSystem_SDL_Common::set_mouse_pos(int x, int y) { -	if (x != _mouse_cur_state.x || y != _mouse_cur_state.y) { -		_mouse_cur_state.x = x; -		_mouse_cur_state.y = y; +	if (x != _mouseCurState.x || y != _mouseCurState.y) { +		_mouseCurState.x = x; +		_mouseCurState.y = y;  		undraw_mouse();  	}  }  void OSystem_SDL_Common::set_mouse_cursor(const byte *buf, uint w, uint h, int hotspot_x, int hotspot_y) { -	_mouse_cur_state.w = w; -	_mouse_cur_state.h = h; +	_mouseCurState.w = w; +	_mouseCurState.h = h;  	_mouseHotspotX = hotspot_x;  	_mouseHotspotY = hotspot_y; @@ -709,10 +715,10 @@ void OSystem_SDL_Common::draw_mouse() {  	if (_mouseDrawn || !_mouseVisible)  		return; -	int x = _mouse_cur_state.x - _mouseHotspotX; -	int y = _mouse_cur_state.y - _mouseHotspotY; -	int w = _mouse_cur_state.w; -	int h = _mouse_cur_state.h; +	int x = _mouseCurState.x - _mouseHotspotX; +	int y = _mouseCurState.y - _mouseHotspotY; +	int w = _mouseCurState.w; +	int h = _mouseCurState.h;  	byte color;  	byte *src = _mouseData;		// Image representing the mouse  	byte *bak = _mouseBackup;		// Surface used to backup the area obscured by the mouse @@ -726,7 +732,7 @@ void OSystem_SDL_Common::draw_mouse() {  	}  	if (y < 0) {  		h += y; -		src -= y * _mouse_cur_state.w; +		src -= y * _mouseCurState.w;  		y = 0;  	}  	if (w > _screenWidth - x) @@ -740,10 +746,10 @@ void OSystem_SDL_Common::draw_mouse() {  	// Store the bounding box so that undraw mouse can restore the area the  	// mouse currently covers to its original content. -	_mouse_old_state.x = x; -	_mouse_old_state.y = y; -	_mouse_old_state.w = w; -	_mouse_old_state.h = h; +	_mouseOldState.x = x; +	_mouseOldState.y = y; +	_mouseOldState.w = w; +	_mouseOldState.h = h;  	// Draw the mouse cursor; backup the covered area in "bak" @@ -764,7 +770,7 @@ void OSystem_SDL_Common::draw_mouse() {  			dst++;  			width--;  		} -		src += _mouse_cur_state.w - w; +		src += _mouseCurState.w - w;  		bak += MAX_MOUSE_W - w;  		dst += _screenWidth - w;  		h--; @@ -785,10 +791,10 @@ void OSystem_SDL_Common::undraw_mouse() {  		error("SDL_LockSurface failed: %s.\n", SDL_GetError());  	byte *dst, *bak = _mouseBackup; -	const int old_mouse_x = _mouse_old_state.x; -	const int old_mouse_y = _mouse_old_state.y; -	const int old_mouse_w = _mouse_old_state.w; -	const int old_mouse_h = _mouse_old_state.h; +	const int old_mouse_x = _mouseOldState.x; +	const int old_mouse_y = _mouseOldState.y; +	const int old_mouse_w = _mouseOldState.w; +	const int old_mouse_h = _mouseOldState.h;  	int x, y;  	// No need to do clipping here, since draw_mouse() did that already diff --git a/backends/sdl/sdl-common.h b/backends/sdl/sdl-common.h index 86ddf74068..26a058d2ee 100644 --- a/backends/sdl/sdl-common.h +++ b/backends/sdl/sdl-common.h @@ -153,14 +153,15 @@ protected:  	struct MousePos {  		int16 x, y, w, h; +		MousePos() : x(0), y(0), w(0), h(0) {}  	};  	bool _mouseVisible;  	bool _mouseDrawn;  	byte *_mouseData;  	byte *_mouseBackup; -	MousePos _mouse_cur_state; -	MousePos _mouse_old_state; +	MousePos _mouseCurState; +	MousePos _mouseOldState;  	int16 _mouseHotspotX;  	int16 _mouseHotspotY; diff --git a/backends/sdl/sdl.cpp b/backends/sdl/sdl.cpp index 4226a41ed5..b4483201a0 100644 --- a/backends/sdl/sdl.cpp +++ b/backends/sdl/sdl.cpp @@ -27,7 +27,7 @@  class OSystem_SDL_Normal : public OSystem_SDL_Common {  public: -	OSystem_SDL_Normal() : sdl_tmpscreen(0), sdl_hwscreen(0), _overlay_visible(false) {} +	OSystem_SDL_Normal();  	// Set colors of the palette  	void set_palette(const byte *colors, uint start, uint num); @@ -55,20 +55,26 @@ protected:  	ScalerProc *_scaler_proc; +	int TMP_SCREEN_WIDTH; +  	virtual void draw_mouse();  	virtual void undraw_mouse();  	virtual void load_gfx_mode();  	virtual void unload_gfx_mode();  	void hotswap_gfx_mode(); -	 -	int TMP_SCREEN_WIDTH;  };  OSystem_SDL_Common *OSystem_SDL_Common::create() {  	return new OSystem_SDL_Normal();  } +OSystem_SDL_Normal::OSystem_SDL_Normal() +	 : sdl_tmpscreen(0), sdl_hwscreen(0), _overlay_visible(false), +	   _scaler_proc(0), TMP_SCREEN_WIDTH(0) +{ +} +  void OSystem_SDL_Normal::set_palette(const byte *colors, uint start, uint num) {  	const byte *b = colors;  	uint i; @@ -95,10 +101,10 @@ void OSystem_SDL_Normal::draw_mouse() {  	if (_mouseDrawn || !_mouseVisible)  		return; -	int x = _mouse_cur_state.x - _mouseHotspotX; -	int y = _mouse_cur_state.y - _mouseHotspotY; -	int w = _mouse_cur_state.w; -	int h = _mouse_cur_state.h; +	int x = _mouseCurState.x - _mouseHotspotX; +	int y = _mouseCurState.y - _mouseHotspotY; +	int w = _mouseCurState.w; +	int h = _mouseCurState.h;  	byte color;  	byte *src = _mouseData;		// Image representing the mouse  	uint16 *bak = (uint16*)_mouseBackup;	// Surface used to backup the area obscured by the mouse @@ -112,7 +118,7 @@ void OSystem_SDL_Normal::draw_mouse() {  	}  	if (y < 0) {  		h += y; -		src -= y * _mouse_cur_state.w; +		src -= y * _mouseCurState.w;  		y = 0;  	} @@ -127,10 +133,10 @@ void OSystem_SDL_Normal::draw_mouse() {  	// Store the bounding box so that undraw mouse can restore the area the  	// mouse currently covers to its original content. -	_mouse_old_state.x = x; -	_mouse_old_state.y = y; -	_mouse_old_state.w = w; -	_mouse_old_state.h = h; +	_mouseOldState.x = x; +	_mouseOldState.y = y; +	_mouseOldState.w = w; +	_mouseOldState.h = h;  	// Draw the mouse cursor; backup the covered area in "bak" @@ -151,7 +157,7 @@ void OSystem_SDL_Normal::draw_mouse() {  			dst++;  			width--;  		} -		src += _mouse_cur_state.w - w; +		src += _mouseCurState.w - w;  		bak += MAX_MOUSE_W - w;  		dst += TMP_SCREEN_WIDTH - w;  		h--; @@ -176,10 +182,10 @@ void OSystem_SDL_Normal::undraw_mouse() {  		error("SDL_LockSurface failed: %s.\n", SDL_GetError());  	uint16 *dst, *bak = (uint16 *)_mouseBackup; -	const int old_mouse_x = _mouse_old_state.x; -	const int old_mouse_y = _mouse_old_state.y; -	const int old_mouse_w = _mouse_old_state.w; -	const int old_mouse_h = _mouse_old_state.h; +	const int old_mouse_x = _mouseOldState.x; +	const int old_mouse_y = _mouseOldState.y; +	const int old_mouse_w = _mouseOldState.w; +	const int old_mouse_h = _mouseOldState.h;  	int x, y;  	// No need to do clipping here, since draw_mouse() did that already diff --git a/backends/sdl/sdl_gl.cpp b/backends/sdl/sdl_gl.cpp index c26db0095b..007aaf4b77 100644 --- a/backends/sdl/sdl_gl.cpp +++ b/backends/sdl/sdl_gl.cpp @@ -109,10 +109,10 @@ void OSystem_SDL_Normal::draw_mouse() {  	if (_mouseDrawn || !_mouseVisible)  		return; -	int x = _mouse_cur_state.x - _mouseHotspotX; -	int y = _mouse_cur_state.y - _mouseHotspotY; -	int w = _mouse_cur_state.w; -	int h = _mouse_cur_state.h; +	int x = _mouseCurState.x - _mouseHotspotX; +	int y = _mouseCurState.y - _mouseHotspotY; +	int w = _mouseCurState.w; +	int h = _mouseCurState.h;  	byte color;  	byte *src = _mouseData;		// Image representing the mouse  	uint16 *bak = (uint16*)_mouseBackup;	// Surface used to backup the area obscured by the mouse @@ -126,7 +126,7 @@ void OSystem_SDL_Normal::draw_mouse() {  	}  	if (y < 0) {  		h += y; -		src -= y * _mouse_cur_state.w; +		src -= y * _mouseCurState.w;  		y = 0;  	} @@ -141,10 +141,10 @@ void OSystem_SDL_Normal::draw_mouse() {  	// Store the bounding box so that undraw mouse can restore the area the  	// mouse currently covers to its original content. -	_mouse_old_state.x = x; -	_mouse_old_state.y = y; -	_mouse_old_state.w = w; -	_mouse_old_state.h = h; +	_mouseOldState.x = x; +	_mouseOldState.y = y; +	_mouseOldState.w = w; +	_mouseOldState.h = h;  	// Draw the mouse cursor; backup the covered area in "bak" @@ -162,7 +162,7 @@ void OSystem_SDL_Normal::draw_mouse() {  			dst++;  			width--;  		} -		src += _mouse_cur_state.w - w; +		src += _mouseCurState.w - w;  		bak += MAX_MOUSE_W - w;  		dst += TMP_SCREEN_WIDTH - w;  		h--; @@ -190,10 +190,10 @@ void OSystem_SDL_Normal::undraw_mouse() {  		error("SDL_LockSurface failed: %s.\n", SDL_GetError());  	uint16 *dst, *bak = (uint16 *)_mouseBackup; -	const int old_mouse_x = _mouse_old_state.x; -	const int old_mouse_y = _mouse_old_state.y; -	const int old_mouse_w = _mouse_old_state.w; -	const int old_mouse_h = _mouse_old_state.h; +	const int old_mouse_x = _mouseOldState.x; +	const int old_mouse_y = _mouseOldState.y; +	const int old_mouse_w = _mouseOldState.w; +	const int old_mouse_h = _mouseOldState.h;  	int x, y;  	// No need to do clipping here, since draw_mouse() did that already @@ -445,9 +445,9 @@ uint32 OSystem_SDL_Normal::property(int param, Property *value) {  /*		    SDL_FillRect(tmpSurface, &full, 0);  		    fb2gl.blit16(tmpSurface,1,&full,0,_glScreenStart);  		    fb2gl.display(); -		    double x = (double)((_mouse_cur_state.x)  +		    double x = (double)((_mouseCurState.x)   			- (_screenWidth/2)) / (_screenWidth/2); -		    double y = (double)((_mouse_cur_state.y)  +		    double y = (double)((_mouseCurState.y)   			- (_screenHeight/2)) / (_screenHeight/2);  		    glTranslatef(-x,y,0);  */ | 
