tags 576624 patch
thanks
The attached patch will fix both problems for
vte_terminal_set_background_image_file() and
vte_terminal_set_background_transparent().
Upstream git codebase has changed much, so I will not send this patch to
upstream.
The most easy way to test the patch:
1. run Xephyr (and do not set any background)
2. run evilvte in Sid(and Sueeze)
3. Right-click in evilvte and select "Toggle background"
It is cycled by the sequence:
"background image at $HOME/.config/evilvte/background.png",
"pseudo transparency",
"no background and no transparency (aka black)"
When there is no $HOME/.config/evilvte/background.png,
evilvte will show nothing as background(aka black).
You may link any image file to $HOME/.config/evilvte/background.png.
(All image formats that can be processed by GTK+, not only png.)
4. Everything should be fine with the patch.
Kind regards
Wen-Yen Chuang (caleb)
GNOME #614910; set_background_image does not accept None in Python bindings
Debian #576624; Segfault when loading the background pixbuf failed
Patch author: Tetralet <tetralet AT gmail DOT com>
--- vte-0.24.0.orig/src/vtebg.c
+++ vte-0.24.0/src/vtebg.c
@@ -469,6 +469,8 @@
item->source_file = g_strdup(source_file);
pixbuf = gdk_pixbuf_new_from_file(source_file, NULL);
}
+ if (!pixbuf)
+ return NULL;
break;
default:
g_assert_not_reached();
@@ -479,8 +481,11 @@
width = gdk_pixbuf_get_width(pixbuf);
height = gdk_pixbuf_get_height(pixbuf);
} else {
- width = cairo_xlib_surface_get_width(bg->root_surface);
- height = cairo_xlib_surface_get_height(bg->root_surface);
+ if (bg->root_surface) {
+ width = cairo_xlib_surface_get_width(bg->root_surface);
+ height = cairo_xlib_surface_get_height(bg->root_surface);
+ } else
+ return NULL;
}
item->surface =