aboutsummaryrefslogtreecommitdiff
path: root/backends/sdl/sdl.cpp
diff options
context:
space:
mode:
authorMax Horn2003-04-30 19:11:33 +0000
committerMax Horn2003-04-30 19:11:33 +0000
commitfeab6f904f81e5f6a1fbaf8b1b3b8686242ed00b (patch)
treedb386448d255e93d18ce5751bb94b65c6ed44726 /backends/sdl/sdl.cpp
parent70936947815df45899879fa0467c6489cc0d72c9 (diff)
downloadscummvm-rg350-feab6f904f81e5f6a1fbaf8b1b3b8686242ed00b.tar.gz
scummvm-rg350-feab6f904f81e5f6a1fbaf8b1b3b8686242ed00b.tar.bz2
scummvm-rg350-feab6f904f81e5f6a1fbaf8b1b3b8686242ed00b.zip
moved screen mutex from smush into SDL backend (other backends have to make sure they are thread safe by themselves)
svn-id: r7230
Diffstat (limited to 'backends/sdl/sdl.cpp')
-rw-r--r--backends/sdl/sdl.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/backends/sdl/sdl.cpp b/backends/sdl/sdl.cpp
index 6c6dd255e1..3c977e20b9 100644
--- a/backends/sdl/sdl.cpp
+++ b/backends/sdl/sdl.cpp
@@ -230,6 +230,8 @@ void OSystem_SDL::hotswap_gfx_mode() {
void OSystem_SDL::update_screen() {
assert(_hwscreen != NULL);
+ StackLock lock(_mutex); // Lock the mutex until this function ends
+
// If the shake position changed, fill the dirty area with blackness
if (_currentShakePos != _newShakePos) {
SDL_Rect blackrect = {0, 0, _screenWidth * _scaleFactor, _newShakePos * _scaleFactor};
@@ -277,12 +279,12 @@ void OSystem_SDL::update_screen() {
if (!_overlayVisible) {
for(r = _dirty_rect_list; r != last_rect; ++r) {
dst = *r;
+ dst.x++; // Shift rect by one since 2xSai needs to acces the data around
+ dst.y++; // any pixel to scale it, and we want to avoid mem access crashes.
if (_scaler_proc == Normal1x) {
if (SDL_BlitSurface(_screen, r, _hwscreen, &dst) != 0)
error("SDL_BlitSurface failed: %s", SDL_GetError());
} else {
- dst.x++; // Shift rect by one since 2xSai needs to acces the data around
- dst.y++; // any pixel to scale it, and we want to avoid mem access crashes.
if (SDL_BlitSurface(_screen, r, _tmpscreen, &dst) != 0)
error("SDL_BlitSurface failed: %s", SDL_GetError());
}