Fix files and printer memory leaks fixes #479
This commit is contained in:
parent
4899701ae3
commit
48b2ef513f
@ -6,16 +6,12 @@ gi.require_version("Gtk", "3.0")
|
|||||||
from gi.repository import GLib
|
from gi.repository import GLib
|
||||||
|
|
||||||
class KlippyFiles():
|
class KlippyFiles():
|
||||||
thumbnail_dir = "/tmp/.KS-thumbnails"
|
|
||||||
|
|
||||||
def __init__(self, screen):
|
def __init__(self, screen):
|
||||||
self.loop = None
|
|
||||||
self._poll_task = None
|
|
||||||
self._screen = screen
|
self._screen = screen
|
||||||
self.callbacks = []
|
self.callbacks = []
|
||||||
self.files = {}
|
self.files = {}
|
||||||
self.filelist = []
|
self.filelist = []
|
||||||
self.metadata_timeout = {}
|
self.thumbnail_dir = "/tmp/.KS-thumbnails"
|
||||||
|
|
||||||
if not os.path.exists(self.thumbnail_dir):
|
if not os.path.exists(self.thumbnail_dir):
|
||||||
os.makedirs(self.thumbnail_dir)
|
os.makedirs(self.thumbnail_dir)
|
||||||
@ -30,6 +26,15 @@ class KlippyFiles():
|
|||||||
self.gcodes_path = vsd['path']
|
self.gcodes_path = vsd['path']
|
||||||
logging.info("Gcodes path: %s" % self.gcodes_path)
|
logging.info("Gcodes path: %s" % self.gcodes_path)
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.run_callbacks()
|
||||||
|
self.callbacks = None
|
||||||
|
self.files = None
|
||||||
|
self.filelist = None
|
||||||
|
self.thumbnail_dir = None
|
||||||
|
self.gcodes_path = None
|
||||||
|
self._screen = None
|
||||||
|
|
||||||
def _callback(self, result, method, params):
|
def _callback(self, result, method, params):
|
||||||
if method == "server.files.list":
|
if method == "server.files.list":
|
||||||
if "result" in result and isinstance(result['result'], list):
|
if "result" in result and isinstance(result['result'], list):
|
||||||
@ -183,11 +188,9 @@ class KlippyFiles():
|
|||||||
|
|
||||||
def run_callbacks(self, newfiles=[], deletedfiles=[], mods=[]):
|
def run_callbacks(self, newfiles=[], deletedfiles=[], mods=[]):
|
||||||
if len(self.callbacks) <= 0:
|
if len(self.callbacks) <= 0:
|
||||||
return
|
return False
|
||||||
|
|
||||||
for cb in self.callbacks:
|
for cb in self.callbacks:
|
||||||
GLib.idle_add(cb, newfiles, deletedfiles, mods)
|
GLib.idle_add(cb, newfiles, deletedfiles, mods)
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_file_list(self):
|
def get_file_list(self):
|
||||||
@ -196,5 +199,4 @@ class KlippyFiles():
|
|||||||
def get_file_info(self, filename):
|
def get_file_info(self, filename):
|
||||||
if filename not in self.files:
|
if filename not in self.files:
|
||||||
return {"path": None, "modified": 0, "size": 0}
|
return {"path": None, "modified": 0, "size": 0}
|
||||||
|
|
||||||
return self.files[filename]
|
return self.files[filename]
|
||||||
|
@ -30,6 +30,24 @@ class Printer:
|
|||||||
self.power_devices = {}
|
self.power_devices = {}
|
||||||
self.store_timeout = False
|
self.store_timeout = False
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.state = None
|
||||||
|
self.state_cb = None
|
||||||
|
self.data = None
|
||||||
|
self.devices = None
|
||||||
|
self.power_devices = None
|
||||||
|
self.state_callbacks = None
|
||||||
|
self.tools = None
|
||||||
|
self.toolcount = None
|
||||||
|
self.extrudercount = None
|
||||||
|
self.tempdevcount = None
|
||||||
|
self.fancount = None
|
||||||
|
GLib.source_remove(self.store_timeout)
|
||||||
|
self.store_timeout = None
|
||||||
|
self.config = None
|
||||||
|
self.klipper = None
|
||||||
|
self.tempstore = None
|
||||||
|
|
||||||
def reinit(self, printer_info, data):
|
def reinit(self, printer_info, data):
|
||||||
logging.debug("Moonraker object status: %s" % data)
|
logging.debug("Moonraker object status: %s" % data)
|
||||||
self.config = data['configfile']['config']
|
self.config = data['configfile']['config']
|
||||||
|
@ -143,7 +143,7 @@ class BasePanel(ScreenPanel):
|
|||||||
for child in self.control['temp_box'].get_children():
|
for child in self.control['temp_box'].get_children():
|
||||||
self.control['temp_box'].remove(child)
|
self.control['temp_box'].remove(child)
|
||||||
|
|
||||||
if show is False:
|
if show is False or self._printer.get_temp_store_devices() is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
for device in self._printer.get_temp_store_devices():
|
for device in self._printer.get_temp_store_devices():
|
||||||
|
@ -165,11 +165,15 @@ class KlipperScreen(Gtk.Window):
|
|||||||
self.base_panel.show_macro_shortcut(self._config.get_main_config_option('side_macro_shortcut'))
|
self.base_panel.show_macro_shortcut(self._config.get_main_config_option('side_macro_shortcut'))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
self.printer_select_callbacks = []
|
self.printer_select_callbacks = []
|
||||||
self.printer_select_prepanel = None
|
self.printer_select_prepanel = None
|
||||||
|
|
||||||
if self.files is not None:
|
if self.files is not None:
|
||||||
|
self.files.reset()
|
||||||
self.files = None
|
self.files = None
|
||||||
|
if self.printer is not None:
|
||||||
|
self.printer.reset()
|
||||||
|
self.printer = None
|
||||||
|
|
||||||
for printer in self._config.get_printers():
|
for printer in self._config.get_printers():
|
||||||
pname = list(printer)[0]
|
pname = list(printer)[0]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user