projects
/
geeqie.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5276a3f
)
call notify functions in in an idle call
author
Vladimir Nadvornik
<nadvornik@suse.cz>
Sun, 2 Oct 2011 09:12:44 +0000
(11:12 +0200)
committer
Vladimir Nadvornik
<nadvornik@suse.cz>
Sun, 2 Oct 2011 09:12:44 +0000
(11:12 +0200)
src/filedata.c
patch
|
blob
|
history
diff --git
a/src/filedata.c
b/src/filedata.c
index
d90f75c
..
a0bb4e9
100644
(file)
--- a/
src/filedata.c
+++ b/
src/filedata.c
@@
-2524,6
+2524,12
@@
GList *file_data_process_groups_in_selection(GList *list, gboolean ungroup, GLis
implementation in view_file_list.c */
implementation in view_file_list.c */
+typedef struct _NotifyIdleData NotifyIdleData;
+
+struct _NotifyIdleData {
+ FileData *fd;
+ NotifyType type;
+};
typedef struct _NotifyData NotifyData;
typedef struct _NotifyData NotifyData;
@@
-2597,17
+2603,29
@@
gboolean file_data_unregister_notify_func(FileDataNotifyFunc func, gpointer data
}
}
-
void file_data_send_notification(FileData *fd, NotifyType type
)
+
gboolean file_data_send_notification_idle_cb(gpointer data
)
{
{
+ NotifyIdleData *nid = (NotifyIdleData *)data;
GList *work = notify_func_list;
while (work)
{
NotifyData *nd = (NotifyData *)work->data;
GList *work = notify_func_list;
while (work)
{
NotifyData *nd = (NotifyData *)work->data;
- nd->func(
fd,
type, nd->data);
+ nd->func(
nid->fd, nid->
type, nd->data);
work = work->next;
}
work = work->next;
}
+ file_data_unref(nid->fd);
+ g_free(nid);
+ return FALSE;
+}
+
+void file_data_send_notification(FileData *fd, NotifyType type)
+{
+ NotifyIdleData *nid = g_new0(NotifyIdleData, 1);
+ nid->fd = file_data_ref(fd);
+ nid->type = type;
+ g_idle_add_full(G_PRIORITY_HIGH, file_data_send_notification_idle_cb, nid, NULL);
}
static GHashTable *file_data_monitor_pool = NULL;
}
static GHashTable *file_data_monitor_pool = NULL;