diff --git a/gajim/gui_interface.py b/gajim/gui_interface.py index d79066013c14596fd47ef85788e747f8904ca3c8..60205245bfaeeda506c41cd3c9f0e61b393d2c84 100644 --- a/gajim/gui_interface.py +++ b/gajim/gui_interface.py @@ -2342,10 +2342,14 @@ class Interface: # Otherwise, an exception will stop our loop if sys.platform == 'win32': - timeout, in_seconds = 20, None - else: - timeout, in_seconds = app.idlequeue.PROCESS_TIMEOUT + # On Windows process() calls select.select(), so we need this + # executed on each mainloop cycle + # On Linux only timeouts are checked in process(), so we use + # a timeout + GLib.idle_add(self.process_connections) + raise + timeout, in_seconds = app.idlequeue.PROCESS_TIMEOUT if in_seconds: GLib.timeout_add_seconds(timeout, self.process_connections) else: @@ -2632,15 +2636,16 @@ class Interface: self.instances['file_transfers'] = dialogs.FileTransfersWindow() GLib.timeout_add(100, self.autoconnect) + if sys.platform == 'win32': - timeout, in_seconds = 20, None + GLib.idle_add(self.process_connections) else: timeout, in_seconds = app.idlequeue.PROCESS_TIMEOUT + if in_seconds: + GLib.timeout_add_seconds(timeout, self.process_connections) + else: + GLib.timeout_add(self.process_connections) - if in_seconds: - GLib.timeout_add_seconds(timeout, self.process_connections) - else: - GLib.timeout_add(timeout, self.process_connections) GLib.timeout_add_seconds(app.config.get( 'check_idle_every_foo_seconds'), self.read_sleepy)