]> git.mdlowis.com Git - proto/labwc.git/commitdiff
node: add node_scaled_scene_buffer_from_node
authortokyo4j <hrak1529@gmail.com>
Thu, 28 Nov 2024 12:34:24 +0000 (21:34 +0900)
committerHiroaki Yamamoto <hrak1529@gmail.com>
Mon, 23 Dec 2024 09:11:32 +0000 (18:11 +0900)
include/node.h
src/common/scaled-scene-buffer.c
src/desktop.c
src/node.c

index 538fc98fedbaee36c2da34e9b2a425a51789c746..80d03e9f1ca32917542f5813f496de30f6a0fe61 100644 (file)
@@ -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 */
index 6a19891aa425d6fe8bae78d33079daa1c54676e9..19575f4b878db3f6311c7020924af6d5fa3ac04e 100644 (file)
@@ -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;
        /*
index fb2173d562e6448fdbd9f0623eee94d64b426169..e8c36749db4aaee5a8846b3501f0b5d021a4f61b 100644 (file)
@@ -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;
                        }
                }
index 84ca3f6c6320a3f68a42f62698226eec095780f8..328c0eb9d81c8813ae7e92578d5384e82f31786e 100644 (file)
@@ -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;
+}