From 07c21660d83cfaf01c8989479f4c65a4a3d09a92 Mon Sep 17 00:00:00 2001 From: Stuart Buchanan <stuart_d_buchanan@yahoo.co.uk> Date: Tue, 26 May 2020 22:20:38 +0100 Subject: [PATCH] FG1000 - make Debug menu items more efficient Previously a completely new PFD or MFD was created when the Debug menu items were used. This cause significant slowdown if used multiple times. Now we just create one instance of each and re-use it. Also clean up redundant code in the GUI. --- Aircraft/Instruments-3d/FG1000/Nasal/GUI.nas | 15 ------------ gui/menubar.xml | 24 +++++++++++++------- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/Aircraft/Instruments-3d/FG1000/Nasal/GUI.nas b/Aircraft/Instruments-3d/FG1000/Nasal/GUI.nas index 1bf31cb67..12c0461fa 100644 --- a/Aircraft/Instruments-3d/FG1000/Nasal/GUI.nas +++ b/Aircraft/Instruments-3d/FG1000/Nasal/GUI.nas @@ -132,12 +132,6 @@ var GUI = obj.window.setCanvas(inset); - obj.window.del = func() { - # Over-ride the window.del function so we clean up when the user closes the window - # Use call method to ensure we have the correct closure. - call(obj.cleanup, [], obj); - }; - # Add a event listener for the mouse wheel, which is used for turning the # knobs. inset.addEventListener("wheel", func(e) @@ -192,13 +186,4 @@ var GUI = return obj; }, - - cleanup : func() - { - # Clean up the MFD. Particularly important to stop it picking up - # Emesary notifications. - me.mfd.del(); - # Clean up the window itself - call(canvas.Window.del, [], me.window); - }, }; diff --git a/gui/menubar.xml b/gui/menubar.xml index ff3faa1ac..a605350ad 100644 --- a/gui/menubar.xml +++ b/gui/menubar.xml @@ -838,13 +838,17 @@ if (! defined("fg1000")) { io.load_nasal(nasal_dir ~ 'FG1000.nas', "fg1000"); io.load_nasal(nasal_dir ~ 'Interfaces/GenericInterfaceController.nas', "fg1000"); + var interfaceController = fg1000.GenericInterfaceController.getOrCreateInstance(); + interfaceController.start(); } - var interfaceController = fg1000.GenericInterfaceController.getOrCreateInstance(); - interfaceController.start(); - var fg1000system = fg1000.FG1000.getOrCreateInstance(); - var pfdindex = fg1000system.addPFD(); + var pfdindex = getprop("/sim/gui/fg1000/pfd-index"); + if (pfdindex == nil) { + pfdindex = fg1000system.addPFD(); + setprop("/sim/gui/fg1000/pfd-index", pfdindex); + } + fg1000system.displayGUI(pfdindex); </script> @@ -860,13 +864,17 @@ if (! defined("fg1000")) { io.load_nasal(nasal_dir ~ 'FG1000.nas', "fg1000"); io.load_nasal(nasal_dir ~ 'Interfaces/GenericInterfaceController.nas', "fg1000"); + var interfaceController = fg1000.GenericInterfaceController.getOrCreateInstance(); + interfaceController.start(); } - var interfaceController = fg1000.GenericInterfaceController.getOrCreateInstance(); - interfaceController.start(); - var fg1000system = fg1000.FG1000.getOrCreateInstance(); - var mfdindex = fg1000system.addMFD(); + var mfdindex = getprop("/sim/gui/fg1000/mfd-index"); + if (mfdindex == nil) { + mfdindex = fg1000system.addPFD(); + setprop("/sim/gui/fg1000/mfd-index", mfdindex); + } + fg1000system.displayGUI(mfdindex); </script>