diff options
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r-- | sway/tree/view.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index 8f54cc11..0dbd3812 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c | |||
@@ -2,6 +2,7 @@ | |||
2 | #include <stdlib.h> | 2 | #include <stdlib.h> |
3 | #include <wayland-server.h> | 3 | #include <wayland-server.h> |
4 | #include <wlr/render/wlr_renderer.h> | 4 | #include <wlr/render/wlr_renderer.h> |
5 | #include <wlr/types/wlr_buffer.h> | ||
5 | #include <wlr/types/wlr_output_layout.h> | 6 | #include <wlr/types/wlr_output_layout.h> |
6 | #include "config.h" | 7 | #include "config.h" |
7 | #ifdef HAVE_XWAYLAND | 8 | #ifdef HAVE_XWAYLAND |
@@ -1070,3 +1071,22 @@ void view_set_urgent(struct sway_view *view, bool enable) { | |||
1070 | bool view_is_urgent(struct sway_view *view) { | 1071 | bool view_is_urgent(struct sway_view *view) { |
1071 | return view->urgent.tv_sec || view->urgent.tv_nsec; | 1072 | return view->urgent.tv_sec || view->urgent.tv_nsec; |
1072 | } | 1073 | } |
1074 | |||
1075 | void view_remove_saved_buffer(struct sway_view *view) { | ||
1076 | if (!sway_assert(view->saved_buffer, "Expected a saved buffer")) { | ||
1077 | return; | ||
1078 | } | ||
1079 | wlr_buffer_unref(view->saved_buffer); | ||
1080 | view->saved_buffer = NULL; | ||
1081 | } | ||
1082 | |||
1083 | void view_save_buffer(struct sway_view *view) { | ||
1084 | if (!sway_assert(!view->saved_buffer, "Didn't expect saved buffer")) { | ||
1085 | view_remove_saved_buffer(view); | ||
1086 | } | ||
1087 | if (view->surface && wlr_surface_has_buffer(view->surface)) { | ||
1088 | view->saved_buffer = wlr_buffer_ref(view->surface->buffer); | ||
1089 | view->saved_buffer_width = view->surface->current.width; | ||
1090 | view->saved_buffer_height = view->surface->current.height; | ||
1091 | } | ||
1092 | } | ||