#include static gboolean progressbar_pulse (gpointer data) { gtk_progress_bar_pulse(GTK_PROGRESS_BAR(data)); return TRUE; } static gboolean stop (GtkWidget *w, gpointer data) { guint tag = *(guint *) data; g_source_remove(tag); gtk_main_quit(); return FALSE; } int main (int argc, char *argv[]) { GtkWidget *window, *progressbar; guint tag; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); progressbar = gtk_progress_bar_new(); gtk_container_add(GTK_CONTAINER(window), progressbar); gtk_widget_show_all(window); tag = g_timeout_add(50, progressbar_pulse, progressbar); g_signal_connect(window, "destroy", G_CALLBACK(stop), &tag); gtk_main(); return 0; }