[gnome-boxes] installer: Refactor setup_pre_install_drivers()



commit 86218631a683836c3645496c3335304ccac90e54
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Mon Dec 17 04:49:08 2012 +0200

    installer: Refactor setup_pre_install_drivers()
    
    Separate methods to search all pre-installable drivers and scripts that
    accept them.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=690321

 src/media-manager.vala        |    2 +-
 src/unattended-installer.vala |   41 +++++++++++++++++++++++++++++++++--------
 2 files changed, 34 insertions(+), 9 deletions(-)
---
diff --git a/src/media-manager.vala b/src/media-manager.vala
index 877b6e5..81baccc 100644
--- a/src/media-manager.vala
+++ b/src/media-manager.vala
@@ -29,7 +29,7 @@ private class Boxes.MediaManager : Object {
                                  Cancellable?         cancellable = null) throws GLib.Error {
         var media = yield InstallerMedia.create_for_path (path, this, cancellable);
 
-        return yield create_installer_media_from_media (media, on_installer_recognized, progress);
+        return yield create_installer_media_from_media (media, on_installer_recognized);
     }
 
     public async InstallerMedia create_installer_media_from_config (GVirConfig.Domain config) {
diff --git a/src/unattended-installer.vala b/src/unattended-installer.vala
index c895398..e1b065f 100644
--- a/src/unattended-installer.vala
+++ b/src/unattended-installer.vala
@@ -604,16 +604,14 @@ private class Boxes.UnattendedInstaller: InstallerMedia {
     }
 
     private async void setup_pre_install_drivers (Cancellable? cancellable = null) {
-        foreach (var d in os.get_device_drivers ().get_elements ()) {
-            var driver = d as DeviceDriver;
-            if (driver.get_architecture () != os_media.architecture || !driver.get_pre_installable ())
-                continue;
+        var drivers = get_pre_installable_drivers ();
+        var scripts = get_pre_installer_scripts ();
 
-            foreach (var s in scripts.get_elements ()) {
-                var script = s as InstallScript;
-                if (!script.get_can_pre_install_drivers ())
-                    continue;
+        if (drivers.length () == 0 || scripts.length () == 0)
+            return;
 
+        foreach (var driver in drivers) {
+            foreach (var script in scripts) {
                 try {
                     yield setup_pre_install_driver_for_script (driver, script, cancellable);
                 } catch (GLib.Error e) {
@@ -657,6 +655,33 @@ private class Boxes.UnattendedInstaller: InstallerMedia {
         }
     }
 
+    private GLib.List<DeviceDriver> get_pre_installable_drivers () {
+        var drivers = new GLib.List<DeviceDriver> ();
+
+        foreach (var d in os.get_device_drivers ().get_elements ()) {
+            var driver = d as DeviceDriver;
+
+            if (driver.get_architecture () == os_media.architecture && driver.get_pre_installable ())
+                drivers.append (driver);
+        }
+
+        return drivers;
+    }
+
+    private GLib.List<InstallScript> get_pre_installer_scripts () {
+        var scripts = new GLib.List<InstallScript> ();
+
+        foreach (var s in this.scripts.get_elements ()) {
+            var script = s as InstallScript;
+
+            if (script.get_can_pre_install_drivers ())
+                scripts.append (script);
+        }
+
+        return scripts;
+    }
+
+
     private string get_preferred_language () {
         var system_langs = Intl.get_language_names ();
         var media_langs = new HashTable<string, unowned string> (str_hash, str_equal);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]