static gboolean
monitor_callback (GFileMonitor *monitor,
GFile *child,
GFile *other_file,
GFileMonitorEvent eflags,
gpointer user_data)
{
MenuMonitor *menu_monitor;
MonitorCallbackInfo *info;
gpointer weak = NULL;
menu_monitor = (MenuMonitor *) user_data;
info = g_new0 (MonitorCallbackInfo, 1);
info->menu_monitor = menu_monitor;
info->weak_ptr = NULL;
//g_object_add_weak_pointer (G_OBJECT (menu_monitor->monitor), &(info->weak_ptr));
g_object_add_weak_pointer (G_OBJECT (menu_monitor->monitor), &weak);
//g_print("%d\n", G_OBJECT (menu_monitor->monitor)->ref_count);
g_print ("%p %p %p %p\n", menu_monitor->monitor, G_OBJECT(menu_monitor->monitor), info->weak_ptr, weak);
info->child = g_object_ref (child);
info->eflags = eflags;
g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, 2, monitor_callback_delayed, info, NULL);
return TRUE;
}