aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/bada
diff options
context:
space:
mode:
authorChris Warren-Smith2011-08-14 06:01:53 +1000
committerChris Warren-Smith2011-08-21 16:38:53 +1000
commitad58d2feafe2e85961e57ef05d4061d51dfb2172 (patch)
tree653b13d666c2c82edb750aff327400e44444ec2f /backends/platform/bada
parente748ea68a5f7e2e2e11dd863fab9c369c756aad3 (diff)
downloadscummvm-rg350-ad58d2feafe2e85961e57ef05d4061d51dfb2172.tar.gz
scummvm-rg350-ad58d2feafe2e85961e57ef05d4061d51dfb2172.tar.bz2
scummvm-rg350-ad58d2feafe2e85961e57ef05d4061d51dfb2172.zip
BADA: Fix for lockup when game thread fails to respond to quit event
Diffstat (limited to 'backends/platform/bada')
-rwxr-xr-xbackends/platform/bada/form.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/backends/platform/bada/form.cpp b/backends/platform/bada/form.cpp
index f75acfed20..92b3f07179 100755
--- a/backends/platform/bada/form.cpp
+++ b/backends/platform/bada/form.cpp
@@ -101,8 +101,12 @@ BadaAppForm::~BadaAppForm() {
if (_gameThread && _state != ErrorState) {
terminate();
+
_gameThread->Stop();
- _gameThread->Join();
+ if (_state != ErrorState) {
+ _gameThread->Join();
+ }
+
delete _gameThread;
_gameThread = null;
}
@@ -136,6 +140,11 @@ void BadaAppForm::terminate() {
for (int i = 0; i < 10 && _state == ClosingState; i++) {
Thread::Sleep(250);
}
+
+ if (_state = ClosingState) {
+ // failed to terminate - Join() will freeze
+ _state = ErrorState;
+ }
}
}