[maemo-commits] [maemo-commits] r13948 - in projects/haf/trunk/hildon-fm: . hildon-fm

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Sep 20 16:27:30 EEST 2007
Author: marivoll
Date: 2007-09-20 16:27:28 +0300 (Thu, 20 Sep 2007)
New Revision: 13948

Modified:
   projects/haf/trunk/hildon-fm/ChangeLog
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c
Log:
	* hildon-fm/hildon-file-chooser-dialog.c
	(hildon_file_chooser_dialog_do_autonaming): Call set_entry always
	even when no autonaming has been done so.
	(hildon_file_chooser_dialog_set_current_name): Do not call
	set_entry explicitly, it would overwrite the autonaming done
	previously.


Modified: projects/haf/trunk/hildon-fm/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-fm/ChangeLog	2007-09-20 12:56:57 UTC (rev 13947)
+++ projects/haf/trunk/hildon-fm/ChangeLog	2007-09-20 13:27:28 UTC (rev 13948)
@@ -1,3 +1,12 @@
+2007-09-20  Marius Vollmer  <marius.vollmer at nokia.com>
+
+	* hildon-fm/hildon-file-system-model.c (delay_files_added,
+	dfa_run): Maintain new 'pending_adds' field of the model nodes.
+	(is_node_loaded): Only return true when there are no pending
+	additions.
+	(_hildon_file_system_model_load_children): Time out after 5
+	seconds.
+
 2007-09-19  Marius Vollmer  <marius.vollmer at nokia.com>
 
 	* hildon-fm/hildon-file-chooser-dialog.c

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-09-20 12:56:57 UTC (rev 13947)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c	2007-09-20 13:27:28 UTC (rev 13948)
@@ -77,6 +77,7 @@
     GtkFileInfo *info;
     GtkFileFolder *folder;
     GtkFileSystemHandle *get_folder_handle;
+    gint pending_adds;
     GdkPixbuf *icon_cache;
     GdkPixbuf *icon_cache_expanded;
     GdkPixbuf *icon_cache_collapsed;
@@ -628,7 +629,8 @@
 
   return (model_node->error 
 	  || (model_node->folder
-	      && gtk_file_folder_is_finished_loading (model_node->folder)));
+	      && gtk_file_folder_is_finished_loading (model_node->folder)
+	      && model_node->pending_adds == 0));
 }
 
 static void emit_node_changed(GNode *node)
@@ -1149,8 +1151,16 @@
 static gboolean
 dfa_run (gpointer data)
 {
+  GNode *node;
+  HildonFileSystemModelNode *model_node;
+
   dfa_clos *c = (dfa_clos *)data;
   
+  node = hildon_file_system_model_search_folder (c->monitor);
+  model_node = node->data;
+
+  model_node->pending_adds -= g_slist_length (c->paths);
+
   hildon_file_system_model_files_added (c->monitor, c->paths, c->data);
 
   g_object_unref (c->monitor);
@@ -1166,12 +1176,20 @@
 		   GSList * paths,
 		   gpointer data)
 {
+  GNode *node;
+  HildonFileSystemModelNode *model_node;
+
   dfa_clos *c = g_new0 (dfa_clos, 1);
 
   g_object_ref (monitor);
   paths = gtk_file_paths_copy (paths);
   g_object_ref (data);
 
+  node = hildon_file_system_model_search_folder (monitor);
+  model_node = node->data;
+
+  model_node->pending_adds += g_slist_length (paths);
+
   c->monitor = monitor;
   c->paths = paths;
   c->data = data;
@@ -2780,7 +2798,7 @@
       return TRUE;
     }
 
-    DBG ("NOT FOUND %s\n", (char *)path);
+    DBG ("NEED PARENT %s\n", (char *)path);
 
     /* No, path was not found. Let's try go one level up and loading more
        contents */
@@ -2891,6 +2909,7 @@
 {
   GNode *parent_node;
   HildonFileSystemModelNode *parent_model_node;
+  time_t max_time = time (NULL) + 5;
 
   g_return_if_fail(HILDON_IS_FILE_SYSTEM_MODEL(model));
   g_return_if_fail(parent_iter != NULL);
@@ -2905,7 +2924,8 @@
 	link_file_folder (parent_node, parent_model_node->path);
       else
 	DBG ("NOT LINKING %s\n",  (char *)parent_model_node->path);
-      while (!is_node_loaded (model->priv, parent_node))
+      while (!is_node_loaded (model->priv, parent_node)
+	     && time (NULL) < max_time)
 	{
 	  DBG ("-");
 	  gtk_main_iteration ();


More information about the maemo-commits mailing list