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:
Jordan 2021-05-08 21:40:16 -04:00
parent 236fb0c4ff
commit 96d252ba3c
2 changed files with 6 additions and 46 deletions

View File

@ -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):

View File

@ -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'])