Use GLib.idle_add instead of Gdk.threads_add_idle
This commit is contained in:
parent
cfa35ba8e4
commit
675f28b318
@ -8,7 +8,7 @@ import websocket
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
gi.require_version("Gtk", "3.0")
|
gi.require_version("Gtk", "3.0")
|
||||||
from gi.repository import GLib, Gdk
|
from gi.repository import GLib
|
||||||
from ks_includes.KlippyGcodes import KlippyGcodes
|
from ks_includes.KlippyGcodes import KlippyGcodes
|
||||||
|
|
||||||
api_key = ""
|
api_key = ""
|
||||||
@ -126,24 +126,17 @@ class KlippyWebsocket(threading.Thread):
|
|||||||
def on_message(self, ws, message):
|
def on_message(self, ws, message):
|
||||||
response = json.loads(message)
|
response = json.loads(message)
|
||||||
if "id" in response and response['id'] in self.callback_table:
|
if "id" in response and response['id'] in self.callback_table:
|
||||||
Gdk.threads_add_idle(
|
args = (response,
|
||||||
GLib.PRIORITY_HIGH_IDLE,
|
|
||||||
self.callback_table[response['id']][0],
|
|
||||||
response,
|
|
||||||
self.callback_table[response['id']][1],
|
self.callback_table[response['id']][1],
|
||||||
self.callback_table[response['id']][2],
|
self.callback_table[response['id']][2],
|
||||||
*self.callback_table[response['id']][3]
|
*self.callback_table[response['id']][3])
|
||||||
)
|
GLib.idle_add(self.callback_table[response['id']][0], *args)
|
||||||
self.callback_table.pop(response['id'])
|
self.callback_table.pop(response['id'])
|
||||||
return
|
return
|
||||||
|
|
||||||
if "method" in response and "on_message" in self._callback:
|
if "method" in response and "on_message" in self._callback:
|
||||||
Gdk.threads_add_idle(
|
args = response['method'], response['params'][0] if "params" in response else {}
|
||||||
GLib.PRIORITY_HIGH_IDLE,
|
GLib.idle_add(self._callback['on_message'], *args)
|
||||||
self._callback['on_message'],
|
|
||||||
response['method'],
|
|
||||||
response['params'][0] if "params" in response else {}
|
|
||||||
)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def send_method(self, method, params=None, callback=None, *args):
|
def send_method(self, method, params=None, callback=None, *args):
|
||||||
@ -171,10 +164,7 @@ class KlippyWebsocket(threading.Thread):
|
|||||||
self.connected = True
|
self.connected = True
|
||||||
self.reconnect_count = 0
|
self.reconnect_count = 0
|
||||||
if "on_connect" in self._callback:
|
if "on_connect" in self._callback:
|
||||||
Gdk.threads_add_idle(
|
GLib.idle_add(self._callback['on_connect'])
|
||||||
GLib.PRIORITY_HIGH_IDLE,
|
|
||||||
self._callback['on_connect']
|
|
||||||
)
|
|
||||||
|
|
||||||
def on_close(self, ws):
|
def on_close(self, ws):
|
||||||
if self.is_connected() is False:
|
if self.is_connected() is False:
|
||||||
@ -192,11 +182,7 @@ class KlippyWebsocket(threading.Thread):
|
|||||||
self.connected = False
|
self.connected = False
|
||||||
|
|
||||||
if "on_close" in self._callback:
|
if "on_close" in self._callback:
|
||||||
Gdk.threads_add_idle(
|
GLib.idle_add(self._callback['on_close'], "Lost Connection to Moonraker")
|
||||||
GLib.PRIORITY_HIGH_IDLE,
|
|
||||||
self._callback['on_close'],
|
|
||||||
"Lost Connection to Moonraker",
|
|
||||||
)
|
|
||||||
self.retry()
|
self.retry()
|
||||||
|
|
||||||
def reconnect(self):
|
def reconnect(self):
|
||||||
|
@ -95,7 +95,8 @@ class KlippyFiles:
|
|||||||
if filename in self.filelist:
|
if filename in self.filelist:
|
||||||
logging.info(f"File already exists: {filename}")
|
logging.info(f"File already exists: {filename}")
|
||||||
self.request_metadata(filename)
|
self.request_metadata(filename)
|
||||||
GLib.timeout_add_seconds(1, self.run_callbacks, mods=[filename])
|
args = None, None, [filename]
|
||||||
|
GLib.idle_add(self.run_callbacks, *args)
|
||||||
return
|
return
|
||||||
|
|
||||||
self.filelist.append(filename)
|
self.filelist.append(filename)
|
||||||
@ -185,7 +186,8 @@ class KlippyFiles:
|
|||||||
if len(self.callbacks) <= 0:
|
if len(self.callbacks) <= 0:
|
||||||
return False
|
return False
|
||||||
for cb in self.callbacks:
|
for cb in self.callbacks:
|
||||||
GLib.idle_add(cb, newfiles, deletedfiles, mods)
|
args = newfiles, deletedfiles, mods
|
||||||
|
GLib.idle_add(cb, *args)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_file_list(self):
|
def get_file_list(self):
|
||||||
|
@ -147,11 +147,7 @@ class Printer:
|
|||||||
self.state = state
|
self.state = state
|
||||||
if self.state_callbacks[state] is not None:
|
if self.state_callbacks[state] is not None:
|
||||||
logging.debug(f"Adding callback for state: {state}")
|
logging.debug(f"Adding callback for state: {state}")
|
||||||
Gdk.threads_add_idle(
|
GLib.idle_add(self.state_cb, self.state_callbacks[state])
|
||||||
GLib.PRIORITY_HIGH_IDLE,
|
|
||||||
self.state_cb,
|
|
||||||
self.state_callbacks[state]
|
|
||||||
)
|
|
||||||
|
|
||||||
def configure_power_devices(self, data):
|
def configure_power_devices(self, data):
|
||||||
self.power_devices = {}
|
self.power_devices = {}
|
||||||
|
@ -11,7 +11,7 @@ from queue import Queue
|
|||||||
import gi
|
import gi
|
||||||
|
|
||||||
gi.require_version("Gtk", "3.0")
|
gi.require_version("Gtk", "3.0")
|
||||||
from gi.repository import GLib, Gdk
|
from gi.repository import GLib
|
||||||
|
|
||||||
|
|
||||||
class WifiManager:
|
class WifiManager:
|
||||||
@ -103,10 +103,7 @@ class WifiManager:
|
|||||||
def callback(self, cb_type, msg):
|
def callback(self, cb_type, msg):
|
||||||
if cb_type in self._callbacks:
|
if cb_type in self._callbacks:
|
||||||
for cb in self._callbacks[cb_type]:
|
for cb in self._callbacks[cb_type]:
|
||||||
Gdk.threads_add_idle(
|
GLib.idle_add(cb, msg)
|
||||||
GLib.PRIORITY_DEFAULT_IDLE,
|
|
||||||
cb,
|
|
||||||
msg)
|
|
||||||
|
|
||||||
def connect(self, ssid):
|
def connect(self, ssid):
|
||||||
netid = None
|
netid = None
|
||||||
@ -164,9 +161,8 @@ class WifiManager:
|
|||||||
self.networks[ssid]['connected'] = ssid == con_ssid
|
self.networks[ssid]['connected'] = ssid == con_ssid
|
||||||
if prev_ssid != self.connected_ssid:
|
if prev_ssid != self.connected_ssid:
|
||||||
for cb in self._callbacks['connected']:
|
for cb in self._callbacks['connected']:
|
||||||
Gdk.threads_add_idle(
|
args = self.connected_ssid, prev_ssid
|
||||||
GLib.PRIORITY_DEFAULT_IDLE,
|
GLib.idle_add(cb, *args)
|
||||||
cb, self.connected_ssid, prev_ssid)
|
|
||||||
return [con_ssid, con_bssid]
|
return [con_ssid, con_bssid]
|
||||||
elif "ssid" in variables and "bssid" in variables:
|
elif "ssid" in variables and "bssid" in variables:
|
||||||
self.connected = True
|
self.connected = True
|
||||||
@ -175,9 +171,8 @@ class WifiManager:
|
|||||||
self.networks[ssid]['connected'] = ssid == variables['ssid']
|
self.networks[ssid]['connected'] = ssid == variables['ssid']
|
||||||
if prev_ssid != self.connected_ssid:
|
if prev_ssid != self.connected_ssid:
|
||||||
for cb in self._callbacks['connected']:
|
for cb in self._callbacks['connected']:
|
||||||
Gdk.threads_add_idle(
|
args = self.connected_ssid, prev_ssid
|
||||||
GLib.PRIORITY_DEFAULT_IDLE,
|
GLib.idle_add(cb, *args)
|
||||||
cb, self.connected_ssid, prev_ssid)
|
|
||||||
return [variables['ssid'], variables['bssid']]
|
return [variables['ssid'], variables['bssid']]
|
||||||
else:
|
else:
|
||||||
logging.info("Resetting connected_ssid")
|
logging.info("Resetting connected_ssid")
|
||||||
@ -187,9 +182,8 @@ class WifiManager:
|
|||||||
self.networks[ssid]['connected'] = False
|
self.networks[ssid]['connected'] = False
|
||||||
if prev_ssid != self.connected_ssid:
|
if prev_ssid != self.connected_ssid:
|
||||||
for cb in self._callbacks['connected']:
|
for cb in self._callbacks['connected']:
|
||||||
Gdk.threads_add_idle(
|
args = self.connected_ssid, prev_ssid
|
||||||
GLib.PRIORITY_DEFAULT_IDLE,
|
GLib.idle_add(cb, *args)
|
||||||
cb, self.connected_ssid, prev_ssid)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_current_wifi_idle_add(self):
|
def get_current_wifi_idle_add(self):
|
||||||
@ -289,9 +283,8 @@ class WifiManager:
|
|||||||
new_networks.append(net)
|
new_networks.append(net)
|
||||||
if new_networks or deleted_networks:
|
if new_networks or deleted_networks:
|
||||||
for cb in self._callbacks['scan_results']:
|
for cb in self._callbacks['scan_results']:
|
||||||
Gdk.threads_add_idle(
|
args = new_networks, deleted_networks
|
||||||
GLib.PRIORITY_DEFAULT_IDLE,
|
GLib.idle_add(cb, *args)
|
||||||
cb, new_networks, deleted_networks)
|
|
||||||
|
|
||||||
def wpa_cli(self, command, wait=True):
|
def wpa_cli(self, command, wait=True):
|
||||||
if wait is False:
|
if wait is False:
|
||||||
@ -326,7 +319,7 @@ class WpaSocket(Thread):
|
|||||||
continue
|
continue
|
||||||
if msg.startswith("<"):
|
if msg.startswith("<"):
|
||||||
if "CTRL-EVENT-SCAN-RESULTS" in msg:
|
if "CTRL-EVENT-SCAN-RESULTS" in msg:
|
||||||
Gdk.threads_add_idle(GLib.PRIORITY_DEFAULT_IDLE, self.wm.scan_results)
|
GLib.idle_add(self.wm.scan_results)
|
||||||
elif "CTRL-EVENT-DISCONNECTED" in msg:
|
elif "CTRL-EVENT-DISCONNECTED" in msg:
|
||||||
self.callback("connecting_status", msg)
|
self.callback("connecting_status", msg)
|
||||||
match = re.match('<3>CTRL-EVENT-DISCONNECTED bssid=(\\S+) reason=3 locally_generated=1', msg)
|
match = re.match('<3>CTRL-EVENT-DISCONNECTED bssid=(\\S+) reason=3 locally_generated=1', msg)
|
||||||
@ -338,7 +331,7 @@ class WpaSocket(Thread):
|
|||||||
elif "Trying to associate" in msg or "CTRL-EVENT-REGDOM-CHANGE" in msg:
|
elif "Trying to associate" in msg or "CTRL-EVENT-REGDOM-CHANGE" in msg:
|
||||||
self.callback("connecting_status", msg)
|
self.callback("connecting_status", msg)
|
||||||
elif "CTRL-EVENT-CONNECTED" in msg:
|
elif "CTRL-EVENT-CONNECTED" in msg:
|
||||||
Gdk.threads_add_idle(GLib.PRIORITY_DEFAULT_IDLE, self.wm.get_current_wifi_idle_add)
|
GLib.idle_add(self.wm.get_current_wifi_idle_add)
|
||||||
self.callback("connecting_status", msg)
|
self.callback("connecting_status", msg)
|
||||||
elif self.skip_commands > 0:
|
elif self.skip_commands > 0:
|
||||||
self.skip_commands = self.skip_commands - 1
|
self.skip_commands = self.skip_commands - 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user