From 41972e94eb5e76310d405857c2e877cb936c4f45 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 4 Apr 2018 20:07:08 +0200 Subject: [PATCH] synchronize around getting last visibile uuid --- .../ui/ConversationFragment.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index a12f94ec2..ff738bb1f 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -1581,20 +1581,22 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke if (binding == null) { return null; } - int pos = binding.messagesView.getLastVisiblePosition(); - if (pos >= 0) { - Message message = null; - for(int i = pos ; i >= 0; --i) { - message = (Message) binding.messagesView.getItemAtPosition(i); - if (message.getType() != Message.TYPE_STATUS) { - break; + synchronized (this.messageList) { + int pos = binding.messagesView.getLastVisiblePosition(); + if (pos >= 0) { + Message message = null; + for (int i = pos; i >= 0; --i) { + message = (Message) binding.messagesView.getItemAtPosition(i); + if (message.getType() != Message.TYPE_STATUS) { + break; + } } - } - if (message != null) { - while (message.next() != null && message.next().wasMergedIntoPrevious()) { - message = message.next(); + if (message != null) { + while (message.next() != null && message.next().wasMergedIntoPrevious()) { + message = message.next(); + } + return message.getUuid(); } - return message.getUuid(); } } return null;