files: Convert away from thread
Convert files so it is not a thread, as it will become un-necessary with inotify from moonraker
This commit is contained in:
parent
236fb0c4ff
commit
96d252ba3c
@ -1,23 +1,16 @@
|
||||
import logging
|
||||
import asyncio
|
||||
import json
|
||||
import os
|
||||
import base64
|
||||
|
||||
from contextlib import suppress
|
||||
from threading import Thread
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gdk, GLib
|
||||
|
||||
RESCAN_INTERVAL = 4
|
||||
|
||||
class KlippyFiles(Thread):
|
||||
class KlippyFiles():
|
||||
thumbnail_dir = "/tmp/.KS-thumbnails"
|
||||
|
||||
def __init__(self, screen, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
def __init__(self, screen):
|
||||
self.loop = None
|
||||
self._poll_task = None
|
||||
self._screen = screen
|
||||
@ -26,41 +19,9 @@ class KlippyFiles(Thread):
|
||||
self.filelist = []
|
||||
self.metadata_timeout = {}
|
||||
|
||||
logging.info("")
|
||||
|
||||
if not os.path.exists(self.thumbnail_dir):
|
||||
os.makedirs(self.thumbnail_dir)
|
||||
|
||||
def run(self):
|
||||
self.loop = asyncio.new_event_loop()
|
||||
loop = self.loop
|
||||
asyncio.set_event_loop(loop)
|
||||
try:
|
||||
self._poll_task = asyncio.ensure_future(self._poll())
|
||||
loop.run_forever()
|
||||
loop.run_until_complete(loop.shutdown_asyncgens())
|
||||
|
||||
self._poll_task.cancel()
|
||||
with suppress(asyncio.CancelledError):
|
||||
loop.run_until_complete(self._poll_task)
|
||||
finally:
|
||||
logging.info("Closing loop")
|
||||
loop.close()
|
||||
|
||||
def stop(self):
|
||||
logging.info("Trying to stop loop2")
|
||||
self.loop.call_soon_threadsafe(self.loop.stop)
|
||||
|
||||
async def _poll(self):
|
||||
await self.ret_files()
|
||||
while True:
|
||||
try:
|
||||
await self.ret_files()
|
||||
except:
|
||||
logging.exception("Poll files error")
|
||||
await asyncio.sleep(4)
|
||||
|
||||
|
||||
def _callback(self, result, method, params):
|
||||
if method == "server.files.list":
|
||||
if "result" in result and isinstance(result['result'],list):
|
||||
@ -145,7 +106,7 @@ class KlippyFiles(Thread):
|
||||
return False
|
||||
self._screen._ws.klippy.get_file_metadata(filename, self._callback)
|
||||
|
||||
async def ret_files(self, retval=True):
|
||||
def refresh_files(self):
|
||||
self._screen._ws.klippy.get_file_list(self._callback)
|
||||
|
||||
def ret_file_data (self, filename):
|
||||
|
@ -151,7 +151,6 @@ class KlipperScreen(Gtk.Window):
|
||||
self.printer_select_prepanel = None
|
||||
|
||||
if self.files is not None:
|
||||
self.files.stop()
|
||||
self.files = None
|
||||
|
||||
for printer in self._config.get_printers():
|
||||
@ -216,12 +215,10 @@ class KlipperScreen(Gtk.Window):
|
||||
data["moonraker_host"],
|
||||
data["moonraker_port"]
|
||||
)
|
||||
self.files = KlippyFiles(self)
|
||||
self._ws.initial_connect()
|
||||
self.connecting = False
|
||||
|
||||
self.files = KlippyFiles(self)
|
||||
self.files.start()
|
||||
|
||||
self.connected_printer = name
|
||||
logging.debug("Connected to printer: %s" % name)
|
||||
|
||||
@ -661,6 +658,8 @@ class KlipperScreen(Gtk.Window):
|
||||
self.printer.reinit(printer_info['result'], data)
|
||||
self.ws_subscribe()
|
||||
|
||||
self.files.refresh_files()
|
||||
|
||||
if powerdevs != False:
|
||||
self.printer.configure_power_devices(powerdevs['result'])
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user