diff options
| author | Alexander Orzechowski <[email protected]> | 2022-05-19 14:17:51 -0400 | 
|---|---|---|
| committer | Alexander Orzechowski <[email protected]> | 2022-05-19 14:17:51 -0400 | 
| commit | 74ada54cccbcbdd19aafc3b102d49e84f45c1f4e (patch) | |
| tree | 3c659c997448a0217300b81abd701f11bfc07162 | |
| parent | f6e31284060e036898877ed4e13d07af6397cf4b (diff) | |
wlr_scene: Add setter for buffer of a wlr_scene_buffer
| -rw-r--r-- | wlr_scene.c | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/wlr_scene.c b/wlr_scene.c index 777f8cb..e1e381d 100644 --- a/wlr_scene.c +++ b/wlr_scene.c @@ -367,6 +367,27 @@ struct wlr_scene_buffer *wlr_scene_buffer_create(struct wlr_scene_node *parent,  	return scene_buffer;  } +void wlr_scene_buffer_set_buffer(struct wlr_scene_buffer *scene_buffer, +		struct wlr_buffer *buffer)  { +	if (buffer == scene_buffer->buffer) { +		return; +	} + +	scene_node_damage_whole(&scene_buffer->node); + +	wlr_texture_destroy(scene_buffer->texture); +	scene_buffer->texture = NULL; +	wlr_buffer_unlock(scene_buffer->buffer); + +	if (buffer) { +		scene_buffer->buffer = wlr_buffer_lock(buffer); +	} else { +		scene_buffer->buffer = NULL; +	} + +	scene_node_damage_whole(&scene_buffer->node); +} +  void wlr_scene_buffer_set_source_box(struct wlr_scene_buffer *scene_buffer,  		const struct wlr_fbox *box) {  	struct wlr_fbox *cur = &scene_buffer->src_box;  | 
