From c25e5d1b62ed180c00244bf194d17558cc2465a9 Mon Sep 17 00:00:00 2001
From: Nico Alt <nicoalt@posteo.org>
Date: Sun, 12 Apr 2020 13:00:01 +0000
Subject: [PATCH] Make it possible to disconnect from socket listener signals

Related to
https://code.briarproject.org/briar/briar-gtk/issues/44 and
https://code.briarproject.org/briar/briar-gtk/issues/45.
---
 briar_wrapper/models/socket_listener.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/briar_wrapper/models/socket_listener.py b/briar_wrapper/models/socket_listener.py
index 64ec519..0850542 100644
--- a/briar_wrapper/models/socket_listener.py
+++ b/briar_wrapper/models/socket_listener.py
@@ -27,6 +27,11 @@ class SocketListener():  # pylint: disable=too-few-public-methods
         self._signals_lock.release()
         return signal_id
 
+    def disconnect(self, signal_id):
+        self._signals_lock.acquire()
+        self._remove_signal(signal_id)
+        self._signals_lock.release()
+
     def _add_signal(self, event, callback):
         self._highest_signal_id += 1
         signal_id = self._highest_signal_id
@@ -36,6 +41,9 @@ class SocketListener():  # pylint: disable=too-few-public-methods
             }
         return signal_id
 
+    def _remove_signal(self, signal_id):
+        del self._signals[signal_id]
+
     def _start_websocket_thread(self):
         websocket_thread = Thread(target=self._start_watch_loop,
                                   daemon=True)
-- 
GitLab