aboutsummaryrefslogtreecommitdiff
path: root/backends/sdl
diff options
context:
space:
mode:
authorMax Horn2003-09-06 20:21:54 +0000
committerMax Horn2003-09-06 20:21:54 +0000
commit6ac86b97604a6248e2e26d6bed1d046d0ff06709 (patch)
treee6524d9e64ee32825ef2fedc6ea2c5586a88442c /backends/sdl
parentbbd23e60ceae570e8bd0f220257a21b01f679355 (diff)
downloadscummvm-rg350-6ac86b97604a6248e2e26d6bed1d046d0ff06709.tar.gz
scummvm-rg350-6ac86b97604a6248e2e26d6bed1d046d0ff06709.tar.bz2
scummvm-rg350-6ac86b97604a6248e2e26d6bed1d046d0ff06709.zip
added EVENT_SCREEN_CHANGED; small tweak to the way quit is handled in NewGui
svn-id: r10047
Diffstat (limited to 'backends/sdl')
-rw-r--r--backends/sdl/sdl-common.cpp9
-rw-r--r--backends/sdl/sdl-common.h1
-rw-r--r--backends/sdl/sdl.cpp5
-rw-r--r--backends/sdl/sdl_gl.cpp5
4 files changed, 17 insertions, 3 deletions
diff --git a/backends/sdl/sdl-common.cpp b/backends/sdl/sdl-common.cpp
index a6b1a785aa..1a453bb697 100644
--- a/backends/sdl/sdl-common.cpp
+++ b/backends/sdl/sdl-common.cpp
@@ -91,7 +91,7 @@ void OSystem_SDL_Common::set_timer(int timer, int (*callback)(int)) {
OSystem_SDL_Common::OSystem_SDL_Common()
: _screen(0), _screenWidth(0), _screenHeight(0),
_tmpscreen(0), _tmpScreenWidth(0), _overlayVisible(false),
- _cdrom(0), _dirty_checksums(0),
+ _cdrom(0), _modeChanged(false), _dirty_checksums(0),
_mouseVisible(false), _mouseDrawn(false), _mouseData(0),
_mouseHotspotX(0), _mouseHotspotY(0),
_currentShakePos(0), _newShakePos(0),
@@ -536,6 +536,13 @@ bool OSystem_SDL_Common::poll_event(Event *event) {
byte b = 0;
kbd_mouse();
+
+ // If the screen mode changed, send an EVENT_SCREEN_CHANGED
+ if (_modeChanged) {
+ _modeChanged = false;
+ event->event_code = EVENT_SCREEN_CHANGED;
+ return true;
+ }
while(SDL_PollEvent(&ev)) {
switch(ev.type) {
diff --git a/backends/sdl/sdl-common.h b/backends/sdl/sdl-common.h
index 9b378e8bb1..90586225d3 100644
--- a/backends/sdl/sdl-common.h
+++ b/backends/sdl/sdl-common.h
@@ -160,6 +160,7 @@ protected:
int _mode;
bool _full_screen;
uint32 _mode_flags;
+ bool _modeChanged;
enum {
NUM_DIRTY_RECT = 100,
diff --git a/backends/sdl/sdl.cpp b/backends/sdl/sdl.cpp
index af2d30ad5a..b888bcf253 100644
--- a/backends/sdl/sdl.cpp
+++ b/backends/sdl/sdl.cpp
@@ -204,8 +204,11 @@ void OSystem_SDL::hotswap_gfx_mode() {
free(old_tmpscreen->pixels);
SDL_FreeSurface(old_tmpscreen);
- // Finally, blit everything to the screen
+ // Blit everything to the screen
update_screen();
+
+ // Make sure that an EVENT_SCREEN_CHANGED gets sent later
+ _modeChanged = true;
}
void OSystem_SDL::update_screen() {
diff --git a/backends/sdl/sdl_gl.cpp b/backends/sdl/sdl_gl.cpp
index 15e45c875c..5df8440713 100644
--- a/backends/sdl/sdl_gl.cpp
+++ b/backends/sdl/sdl_gl.cpp
@@ -343,8 +343,11 @@ void OSystem_SDL_OpenGL::hotswap_gfx_mode() {
free(old_tmpscreen->pixels);
SDL_FreeSurface(old_tmpscreen);
- // Finally, blit everything to the screen
+ // Blit everything to the screen
update_screen();
+
+ // Make sure that an EVENT_SCREEN_CHANGED gets sent later
+ _modeChanged = true;
}
void OSystem_SDL_OpenGL::update_screen() {