swayfx-mosaic/tooling/probes/step20c-saved-transaction-buffer/sway-saved-trace.patch

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,