summaryrefslogtreecommitdiffstats
path: root/sway/tree/view.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c20
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) {
1070bool view_is_urgent(struct sway_view *view) { 1071bool 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
1075void 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
1083void 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}