From 91ca5a8fe86294ac2d536c510f777ccfe04ce4b7 Mon Sep 17 00:00:00 2001 From: Michael Fisher Date: Mon, 18 Nov 2019 20:46:48 -0500 Subject: eg-sampler: Destroy widgets in the correct order --- plugins/eg-sampler.lv2/sampler_ui.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'plugins/eg-sampler.lv2') diff --git a/plugins/eg-sampler.lv2/sampler_ui.c b/plugins/eg-sampler.lv2/sampler_ui.c index 0140e24..b5e40db 100644 --- a/plugins/eg-sampler.lv2/sampler_ui.c +++ b/plugins/eg-sampler.lv2/sampler_ui.c @@ -214,6 +214,16 @@ on_canvas_expose(GtkWidget* widget, GdkEventExpose* event, gpointer data) return TRUE; } +static void +destroy_window(SamplerUI* ui) +{ + if (ui->window) { + gtk_container_remove(GTK_CONTAINER(ui->window), ui->box); + gtk_widget_destroy(ui->window); + ui->window = NULL; + } +} + static gboolean on_window_closed(GtkWidget* widget, GdkEvent* event, gpointer data) { @@ -314,12 +324,17 @@ static void cleanup(LV2UI_Handle handle) { SamplerUI* ui = (SamplerUI*)handle; - gtk_widget_destroy(ui->box); - gtk_widget_destroy(ui->play_button); + + if (ui->window) { + destroy_window(ui); + } + gtk_widget_destroy(ui->canvas); - gtk_widget_destroy(ui->button_box); + gtk_widget_destroy(ui->play_button); gtk_widget_destroy(ui->file_button); gtk_widget_destroy(ui->request_file_button); + gtk_widget_destroy(ui->button_box); + gtk_widget_destroy(ui->box); free(ui); } @@ -399,9 +414,7 @@ ui_hide(LV2UI_Handle handle) SamplerUI* ui = (SamplerUI*)handle; if (ui->window) { - gtk_container_remove(GTK_CONTAINER(ui->window), ui->box); - gtk_widget_destroy(ui->window); - ui->window = NULL; + destroy_window(ui); } return 0; -- cgit v1.2.1