From a15a82c353604ad3d12f3788f16da3a2cd18ad4f Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Wed, 27 May 2020 21:47:07 +0200 Subject: [PATCH] stop io during configure(), call startIo()/stopIo() without is-running-check --- src/org/thoughtcrime/securesms/RegistrationActivity.java | 8 ++++++-- src/org/thoughtcrime/securesms/WelcomeActivity.java | 5 ++++- .../thoughtcrime/securesms/connect/AccountManager.java | 2 +- .../securesms/connect/ApplicationDcContext.java | 8 +------- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/org/thoughtcrime/securesms/RegistrationActivity.java b/src/org/thoughtcrime/securesms/RegistrationActivity.java index e7765b81d..c6971479b 100644 --- a/src/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/org/thoughtcrime/securesms/RegistrationActivity.java @@ -511,8 +511,10 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve // calling configure() results in // receiving multiple DC_EVENT_CONFIGURE_PROGRESS events - DcHelper.getContext(this).captureNextError(); - DcHelper.getContext(this).configure(); // TODO-ASYNC: make sure, io is stopped before and started afterwards + ApplicationDcContext dcContext = DcHelper.getContext(this); + dcContext.stopIo(); + dcContext.captureNextError(); + dcContext.configure(); } private void setConfig(@IdRes int viewId, String configTarget, boolean doTrim) { @@ -534,6 +536,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve ApplicationDcContext dcContext = DcHelper.getContext(this); long progress = (Long)data1; if (progress==0/*error/aborted*/) { + dcContext.maybeStartIo(); // start-io is also needed on errors to make previous config work in case of changes dcContext.endCaptureNextError(); progressDialog.dismiss(); if (dcContext.hasCapturedError()) { @@ -555,6 +558,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve progressDialog.setMessage(getResources().getString(R.string.one_moment)+String.format(" %d%%", percent)); } else if (progress==1000/*done*/) { + dcContext.maybeStartIo(); dcContext.endCaptureNextError(); progressDialog.dismiss(); Intent conversationList = new Intent(getApplicationContext(), ConversationListActivity.class); diff --git a/src/org/thoughtcrime/securesms/WelcomeActivity.java b/src/org/thoughtcrime/securesms/WelcomeActivity.java index 17a563211..589c324b7 100644 --- a/src/org/thoughtcrime/securesms/WelcomeActivity.java +++ b/src/org/thoughtcrime/securesms/WelcomeActivity.java @@ -147,7 +147,8 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen // calling configure() results in // receiving multiple DC_EVENT_CONFIGURE_PROGRESS events - dcContext.configure(); // TODO-ASYNC: make sure, io is stopped before and started afterwards + dcContext.stopIo(); + dcContext.configure(); } private void progressError() { @@ -192,12 +193,14 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen progressUpdate((int)progress); } else if (progress==1000/*done*/) { + dcContext.maybeStartIo(); progressSuccess(false); } } else if (manualConfigure && eventId==DcContext.DC_EVENT_CONFIGURE_PROGRESS) { long progress = (Long)data1; if (progress==1000/*done*/) { + dcContext.maybeStartIo(); finish(); // remove ourself from the activity stack (finishAffinity is available in API 16, we're targeting API 14) } } diff --git a/src/org/thoughtcrime/securesms/connect/AccountManager.java b/src/org/thoughtcrime/securesms/connect/AccountManager.java index eeb928606..c28860468 100644 --- a/src/org/thoughtcrime/securesms/connect/AccountManager.java +++ b/src/org/thoughtcrime/securesms/connect/AccountManager.java @@ -99,7 +99,7 @@ public class AccountManager { // getSelectedAccount() ApplicationContext appContext = (ApplicationContext)context.getApplicationContext(); appContext.dcContext.notificationCenter.removeAllNotifiations(); - appContext.dcContext.maybeStopIo(); + appContext.dcContext.stopIo(); appContext.dcContext.unref(); appContext.dcContext = new ApplicationDcContext(context); } diff --git a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java index 17bc7e967..f0096898c 100644 --- a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java +++ b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java @@ -116,17 +116,11 @@ public class ApplicationDcContext extends DcContext { } public void maybeStartIo() { - if (!isIoRunning()) { + if (isConfigured()!=0) { startIo(); } } - public void maybeStopIo() { - if (isIoRunning()) { - stopIo(); - } - } - public void setStockTranslations() { // the integers are defined in the core and used only here, an enum or sth. like that won't have a big benefit setStockTranslation(1, context.getString(R.string.chat_no_messages));