[maemo-commits] [maemo-commits] r9238 - projects/haf/trunk/hildon-fm/hildon-fm

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Jan 22 20:29:09 EET 2007
Author: marivoll
Date: 2007-01-22 20:29:08 +0200 (Mon, 22 Jan 2007)
New Revision: 9238

Modified:
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c
Log:
	* hildon-fm/hildon-file-system-model.c
	(hildon_file_system_model_delayed_add_children): Handle a NULL
	model_node->folder gracefully.
	(get_folder_callback): Rearranged code gratuitously.

	* hildon-fm/hildon-file-chooser-dialog.c,
	hildon-fm/hildon-file-selection.c,
	hildon-fm/hildon-file-system-model.c: Removed WITH_GTK_2_10
	conditionals, keep the 2.10 stuff and the 2.6 stuff that now also
	works with maemo-gtk 2.10.


Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c	2007-01-22 18:25:09 UTC (rev 9237)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c	2007-01-22 18:29:08 UTC (rev 9238)
@@ -325,17 +325,13 @@
 
   /* We failed to connect to device before the call expired.
      We want disconnect the whole device in question, not 
-     just to kick of the individual node that caused problems */
+     just to kick of the individual node that caused problems 
+
+     XXX - Gtk+ 2.10 doesn't have ERROR_TIMEOUT anymore.  Is
+           ERROR_FAILED equivalent?
+  */
   if (g_error_matches (model_node->error, GTK_FILE_SYSTEM_ERROR,
-#if WITH_GTK_2_10
-		       /* XXX - Gtk+ 2.10 doesn't have ERROR_TIMEOUT.
-			        Is ERROR_FAILED quivalent?
-		       */
-		       GTK_FILE_SYSTEM_ERROR_FAILED
-#else		       
-		       GTK_FILE_SYSTEM_ERROR_TIMEOUT
-#endif
-		       ))
+		       GTK_FILE_SYSTEM_ERROR_FAILED))
   {
     GNode *device_node = get_device_for_node(node);
     if (device_node)
@@ -606,16 +602,27 @@
 
       ULOG_INFO("Delayed add for path %s", (char *) model_node->path);
 
-      /* Unix backend sends finished loading even before returning children.
-         This causes our internal bookkeeping fail. */
-      g_signal_handlers_block_by_func(model_node->folder, 
-        hildon_file_system_model_folder_finished_loading, model);      
+      if (model_node->folder)
+	{
+	  /* Unix backend sends finished loading even before returning
+	     children.  This causes our internal bookkeeping fail. */
+	  g_signal_handlers_block_by_func
+	    (model_node->folder, 
+	     hildon_file_system_model_folder_finished_loading, model);
 
-      result = gtk_file_folder_list_children(model_node->folder, 
-                    &children, &model_node->error);
+	  result = gtk_file_folder_list_children
+	    (model_node->folder, &children, &(model_node->error));
 
-      g_signal_handlers_unblock_by_func(model_node->folder, 
-        hildon_file_system_model_folder_finished_loading, model);
+	  g_signal_handlers_unblock_by_func
+	    (model_node->folder, 
+	     hildon_file_system_model_folder_finished_loading, model);
+	}
+      else
+	{
+	  result = TRUE;
+	  children = NULL;
+	  model_node->error = NULL;
+	}
 
       /* Patched GnomeVFS now also reports errors. */
       if (result)
@@ -1566,39 +1573,42 @@
 
   model_node->get_folder_handle = NULL;
   model_node->folder = folder;
-  model_node->error = g_error_copy (error);
+  model_node->error = error? g_error_copy (error) : NULL;
 
-  if (folder)
+  if (folder == NULL)
     {
-      g_signal_connect_object
-	(model_node->folder, "deleted",
-	 G_CALLBACK(hildon_file_system_model_dir_removed),
-	 model, 0);
-      g_signal_connect_object
-	(model_node->folder, "files-added",
-	 G_CALLBACK(hildon_file_system_model_files_added),
-	 model, 0);
-      g_signal_connect_object
-	(model_node->folder, "files-removed",
-	 G_CALLBACK
-	 (hildon_file_system_model_files_removed), model, 0);
-      g_signal_connect_object
-	(model_node->folder, "files-changed",
-	 G_CALLBACK
-	 (hildon_file_system_model_files_changed), model, 0);
-      g_signal_connect_object
-	(model_node->folder, "finished-loading",
-	 G_CALLBACK (hildon_file_system_model_folder_finished_loading), model,
-	 0);
+      ULOG_ERR_F("Failed to create monitor for path %s",
+		 gtk_file_path_get_string (model_node->path));
+      return;
+    }
 
-      g_object_set_qdata (G_OBJECT(model_node->folder),
-			  hildon_file_system_model_quark, node);
+  g_signal_connect_object
+    (model_node->folder, "deleted",
+     G_CALLBACK(hildon_file_system_model_dir_removed),
+     model, 0);
 
-      if (error)
-	handle_load_error (node);
-    }
-  else
-    ULOG_ERR_F("Failed to create monitor for path %s", (char *) path);
+  g_object_set_qdata (G_OBJECT(model_node->folder),
+		      hildon_file_system_model_quark, node);
+  
+  g_signal_connect_object
+    (model_node->folder, "files-added",
+     G_CALLBACK(hildon_file_system_model_files_added),
+     model, 0);
+  g_signal_connect_object
+    (model_node->folder, "files-removed",
+     G_CALLBACK
+     (hildon_file_system_model_files_removed), model, 0);
+  g_signal_connect_object
+    (model_node->folder, "files-changed",
+     G_CALLBACK
+     (hildon_file_system_model_files_changed), model, 0);
+  g_signal_connect_object
+    (model_node->folder, "finished-loading",
+     G_CALLBACK (hildon_file_system_model_folder_finished_loading), model,
+     0);
+  
+  if (error)
+    handle_load_error (node);
 }
 
 static gboolean


More information about the maemo-commits mailing list