From: tokyo4j Date: Thu, 28 Nov 2024 12:34:24 +0000 (+0900) Subject: node: add node_scaled_scene_buffer_from_node X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=9a3412324db8046a7355676a1eaba542a47b76a9;p=proto%2Flabwc.git node: add node_scaled_scene_buffer_from_node --- diff --git a/include/node.h b/include/node.h index 538fc98f..80d03e9f 100644 --- a/include/node.h +++ b/include/node.h @@ -8,6 +8,7 @@ struct lab_layer_surface; struct lab_layer_popup; struct menuitem; struct ssd_button; +struct scaled_scene_buffer; enum node_descriptor_type { LAB_NODE_DESC_NODE = 0, @@ -19,6 +20,7 @@ enum node_descriptor_type { LAB_NODE_DESC_IME_POPUP, LAB_NODE_DESC_MENUITEM, LAB_NODE_DESC_TREE, + LAB_NODE_DESC_SCALED_SCENE_BUFFER, LAB_NODE_DESC_SSD_BUTTON, }; @@ -81,4 +83,11 @@ struct menuitem *node_menuitem_from_node( struct ssd_button *node_ssd_button_from_node( struct wlr_scene_node *wlr_scene_node); +/** + * node_scaled_scene_buffer_from_node - return scaled_scene_buffer from node + * @wlr_scene_node: wlr_scene_node from which to return data + */ +struct scaled_scene_buffer *node_scaled_scene_buffer_from_node( + struct wlr_scene_node *wlr_scene_node); + #endif /* LABWC_NODE_DESCRIPTOR_H */ diff --git a/src/common/scaled-scene-buffer.c b/src/common/scaled-scene-buffer.c index 6a19891a..19575f4b 100644 --- a/src/common/scaled-scene-buffer.c +++ b/src/common/scaled-scene-buffer.c @@ -10,6 +10,7 @@ #include "buffer.h" #include "common/mem.h" #include "common/scaled-scene-buffer.h" +#include "node.h" /** * TODO @@ -226,6 +227,8 @@ scaled_scene_buffer_create(struct wlr_scene_tree *parent, free(self); return NULL; } + node_descriptor_create(&self->scene_buffer->node, + LAB_NODE_DESC_SCALED_SCENE_BUFFER, self); self->impl = impl; /* diff --git a/src/desktop.c b/src/desktop.c index fb2173d5..e8c36749 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -348,6 +348,7 @@ get_cursor_context(struct server *server) return ret; case LAB_NODE_DESC_NODE: case LAB_NODE_DESC_TREE: + case LAB_NODE_DESC_SCALED_SCENE_BUFFER: break; } } diff --git a/src/node.c b/src/node.c index 84ca3f6c..328c0eb9 100644 --- a/src/node.c +++ b/src/node.c @@ -79,3 +79,12 @@ node_ssd_button_from_node(struct wlr_scene_node *wlr_scene_node) assert(node_descriptor->type == LAB_NODE_DESC_SSD_BUTTON); return (struct ssd_button *)node_descriptor->data; } + +struct scaled_scene_buffer * +node_scaled_scene_buffer_from_node(struct wlr_scene_node *wlr_scene_node) +{ + assert(wlr_scene_node->data); + struct node_descriptor *node_descriptor = wlr_scene_node->data; + assert(node_descriptor->type == LAB_NODE_DESC_SCALED_SCENE_BUFFER); + return (struct scaled_scene_buffer *)node_descriptor->data; +}