diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2018-07-16 22:35:52 +0300 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2018-07-16 22:35:52 +0300 |
commit | 1764656ff9b0f92b1713b5e99bbb9ea5067e6a03 (patch) | |
tree | f9eff85661242ced97a84c5479a61cd6eb00d96b | |
parent | a4004904fed081ac6f46c84178073900205bd325 (diff) |
call switchTo(Fore|Back)ground() outside synchronized block
-rw-r--r-- | src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 128 |
1 files changed, 80 insertions, 48 deletions
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index d94bdf490..23899ff0d 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1902,164 +1902,196 @@ public class XmppConnectionService extends Service { } public void setOnConversationListChangedListener(OnConversationUpdate listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { - if (checkListeners()) { - switchToForeground(); - } + remainingListeners = checkListeners(); if (!this.mOnConversationUpdates.add(listener)) { Log.w(Config.LOGTAG,listener.getClass().getName()+" is already registered as ConversationListChangedListener"); } this.mNotificationService.setIsInForeground(this.mOnConversationUpdates.size() > 0); } + if (remainingListeners) { + switchToForeground(); + } } public void removeOnConversationListChangedListener(OnConversationUpdate listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { this.mOnConversationUpdates.remove(listener); this.mNotificationService.setIsInForeground(this.mOnConversationUpdates.size() > 0); - if (checkListeners()) { - switchToBackground(); - } + remainingListeners = checkListeners(); + } + if (remainingListeners) { + switchToBackground(); } } public void setOnShowErrorToastListener(OnShowErrorToast listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { - if (checkListeners()) { - switchToForeground(); - } + remainingListeners = checkListeners(); if (!this.mOnShowErrorToasts.add(listener)) { Log.w(Config.LOGTAG,listener.getClass().getName()+" is already registered as OnShowErrorToastListener"); } } + if (remainingListeners) { + switchToForeground(); + } } public void removeOnShowErrorToastListener(OnShowErrorToast onShowErrorToast) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { this.mOnShowErrorToasts.remove(onShowErrorToast); - if (checkListeners()) { - switchToBackground(); - } + remainingListeners = checkListeners(); + } + if (remainingListeners) { + switchToBackground(); } } public void setOnAccountListChangedListener(OnAccountUpdate listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { - if (checkListeners()) { - switchToForeground(); - } + remainingListeners = checkListeners(); if (!this.mOnAccountUpdates.add(listener)) { Log.w(Config.LOGTAG,listener.getClass().getName()+" is already registered as OnAccountListChangedtListener"); } } + if (remainingListeners) { + switchToForeground(); + } } public void removeOnAccountListChangedListener(OnAccountUpdate listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { this.mOnAccountUpdates.remove(listener); - if (checkListeners()) { - switchToBackground(); - } + remainingListeners = checkListeners(); + } + if (remainingListeners) { + switchToBackground(); } } public void setOnCaptchaRequestedListener(OnCaptchaRequested listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { - if (checkListeners()) { - switchToForeground(); - } + remainingListeners = checkListeners(); if (!this.mOnCaptchaRequested.add(listener)) { Log.w(Config.LOGTAG,listener.getClass().getName()+" is already registered as OnCaptchaRequestListener"); } } + if (remainingListeners) { + switchToForeground(); + } } public void removeOnCaptchaRequestedListener(OnCaptchaRequested listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { this.mOnCaptchaRequested.remove(listener); - if (checkListeners()) { - switchToBackground(); - } + remainingListeners = checkListeners(); + } + if (remainingListeners) { + switchToBackground(); } } public void setOnRosterUpdateListener(final OnRosterUpdate listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { - if (checkListeners()) { - switchToForeground(); - } + remainingListeners = checkListeners(); if (!this.mOnRosterUpdates.add(listener)) { Log.w(Config.LOGTAG,listener.getClass().getName()+" is already registered as OnRosterUpdateListener"); } } + if (remainingListeners) { + switchToForeground(); + } } public void removeOnRosterUpdateListener(final OnRosterUpdate listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { this.mOnRosterUpdates.remove(listener); - if (checkListeners()) { - switchToBackground(); - } + remainingListeners = checkListeners(); + } + if (remainingListeners) { + switchToBackground(); } } public void setOnUpdateBlocklistListener(final OnUpdateBlocklist listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { - if (checkListeners()) { - switchToForeground(); - } + remainingListeners = checkListeners(); if (!this.mOnUpdateBlocklist.add(listener)) { Log.w(Config.LOGTAG,listener.getClass().getName()+" is already registered as OnUpdateBlocklistListener"); } } + if (remainingListeners) { + switchToForeground(); + } } public void removeOnUpdateBlocklistListener(final OnUpdateBlocklist listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { this.mOnUpdateBlocklist.remove(listener); - if (checkListeners()) { - switchToBackground(); - } + remainingListeners = checkListeners(); + } + if (remainingListeners) { + switchToBackground(); } } public void setOnKeyStatusUpdatedListener(final OnKeyStatusUpdated listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { - if (checkListeners()) { - switchToForeground(); - } + remainingListeners = checkListeners(); if (!this.mOnKeyStatusUpdated.add(listener)) { Log.w(Config.LOGTAG,listener.getClass().getName()+" is already registered as OnKeyStatusUpdateListener"); } } + if (remainingListeners) { + switchToForeground(); + } } public void removeOnNewKeysAvailableListener(final OnKeyStatusUpdated listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { this.mOnKeyStatusUpdated.remove(listener); - if (checkListeners()) { - switchToBackground(); - } + remainingListeners = checkListeners(); + } + if (remainingListeners) { + switchToBackground(); } } public void setOnMucRosterUpdateListener(OnMucRosterUpdate listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { - if (checkListeners()) { - switchToForeground(); - } + remainingListeners = checkListeners(); if (!this.mOnMucRosterUpdate.add(listener)) { Log.w(Config.LOGTAG,listener.getClass().getName()+" is already registered as OnMucRosterListener"); } } + if (remainingListeners) { + switchToForeground(); + } } public void removeOnMucRosterUpdateListener(final OnMucRosterUpdate listener) { + final boolean remainingListeners; synchronized (LISTENER_LOCK) { this.mOnMucRosterUpdate.remove(listener); - if (checkListeners()) { - switchToBackground(); - } + remainingListeners = checkListeners(); + } + if (remainingListeners) { + switchToBackground(); } } |