Don't emit add events during inital scan.

SVN revision: 29456
This commit is contained in:
Sebastian Dransfeld 2007-04-10 07:18:51 +00:00
parent e7107630db
commit 838a4883b7
1 changed files with 30 additions and 21 deletions

View File

@ -49,7 +49,7 @@ struct Efreet_Util_Desktop
};
static int efreet_util_cache_fill(void *data);
static void efreet_util_cache_add(const char *path, const char *file_id, int priority);
static void efreet_util_cache_add(const char *path, const char *file_id, int priority, int event);
static void efreet_util_cache_remove(const char *path, const char *file_id, int priority);
static void efreet_util_cache_reload(const char *path, const char *file_id, int priority);
static void efreet_util_cache_dir_free(void *data);
@ -485,7 +485,7 @@ efreet_util_cache_fill(void *data)
ecore_list_append(fill->dirs, dir);
}
else
efreet_util_cache_add(buf, file_id, fill->current->priority);
efreet_util_cache_add(buf, file_id, fill->current->priority, 0);
}
if (!file)
{
@ -503,7 +503,7 @@ efreet_util_cache_fill(void *data)
}
static void
efreet_util_cache_add(const char *path, const char *file_id, int priority)
efreet_util_cache_add(const char *path, const char *file_id, int priority, int event)
{
Efreet_Desktop *desktop;
Efreet_Util_Desktop *ud;
@ -516,6 +516,8 @@ efreet_util_cache_add(const char *path, const char *file_id, int priority)
if (!desktop || desktop->type != EFREET_DESKTOP_TYPE_APPLICATION) return;
ud = ecore_hash_get(desktop_by_file_id, file_id);
if (!ud)
{
if (event)
{
Efreet_Event_Desktop_Change *ev;
@ -529,7 +531,12 @@ efreet_util_cache_add(const char *path, const char *file_id, int priority)
ev->change = EFREET_DESKTOP_CHANGE_ADD;
ecore_event_add(EFREET_EVENT_DESKTOP_CHANGE, ev, NULL, NULL);
}
else
ecore_hash_set(desktop_by_file_id, (void *)ecore_string_instance(file_id), ud);
}
else if (priority < ud->priority)
{
if (event)
{
Efreet_Event_Desktop_Change *ev;
@ -537,8 +544,10 @@ efreet_util_cache_add(const char *path, const char *file_id, int priority)
ev->current = desktop;
ev->previous = ud->desktop;
ev->change = EFREET_DESKTOP_CHANGE_UPDATE;
ud->desktop = desktop;
ecore_event_add(EFREET_EVENT_DESKTOP_CHANGE, ev, NULL, NULL);
}
else
ud->desktop = desktop;
}
if (!ecore_hash_get(file_id_by_desktop_path, desktop->orig_path))
@ -839,7 +848,7 @@ efreet_util_monitor_cb(void *data, Ecore_File_Monitor *monitor __UNUSED__,
/* Ignore */
break;
case ECORE_FILE_EVENT_CREATED_FILE:
efreet_util_cache_add(path, file_id, em->priority);
efreet_util_cache_add(path, file_id, em->priority, 1);
break;
case ECORE_FILE_EVENT_CREATED_DIRECTORY:
efreet_util_monitor(path, file_id, em->priority);