diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-11-18 09:38:27 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-11-18 09:38:27 +0000 |
commit | 536c3711867ec947c1738f2c4b96f22e4863322d (patch) | |
tree | 697733f5cb713908dcf378e13fd15a798a906a91 /x11-terms/sakura/files | |
parent | f65628136faa35d0c4d3b5e7332275c7b35fcd96 (diff) |
gentoo resync : 18.11.2018
Diffstat (limited to 'x11-terms/sakura/files')
-rw-r--r-- | x11-terms/sakura/files/sakura-3.6.0-tab-crash.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/x11-terms/sakura/files/sakura-3.6.0-tab-crash.patch b/x11-terms/sakura/files/sakura-3.6.0-tab-crash.patch new file mode 100644 index 000000000000..4d1a33e27510 --- /dev/null +++ b/x11-terms/sakura/files/sakura-3.6.0-tab-crash.patch @@ -0,0 +1,60 @@ +--- a/src/sakura.c ++++ b/src/sakura.c +@@ -339,6 +339,7 @@ + bool label_set_byuser; + GtkBorder padding; /* inner-property data */ + int colorset; ++ gulong exit_handler_id; + }; + + +@@ -984,31 +985,6 @@ + if (npages==1) { + sakura_config_done(); + } +- +- /* Workaround for libvte strange behaviour. There is not child-exited signal for +- the last terminal, so we need to kill it here. Check with libvte authors about +- child-exited/eof signals */ +- if (gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook))==0) { +- +- term = sakura_get_page_term(sakura, 0); +- +- if (option_hold==TRUE) { +- SAY("hold option has been activated"); +- return; +- } +- +- //SAY("waiting for terminal pid (in eof) %d", term->pid); +- //waitpid(term->pid, &status, WNOHANG); +- /* TODO: check wait return */ +- /* Child should be automatically reaped because we don't use G_SPAWN_DO_NOT_REAP_CHILD flag */ +- g_spawn_close_pid(term->pid); +- +- sakura_del_tab(0); +- +- npages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook)); +- if (npages==0) +- sakura_destroy(); +- } + } + + /* This handler is called when window title changes, and is used to change window and notebook pages titles */ +@@ -3167,7 +3143,7 @@ + g_signal_connect(G_OBJECT(term->vte), "bell", G_CALLBACK(sakura_beep), NULL); + g_signal_connect(G_OBJECT(term->vte), "increase-font-size", G_CALLBACK(sakura_increase_font), NULL); + g_signal_connect(G_OBJECT(term->vte), "decrease-font-size", G_CALLBACK(sakura_decrease_font), NULL); +- g_signal_connect(G_OBJECT(term->vte), "child-exited", G_CALLBACK(sakura_child_exited), NULL); ++ term->exit_handler_id = g_signal_connect(G_OBJECT(term->vte), "child-exited", G_CALLBACK(sakura_child_exited), NULL); + g_signal_connect(G_OBJECT(term->vte), "eof", G_CALLBACK(sakura_eof), NULL); + g_signal_connect(G_OBJECT(term->vte), "window-title-changed", G_CALLBACK(sakura_title_changed), NULL); + g_signal_connect_swapped(G_OBJECT(term->vte), "button-press-event", G_CALLBACK(sakura_button_press), sakura.menu); +@@ -3366,6 +3342,7 @@ + } + + gtk_widget_hide(term->hbox); ++ g_signal_handler_disconnect (term->vte, term->exit_handler_id); + gtk_notebook_remove_page(GTK_NOTEBOOK(sakura.notebook), page); + + /* Find the next page, if it exists, and grab focus */ + |