60 lines
2.4 KiB
Diff
60 lines
2.4 KiB
Diff
--- a/sway/tree/view.c
|
|
+++ b/sway/tree/view.c
|
|
@@ -1,4 +1,6 @@
|
|
#include <stdlib.h>
|
|
+#include <stdio.h>
|
|
+#include <time.h>
|
|
#include <strings.h>
|
|
#include <wayland-server-core.h>
|
|
#include <wlr/config.h>
|
|
@@ -1276,7 +1278,18 @@
|
|
return view->urgent.tv_sec || view->urgent.tv_nsec;
|
|
}
|
|
|
|
+/* WHY: passive private evidence identifies actual saved nodes and lifetime. */
|
|
+static long long saved_ns(void) {
|
|
+ struct timespec ts;
|
|
+ clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
+ return (long long)ts.tv_sec * 1000000000LL + ts.tv_nsec;
|
|
+}
|
|
+
|
|
void view_remove_saved_buffer(struct sway_view *view) {
|
|
+ fprintf(stderr, "SB_TREE_DESTROY ns=%lld view=%p con=%p tree=%p content=%p\n",
|
|
+ saved_ns(), (void *)view, (void *)view->container,
|
|
+ (void *)view->saved_surface_tree, (void *)view->content_tree);
|
|
+
|
|
if (!sway_assert(view->saved_surface_tree, "Expected a saved buffer")) {
|
|
return;
|
|
}
|
|
@@ -1309,6 +1322,10 @@
|
|
wlr_scene_buffer_set_buffer(sbuf, buffer->buffer);
|
|
wlr_scene_buffer_set_corner_radii(sbuf, buffer->corners);
|
|
scene_descriptor_assign(&sbuf->node, SWAY_SCENE_DESC_SAVED_BUFFER, tree);
|
|
+ fprintf(stderr, "SB_BUFFER_CREATE ns=%lld node=%p source_node=%p source_buffer=%p buffer=%p size=%dx%d pos=%d,%d parent=%p\n",
|
|
+ saved_ns(), (void *)&sbuf->node, (void *)&buffer->node,
|
|
+ (void *)buffer->buffer, (void *)sbuf->buffer, buffer->buffer ? buffer->buffer->width : 0,
|
|
+ buffer->buffer ? buffer->buffer->height : 0, sx, sy, (void *)sbuf->node.parent);
|
|
}
|
|
|
|
void view_save_buffer(struct sway_view *view) {
|
|
@@ -1317,6 +1334,10 @@
|
|
}
|
|
|
|
view->saved_surface_tree = wlr_scene_tree_create(view->scene_tree);
|
|
+ fprintf(stderr, "SB_TREE_CREATE ns=%lld view=%p con=%p tree=%p parent=%p content=%p\n",
|
|
+ saved_ns(), (void *)view, (void *)view->container,
|
|
+ (void *)view->saved_surface_tree, (void *)view->scene_tree,
|
|
+ (void *)view->content_tree);
|
|
if (!view->saved_surface_tree) {
|
|
sway_log(SWAY_ERROR, "Could not allocate a scene tree node when saving a surface");
|
|
return;
|
|
@@ -1333,6 +1354,9 @@
|
|
|
|
wlr_scene_node_set_enabled(&view->content_tree->node, false);
|
|
wlr_scene_node_set_enabled(&view->saved_surface_tree->node, true);
|
|
+ fprintf(stderr, "SB_ENABLE ns=%lld view=%p tree=%p content_enabled=%d saved_enabled=%d\n",
|
|
+ saved_ns(), (void *)view, (void *)view->saved_surface_tree,
|
|
+ view->content_tree->node.enabled, view->saved_surface_tree->node.enabled);
|
|
}
|
|
|
|
bool view_is_transient_for(struct sway_view *child,
|