diff options
Diffstat (limited to 'sdl.cpp')
| -rw-r--r-- | sdl.cpp | 16 | 
1 files changed, 13 insertions, 3 deletions
| @@ -139,10 +139,17 @@ void waitForTimer(Scumm *s, int msec_delay) {  				}  			case SDL_MOUSEBUTTONDOWN:  				if (event.button.button==SDL_BUTTON_LEFT) -					s->_leftBtnPressed |= 1; +					s->_leftBtnPressed |= msClicked|msDown;  				else if (event.button.button==SDL_BUTTON_RIGHT) -					s->_rightBtnPressed |= 1; +					s->_rightBtnPressed |= msClicked|msDown;  				break; +			case SDL_MOUSEBUTTONUP: +				if (event.button.button==SDL_BUTTON_LEFT) +					s->_leftBtnPressed &= ~msDown; +				else if (event.button.button==SDL_BUTTON_RIGHT) +					s->_rightBtnPressed &= ~msDown; +				break; +  			case SDL_QUIT:  				exit(1);  				break; @@ -165,7 +172,7 @@ int old_mouse_h, old_mouse_w;  bool has_mouse,hide_mouse;  #define BAK_WIDTH 40 -#define BAK_HEIGHT 24 +#define BAK_HEIGHT 40  byte old_backup[BAK_WIDTH*BAK_HEIGHT*2]; @@ -252,6 +259,7 @@ void updateScreen(Scumm *s) {  	}  	if (fullRedraw) {  		SDL_UpdateRect(screen, 0,0,0,0); +		fullRedraw = false;  #if defined(SHOW_AREA)  		debug(2,"update area 100 %%");  #endif @@ -277,6 +285,8 @@ void drawMouse(Scumm *s, int xdraw, int ydraw, int w, int h, byte *buf, bool vis  	if (hide_mouse)  		visible = false; +	assert(w<=BAK_WIDTH && h<=BAK_HEIGHT); +  	if (SDL_LockSurface(screen)==-1)  		error("SDL_LockSurface failed: %s.\n", SDL_GetError()); | 
