diff options
| author | bigbear <ns@bigbear.dk> | 2024-02-08 02:36:30 +0100 | 
|---|---|---|
| committer | bigbear <ns@bigbear.dk> | 2024-02-08 19:52:53 +0100 | 
| commit | add478fbe01e68d63309697dfa016e09f12c2603 (patch) | |
| tree | 5200488e6c7ea3c6f01491e46dbdd116d4dfc18c | |
| parent | 162eb04a748a19a93c5dbaaa977c693c961f6ccf (diff) | |
PR696 - module loading order
| -rw-r--r-- | hardinfo2/util.c | 28 | 
1 files changed, 20 insertions, 8 deletions
| diff --git a/hardinfo2/util.c b/hardinfo2/util.c index 6ed326d4..d79b1385 100644 --- a/hardinfo2/util.c +++ b/hardinfo2/util.c @@ -963,15 +963,27 @@ static GSList *modules_load(gchar ** module_list)      g_free(filename);      if (dir) { -	while ((filename = (gchar *) g_dir_read_name(dir))) { -	    if (g_strrstr(filename, "." G_MODULE_SUFFIX) && -		module_in_module_list(filename, module_list) && -		((module = module_load(filename)))) { -		modules = g_slist_prepend(modules, module); -	    } +      GList *filenames = NULL; +      while ((filename = (gchar *)g_dir_read_name(dir))) { +	if (g_strrstr(filename, "." G_MODULE_SUFFIX) && +	    module_in_module_list(filename, module_list)) { +	  if (g_strrstr(filename, "devices." G_MODULE_SUFFIX)) { +	    filenames = g_list_prepend(filenames, filename); +	  } +	  else { +	    filenames = g_list_append(filenames, filename); +	  }  	} - -	g_dir_close(dir); +      } +      GList* item = NULL; +        while (item = g_list_first(filenames)) { +            if (module = module_load((gchar *)item->data)) { +                modules = g_slist_prepend(modules, module); +            } +            filenames = g_list_delete_link(filenames, item); +        } +        g_list_free_full (g_steal_pointer (&filenames), g_object_unref); +        g_dir_close(dir);      }      modules = modules_check_deps(modules); | 
