void setButtonsTrue() { GtkWidget *buttonRecord = glade_xml_get_widget(xml, "buttonRecord"); GtkWidget *buttonPlay = glade_xml_get_widget(xml, "buttonPlay"); gtk_widget_set_sensitive(buttonRecord, TRUE); gtk_widget_set_sensitive(buttonPlay, TRUE); } void setButtonsFalse() { GtkWidget *buttonRecord = glade_xml_get_widget(xml, "buttonRecord"); GtkWidget *buttonPlay = glade_xml_get_widget(xml, "buttonPlay"); gtk_widget_set_sensitive(buttonRecord, FALSE); gtk_widget_set_sensitive(buttonPlay, FALSE); } void record(void *args) { g_idle_add(setButtonsFalse, NULL); sleep(2); g_idle_add(setButtonsTrue, NULL); } code from recordclick: GError *error; /* Start record Thread */ // setButtonsFalse(); if (!g_thread_create(record, NULL, FALSE, &error)) { /* GError free? */ g_error ("Failed to create record thread: %s\n", error->message); }