From 98a9c56acf1857adaf1773bd91c88a8364fd3fa8 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 30 Sep 2009 14:42:13 -0700 Subject: attempt to work around [2155085, 2150246] stuck in closeTransaction() --- libs/surfaceflinger/SurfaceFlinger.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libs/surfaceflinger') 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; + } } } } -- cgit v1.1