mirror of https://github.com/M66B/FairEmail.git
Prevent lock out
This commit is contained in:
parent
e73d8f4329
commit
7fbaa2c6a6
|
@ -39,6 +39,7 @@ import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.LevelListDrawable;
|
import android.graphics.drawable.LevelListDrawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
|
@ -72,6 +73,7 @@ class ImageHelper {
|
||||||
Helper.getBackgroundExecutor(1, "image");
|
Helper.getBackgroundExecutor(1, "image");
|
||||||
|
|
||||||
private static final int MAX_REDIRECTS = 10;
|
private static final int MAX_REDIRECTS = 10;
|
||||||
|
private static final long FIT_DRAWABLE_TIMEOUT = 10 * 1000L; // milliseconds
|
||||||
|
|
||||||
static Bitmap generateIdenticon(@NonNull String email, int size, int pixels, Context context) {
|
static Bitmap generateIdenticon(@NonNull String email, int size, int pixels, Context context) {
|
||||||
byte[] hash = getHash(email);
|
byte[] hash = getHash(email);
|
||||||
|
@ -389,11 +391,30 @@ class ImageHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void fitDrawable(final Drawable d, final AnnotatedSource a, final View view) {
|
private static void fitDrawable(final Drawable d, final AnnotatedSource a, final View view) {
|
||||||
|
if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
|
||||||
|
Log.w("fitDrawable UI thread");
|
||||||
|
_fitDrawble(d, a, view);
|
||||||
|
} else {
|
||||||
Semaphore semaphore = new Semaphore(0);
|
Semaphore semaphore = new Semaphore(0);
|
||||||
|
|
||||||
view.post(new Runnable() {
|
view.post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
_fitDrawble(d, a, view);
|
||||||
|
semaphore.release();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!semaphore.tryAcquire(FIT_DRAWABLE_TIMEOUT, TimeUnit.MILLISECONDS))
|
||||||
|
Log.e("fitDrawable failed timeout=" + FIT_DRAWABLE_TIMEOUT);
|
||||||
|
} catch (InterruptedException ex) {
|
||||||
|
Log.w(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void _fitDrawble(Drawable d, AnnotatedSource a, View view) {
|
||||||
Rect bounds = d.getBounds();
|
Rect bounds = d.getBounds();
|
||||||
int w = bounds.width();
|
int w = bounds.width();
|
||||||
int h = bounds.height();
|
int h = bounds.height();
|
||||||
|
@ -416,17 +437,6 @@ class ImageHelper {
|
||||||
h = Math.round(h * scale);
|
h = Math.round(h * scale);
|
||||||
d.setBounds(0, 0, w, h);
|
d.setBounds(0, 0, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
semaphore.release();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (!semaphore.tryAcquire(10 * 1000, TimeUnit.MILLISECONDS))
|
|
||||||
Log.e("fitDrawable failed");
|
|
||||||
} catch (InterruptedException ex) {
|
|
||||||
Log.w(ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Drawable getDataDrawable(Context context, String source) {
|
private static Drawable getDataDrawable(Context context, String source) {
|
||||||
|
|
Loading…
Reference in New Issue