enumerate children asynchronously
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Mon, 4 May 2009 13:36:31 +0000 (16:36 +0300)
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Wed, 6 May 2009 12:46:54 +0000 (15:46 +0300)
First step towards async plugin loading.

src/rygel/rygel-plugin-loader.vala

index abeb04e..4d1640f 100644 (file)
@@ -46,15 +46,24 @@ public class Rygel.PluginLoader : Object {
     }
 
     private void load_plugins_from_dir (File dir) {
+        string attributes = FILE_ATTRIBUTE_STANDARD_NAME + "," +
+                            FILE_ATTRIBUTE_STANDARD_TYPE + "," +
+                            FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE;
+
+        dir.enumerate_children_async (attributes,
+                                      FileQueryInfoFlags.NONE,
+                                      Priority.DEFAULT,
+                                      null,
+                                      on_children_enumerated);
+    }
+
+    private void on_children_enumerated (GLib.Object      source_object,
+                                         GLib.AsyncResult res) {
+        File dir = (File) source_object;
         FileEnumerator enumerator;
 
         try {
-            string attributes = FILE_ATTRIBUTE_STANDARD_NAME + "," +
-                                FILE_ATTRIBUTE_STANDARD_TYPE + "," +
-                                FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE;
-            enumerator = dir.enumerate_children (attributes,
-                                                 FileQueryInfoFlags.NONE,
-                                                 null);
+            enumerator = dir.enumerate_children_finish (res);
         } catch (Error error) {
             critical ("Error listing contents of directory '%s': %s\n",
                       dir.get_path (),