diff --git a/src/init.c b/src/init.c index 97fc76d..d0c22af 100644 --- a/src/init.c +++ b/src/init.c @@ -107,6 +107,7 @@ void handle_env_vars() debug_thumbnails = getenv("DEBUG_THUMBNAILS") != NULL; debug_timers = getenv("DEBUG_TIMERS") != NULL; debug_executors = getenv("DEBUG_EXECUTORS") != NULL; + thumb_use_shm = getenv("TINT2_THUMBNAIL_SHM") != NULL; if (debug_fps) { init_fps_distribution(); char *s = getenv("TRACING_FPS_THRESHOLD"); diff --git a/src/panel.h b/src/panel.h index cb9bca5..50dbc47 100644 --- a/src/panel.h +++ b/src/panel.h @@ -98,6 +98,7 @@ extern gboolean debug_frames; extern gboolean debug_thumbnails; extern double ui_scale_dpi_ref; extern double ui_scale_monitor_size_ref; +extern gboolean thumb_use_shm; typedef struct Panel { Area area; diff --git a/src/util/window.c b/src/util/window.c index a3c6168..40dfd8e 100644 --- a/src/util/window.c +++ b/src/util/window.c @@ -578,11 +578,12 @@ gboolean cairo_surface_is_blank(cairo_surface_t *image_surface) return empty; } +gboolean thumb_use_shm; + cairo_surface_t *get_window_thumbnail(Window win, int size) { cairo_surface_t *image_surface = NULL; - const gboolean shm_allowed = FALSE; - if (shm_allowed && server.has_shm && server.composite_manager) { + if (thumb_use_shm && server.has_shm && server.composite_manager) { image_surface = get_window_thumbnail_ximage(win, (size_t)size, TRUE); if (image_surface && cairo_surface_is_blank(image_surface)) { cairo_surface_destroy(image_surface);