fixed stack lock at startup
svn-id: r8779
This commit is contained in:
parent
8a7d540687
commit
ce9d154957
5 changed files with 14 additions and 10 deletions
|
@ -148,7 +148,7 @@ void OSystem_SDL_Common::copy_rect(const byte *buf, int pitch, int x, int y, int
|
|||
if (_screen == NULL)
|
||||
return;
|
||||
|
||||
StackLock lock(_graphicsMutex); // Lock the mutex until this function ends
|
||||
StackLock lock(_graphicsMutex, this); // Lock the mutex until this function ends
|
||||
|
||||
if (((uint32)buf & 3) == 0 && pitch == _screenWidth && x==0 && y==0 &&
|
||||
w==_screenWidth && h==_screenHeight && _mode_flags&DF_WANT_RECT_OPTIM) {
|
||||
|
@ -1229,7 +1229,7 @@ void OSystem_SDL_Common::clear_overlay() {
|
|||
if (!_overlayVisible)
|
||||
return;
|
||||
|
||||
StackLock lock(_graphicsMutex); // Lock the mutex until this function ends
|
||||
StackLock lock(_graphicsMutex, this); // Lock the mutex until this function ends
|
||||
|
||||
// hide the mouse
|
||||
undraw_mouse();
|
||||
|
|
|
@ -210,7 +210,7 @@ void OSystem_SDL::hotswap_gfx_mode() {
|
|||
void OSystem_SDL::update_screen() {
|
||||
assert(_hwscreen != NULL);
|
||||
|
||||
StackLock lock(_graphicsMutex); // Lock the mutex until this function ends
|
||||
StackLock lock(_graphicsMutex, this); // Lock the mutex until this function ends
|
||||
|
||||
// If the shake position changed, fill the dirty area with blackness
|
||||
if (_currentShakePos != _newShakePos) {
|
||||
|
@ -336,7 +336,7 @@ void OSystem_SDL::update_screen() {
|
|||
|
||||
uint32 OSystem_SDL::property(int param, Property *value) {
|
||||
|
||||
StackLock lock(_graphicsMutex); // Lock the mutex until this function ends
|
||||
StackLock lock(_graphicsMutex, this); // Lock the mutex until this function ends
|
||||
|
||||
if (param == PROP_TOGGLE_FULLSCREEN) {
|
||||
assert(_hwscreen != 0);
|
||||
|
|
|
@ -348,7 +348,7 @@ void OSystem_SDL_OpenGL::hotswap_gfx_mode() {
|
|||
|
||||
void OSystem_SDL_OpenGL::update_screen() {
|
||||
|
||||
StackLock lock(_graphicsMutex); // Lock the mutex until this function ends
|
||||
StackLock lock(_graphicsMutex, this); // Lock the mutex until this function ends
|
||||
|
||||
// If the shake position changed, fill the dirty area with blackness
|
||||
if (_currentShakePos != _newShakePos) {
|
||||
|
@ -548,7 +548,7 @@ bool OSystem_SDL_OpenGL::poll_event(Event *event) {
|
|||
|
||||
uint32 OSystem_SDL_OpenGL::property(int param, Property *value) {
|
||||
|
||||
StackLock lock(_graphicsMutex); // Lock the mutex until this function ends
|
||||
StackLock lock(_graphicsMutex, this); // Lock the mutex until this function ends
|
||||
|
||||
if (param == PROP_TOGGLE_FULLSCREEN) {
|
||||
if (!_usingOpenGL)
|
||||
|
|
|
@ -166,7 +166,10 @@ uint RandomSource::getRandomNumberRng(uint min, uint max) {
|
|||
return getRandomNumber(max - min) + min;
|
||||
}
|
||||
|
||||
StackLock::StackLock(OSystem::MutexRef mutex) : _mutex(mutex) {
|
||||
StackLock::StackLock(OSystem::MutexRef mutex, OSystem *syst)
|
||||
: _mutex(mutex), _syst(syst) {
|
||||
if (syst == 0)
|
||||
_syst = g_system;
|
||||
lock();
|
||||
}
|
||||
|
||||
|
@ -175,12 +178,12 @@ StackLock::~StackLock() {
|
|||
}
|
||||
|
||||
void StackLock::lock() {
|
||||
assert(g_system);
|
||||
assert(_syst);
|
||||
g_system->lock_mutex(_mutex);
|
||||
}
|
||||
|
||||
void StackLock::unlock() {
|
||||
assert(g_system);
|
||||
assert(_syst);
|
||||
g_system->unlock_mutex(_mutex);
|
||||
}
|
||||
|
||||
|
|
|
@ -80,10 +80,11 @@ public:
|
|||
*/
|
||||
class StackLock {
|
||||
OSystem::MutexRef _mutex;
|
||||
OSystem *_syst;
|
||||
void lock();
|
||||
void unlock();
|
||||
public:
|
||||
StackLock(OSystem::MutexRef mutex);
|
||||
StackLock(OSystem::MutexRef mutex, OSystem *syst = 0);
|
||||
~StackLock();
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue