From aedb58110ab89403ee220f2684ac0015dc01c37c Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sun, 8 Nov 2015 20:12:47 +0800 Subject: [PATCH] WAR for a data race in fabProgressCircle --- src/main/jni/shadowsocks-libev | 2 +- src/main/scala/com/github/shadowsocks/Shadowsocks.scala | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/jni/shadowsocks-libev b/src/main/jni/shadowsocks-libev index 890e880d..095aa749 160000 --- a/src/main/jni/shadowsocks-libev +++ b/src/main/jni/shadowsocks-libev @@ -1 +1 @@ -Subproject commit 890e880dc61ad4f2e9a340a78c797c4aabee6429 +Subproject commit 095aa7490cb39d513180d1f756e6751107511f98 diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index 82f77202..9a0ba41d 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -1027,12 +1027,16 @@ class Shadowsocks fabProgressCircle.show() setPreferenceEnabled(enabled = false) case State.CONNECTED => - if (state == State.CONNECTING) fabProgressCircle.beginFinalAnimation() else fabProgressCircle.hide() + if (state == State.CONNECTING) { + fabProgressCircle.beginFinalAnimation() + } else { + handler.postDelayed(() => fabProgressCircle.hide(), 1000) + } fab.setEnabled(true) changeSwitch(checked = true) setPreferenceEnabled(enabled = false) case State.STOPPED => - handler.post(() => fabProgressCircle.hide()) + handler.postDelayed(() => fabProgressCircle.hide(), 1000) fab.setEnabled(true) changeSwitch(checked = false) if (m != null) Snackbar.make(getWindow.getDecorView.findViewById(android.R.id.content),