Thread::~Thread() { assert(!searching); exit = true; start_searching(); stdThread.join(); }
void dlg_cover_chooser (GooWindow *window, const char *album, const char *artist) { DialogData *data; GtkListStore *model; GtkCellRenderer *renderer; data = g_new0 (DialogData, 1); data->window = window; data->builder = _gtk_builder_new_from_resource ("cover-chooser.ui"); data->album = g_strdup (album); data->artist = g_strdup (artist); data->cancellable = g_cancellable_new (); /* Get the widgets. */ data->dialog = GET_WIDGET ("cover_chooser_dialog"); model = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, GDK_TYPE_PIXBUF); data->icon_view = gtk_icon_view_new_with_model (GTK_TREE_MODEL (model)); g_object_unref (model); renderer = gtk_cell_renderer_pixbuf_new (); g_object_set (renderer, "follow-state", TRUE, NULL); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (data->icon_view), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (data->icon_view), renderer, "pixbuf", IMAGE_COLUMN, NULL); gtk_widget_show (data->icon_view); gtk_container_add (GTK_CONTAINER (GET_WIDGET ("icon_view_scrolledwindow")), data->icon_view); /* Set widgets data. */ backup_cover_image (data); gtk_widget_set_sensitive (GET_WIDGET ("ok_button"), FALSE); /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect_swapped (GET_WIDGET ("cancel_button"), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (data->dialog)); g_signal_connect (GET_WIDGET ("ok_button"), "clicked", G_CALLBACK (ok_button_clicked_cb), data); g_signal_connect (GET_WIDGET ("revert_button"), "clicked", G_CALLBACK (revert_button_clicked_cb), data); g_signal_connect (G_OBJECT (data->icon_view), "selection-changed", G_CALLBACK (icon_view_selection_changed_cb), data); g_signal_connect (G_OBJECT (data->icon_view), "item-activated", G_CALLBACK (icon_view_item_activated_cb), data); g_signal_connect (GET_WIDGET ("cancel_search_button"), "clicked", G_CALLBACK (cancel_search_button_clicked_cb), data); /* run dialog. */ gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (window)); gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE); gtk_widget_show (data->dialog); start_searching (data); }