gboolean on_thumbnail_idle( VFSThumbnailLoader* loader ) { VFSFileInfo* file; /* g_debug( "ENTER ON_THUMBNAIL_IDLE" ); */ vfs_async_task_lock( loader->task ); while( ( file = (VFSFileInfo*)g_queue_pop_head(loader->update_queue) ) ) { GDK_THREADS_ENTER(); vfs_dir_emit_thumbnail_loaded( loader->dir, file ); vfs_file_info_unref( file ); GDK_THREADS_LEAVE(); } loader->idle_handler = 0; vfs_async_task_unlock( loader->task ); if( vfs_async_task_is_finished( loader->task ) ) { /* g_debug( "FREE LOADER IN IDLE HANDLER" ); */ loader->dir->thumbnail_loader = NULL; vfs_thumbnail_loader_free(loader); } /* g_debug( "LEAVE ON_THUMBNAIL_IDLE" ); */ return FALSE; }
static void on_stop_search( GtkWidget* btn, FindFile* data ) { if( data->task && ! vfs_async_task_is_finished( data->task ) ) { // see note in vfs-async-task.c: vfs_async_task_real_cancel() GDK_THREADS_LEAVE(); vfs_async_task_cancel( data->task ); GDK_THREADS_ENTER(); } }