summaryrefslogtreecommitdiffstats
path: root/libs/surfaceflinger
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2009-09-30 14:42:13 -0700
committerMathias Agopian <mathias@google.com>2009-09-30 15:15:07 -0700
commit98a9c56acf1857adaf1773bd91c88a8364fd3fa8 (patch)
tree567d8e955821f2c32bb280408195bb778be89fc0 /libs/surfaceflinger
parenta33e3f79259b56b03c7912af35944f34ad190e3c (diff)
downloadframeworks_base-98a9c56acf1857adaf1773bd91c88a8364fd3fa8.zip
frameworks_base-98a9c56acf1857adaf1773bd91c88a8364fd3fa8.tar.gz
frameworks_base-98a9c56acf1857adaf1773bd91c88a8364fd3fa8.tar.bz2
attempt to work around [2155085, 2150246] stuck in closeTransaction()
Diffstat (limited to 'libs/surfaceflinger')
-rw-r--r--libs/surfaceflinger/SurfaceFlinger.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp
index e468b23..eb0983a 100644
--- a/libs/surfaceflinger/SurfaceFlinger.cpp
+++ b/libs/surfaceflinger/SurfaceFlinger.cpp
@@ -1125,7 +1125,14 @@ void SurfaceFlinger::closeGlobalTransaction()
// take effect before returning.
Mutex::Autolock _l(mStateLock);
while (mResizeTransationPending) {
- mTransactionCV.wait(mStateLock);
+ status_t err = mTransactionCV.waitRelative(mStateLock, s2ns(5));
+ if (CC_UNLIKELY(err != NO_ERROR)) {
+ // just in case something goes wrong in SF, return to the
+ // called after a few seconds.
+ LOGW_IF(err == TIMED_OUT, "closeGlobalTransaction timed out!");
+ mResizeTransationPending = false;
+ break;
+ }
}
}
}