wlr_scene: Parse out WLR_SCENE_DEBUG_DAMAGE

This commit is contained in:
Alexander Orzechowski 2022-05-20 18:28:08 -04:00
parent 4ac19e9f9c
commit 17f5414b1a
3 changed files with 31 additions and 0 deletions

View file

@ -45,6 +45,12 @@ wlroots reads these environment variables
* *WLR_RENDERER_ALLOW_SOFTWARE*: allows the gles2 renderer to use software * *WLR_RENDERER_ALLOW_SOFTWARE*: allows the gles2 renderer to use software
rendering rendering
## scenes
* *WLR_SCENE_DEBUG_DAMAGE*: specifies debug options for screen damage related
tasks for compositors that use scenes. (available options: NONE, RERENDER,
HIGHLIGHT)
# Generic # Generic
* *DISPLAY*: if set probe X11 backend in `wlr_backend_autocreate` * *DISPLAY*: if set probe X11 backend in `wlr_backend_autocreate`

View file

@ -71,6 +71,12 @@ struct wlr_scene_node {
struct wlr_addon_set addons; struct wlr_addon_set addons;
}; };
enum wlr_scene_debug_damage_option {
WLR_SCENE_DEBUG_DAMAGE_NONE,
WLR_SCENE_DEBUG_DAMAGE_RERENDER,
WLR_SCENE_DEBUG_DAMAGE_HIGHLIGHT
};
/** The root scene-graph node. */ /** The root scene-graph node. */
struct wlr_scene { struct wlr_scene {
struct wlr_scene_node node; struct wlr_scene_node node;
@ -83,6 +89,8 @@ struct wlr_scene {
// private state // private state
struct wl_listener presentation_destroy; struct wl_listener presentation_destroy;
enum wlr_scene_debug_damage_option debug_damage_option;
}; };
/** A sub-tree in the scene-graph. */ /** A sub-tree in the scene-graph. */

View file

@ -130,6 +130,23 @@ struct wlr_scene *wlr_scene_create(void) {
scene_node_init(&scene->node, WLR_SCENE_NODE_ROOT, NULL); scene_node_init(&scene->node, WLR_SCENE_NODE_ROOT, NULL);
wl_list_init(&scene->outputs); wl_list_init(&scene->outputs);
wl_list_init(&scene->presentation_destroy.link); wl_list_init(&scene->presentation_destroy.link);
char *debug_damage = getenv("WLR_SCENE_DEBUG_DAMAGE");
if (debug_damage) {
wlr_log(WLR_INFO, "Loading WLR_SCENE_DEBUG_DAMAGE option: %s", debug_damage);
}
if (!debug_damage || strcmp(debug_damage, "none") == 0) {
scene->debug_damage_option = WLR_SCENE_DEBUG_DAMAGE_NONE;
} else if (strcmp(debug_damage, "rerender") == 0) {
scene->debug_damage_option = WLR_SCENE_DEBUG_DAMAGE_RERENDER;
} else if (strcmp(debug_damage, "highlight") == 0) {
scene->debug_damage_option = WLR_SCENE_DEBUG_DAMAGE_HIGHLIGHT;
} else {
wlr_log(WLR_ERROR, "Unknown WLR_SCENE_DEBUG_DAMAGE option: %s", debug_damage);
scene->debug_damage_option = WLR_SCENE_DEBUG_DAMAGE_NONE;
}
return scene; return scene;
} }