From 19e2b713451b07fb287427801c853d8b58c4bc9f Mon Sep 17 00:00:00 2001 From: trigg Date: Mon, 18 Mar 2024 13:29:00 +0000 Subject: [PATCH] - Remove stale socket fd on disconnect - - Stops gtk main spinning a cpu core to 100% waiting on it. - Bump version --- discover_overlay/discord_connector.py | 15 +++++++++++---- setup.py | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/discover_overlay/discord_connector.py b/discover_overlay/discord_connector.py index 004b871..66bcd63 100644 --- a/discover_overlay/discord_connector.py +++ b/discover_overlay/discord_connector.py @@ -473,6 +473,9 @@ class DiscordConnector: Called when connection is closed """ log.warning("Connection closed") + if self.socket_watch: + GLib.source_remove(self.socket_watch) + self.socket_watch = None self.websocket = None self.update_overlays_from_data() self.current_voice = "0" @@ -789,12 +792,13 @@ class DiscordConnector: if self.socket_watch: GLib.source_remove(self.socket_watch) self.socket_watch = GLib.io_add_watch( - self.websocket.sock, GLib.IOCondition.HUP | GLib.IOCondition.IN | GLib.IOCondition.ERR, self.socket_glib) + self.websocket.sock, GLib.PRIORITY_DEFAULT_IDLE, GLib.IOCondition.HUP | GLib.IOCondition.IN | GLib.IOCondition.ERR, self.socket_glib) except ConnectionError as error: self.schedule_reconnect() - def socket_glib(self, a=None, b=None): - if self.websocket: + def socket_glib(self, fd, condition): + log.info(condition) + if condition == GLib.IO_IN and self.websocket: recv, _w, _e = select.select((self.websocket.sock,), (), (), 0) while recv: try: @@ -809,5 +813,8 @@ class DiscordConnector: except (websocket.WebSocketConnectionClosedException, json.decoder.JSONDecodeError): self.on_close() break - self.update_overlays_from_data() + self.update_overlays_from_data() + else: + self.update_overlays_from_data() + return False return True diff --git a/setup.py b/setup.py index ea2ed05..507d2b3 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ setup( name='discover-overlay', author='trigg', author_email='', - version='0.7.0', + version='0.7.1', description='Voice chat overlay', long_description=readme(), long_description_content_type='text/markdown',