From 4f78309e5131a9ca6d57df7b02c8e59a53ef2061 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Fri, 15 May 2015 08:26:04 -0700 Subject: [PATCH] Fix for deadlock if MessageNotifier called from UI thread. Fixes #3173 // FREEBIE --- src/org/thoughtcrime/securesms/util/BitmapUtil.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/org/thoughtcrime/securesms/util/BitmapUtil.java b/src/org/thoughtcrime/securesms/util/BitmapUtil.java index ffe81052bd..ffb730924b 100644 --- a/src/org/thoughtcrime/securesms/util/BitmapUtil.java +++ b/src/org/thoughtcrime/securesms/util/BitmapUtil.java @@ -21,7 +21,6 @@ import android.util.Log; import android.util.Pair; import com.android.gallery3d.data.Exif; -import com.makeramen.RoundedDrawable; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.mms.PartAuthority; @@ -263,7 +262,7 @@ public class BitmapUtil { final AtomicBoolean created = new AtomicBoolean(false); final Bitmap[] result = new Bitmap[1]; - new Handler(Looper.getMainLooper()).post(new Runnable() { + Runnable runnable = new Runnable() { @Override public void run() { if (drawable instanceof BitmapDrawable) { @@ -295,7 +294,10 @@ public class BitmapUtil { result.notifyAll(); } } - }); + }; + + if (Looper.myLooper() == Looper.getMainLooper()) runnable.run(); + else new Handler(Looper.getMainLooper()).post(runnable); synchronized (result) { while (!created.get()) Util.wait(result, 0);