remove messages from decryption queue when trimming a conversation
This commit is contained in:
		
							parent
							
								
									40f81f19df
								
							
						
					
					
						commit
						39ad426ca9
					
				| @ -50,6 +50,10 @@ public class PgpDecryptionService { | ||||
|         continueDecryption(); | ||||
|     } | ||||
| 
 | ||||
|     public synchronized void discard(List<Message> discards) { | ||||
|         this.messages.removeAll(discards); | ||||
|     } | ||||
| 
 | ||||
| 	protected synchronized void decryptNext() { | ||||
| 		if (pendingIntent == null | ||||
|                 && getOpenPgpApi() != null | ||||
|  | ||||
| @ -22,6 +22,7 @@ import java.util.Iterator; | ||||
| import java.util.List; | ||||
| 
 | ||||
| import eu.siacs.conversations.Config; | ||||
| import eu.siacs.conversations.crypto.PgpDecryptionService; | ||||
| import eu.siacs.conversations.crypto.axolotl.AxolotlService; | ||||
| import eu.siacs.conversations.xmpp.chatstate.ChatState; | ||||
| import eu.siacs.conversations.xmpp.jid.InvalidJidException; | ||||
| @ -206,7 +207,13 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl | ||||
| 			final int size = messages.size(); | ||||
| 			final int maxsize = Config.PAGE_SIZE * Config.MAX_NUM_PAGES; | ||||
| 			if (size > maxsize) { | ||||
| 				this.messages.subList(0, size - maxsize).clear(); | ||||
| 				List<Message> discards = this.messages.subList(0, size - maxsize); | ||||
| 				final PgpDecryptionService pgpDecryptionService = account.getPgpDecryptionService(); | ||||
| 				if (pgpDecryptionService != null) { | ||||
| 					pgpDecryptionService.discard(discards); | ||||
| 				} | ||||
| 				discards.clear(); | ||||
| 				untieMessages(); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @ -949,9 +956,13 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl | ||||
| 					} | ||||
| 				} | ||||
| 			}); | ||||
| 			for(Message message : this.messages) { | ||||
| 				message.untie(); | ||||
| 			} | ||||
| 			untieMessages(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	private void untieMessages() { | ||||
| 		for(Message message : this.messages) { | ||||
| 			message.untie(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch