cogl: Drop CoglNode
It's not necessary anymore. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4155>
This commit is contained in:
parent
8540362d1d
commit
b0fd29ece2
@ -1,92 +0,0 @@
|
|||||||
/*
|
|
||||||
* Cogl
|
|
||||||
*
|
|
||||||
* A Low Level GPU Graphics and Utilities API
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008,2009,2010 Intel Corporation.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person
|
|
||||||
* obtaining a copy of this software and associated documentation
|
|
||||||
* files (the "Software"), to deal in the Software without
|
|
||||||
* restriction, including without limitation the rights to use, copy,
|
|
||||||
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
||||||
* of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
||||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Robert Bragg <robert@linux.intel.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "cogl/cogl-list.h"
|
|
||||||
|
|
||||||
typedef struct _CoglNodeClass CoglNodeClass;
|
|
||||||
|
|
||||||
/* Pipelines and layers represent their state in a tree structure where
|
|
||||||
* some of the state relating to a given pipeline or layer may actually
|
|
||||||
* be owned by one if is ancestors in the tree. We have a common data
|
|
||||||
* type to track the tree hierarchy so we can share code... */
|
|
||||||
struct _CoglNode
|
|
||||||
{
|
|
||||||
GObject parent_instance;
|
|
||||||
|
|
||||||
/* The parent pipeline/layer */
|
|
||||||
CoglNode *parent;
|
|
||||||
|
|
||||||
/* The list entry here contains pointers to the node's siblings */
|
|
||||||
CoglList link;
|
|
||||||
|
|
||||||
/* List of children */
|
|
||||||
CoglList children;
|
|
||||||
|
|
||||||
/* TRUE if the node took a strong reference on its parent. Weak
|
|
||||||
* pipelines for instance don't take a reference on their parent. */
|
|
||||||
gboolean has_parent_reference;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _CoglNodeClass
|
|
||||||
{
|
|
||||||
GObjectClass parent_class;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define COGL_TYPE_NODE (cogl_node_get_type ())
|
|
||||||
#define COGL_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_NODE, CoglNode))
|
|
||||||
#define COGL_NODE_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_NODE, CoglNode const))
|
|
||||||
#define COGL_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COGL_TYPE_NODE, CoglNodeClass))
|
|
||||||
#define COGL_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COGL_TYPE_NODE))
|
|
||||||
#define COGL_IS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COGL_TYPE_NODE))
|
|
||||||
#define COGL_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COGL_TYPE_NODE, CoglNodeClass))
|
|
||||||
|
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglNode, g_object_unref)
|
|
||||||
|
|
||||||
GType cogl_node_get_type (void) G_GNUC_CONST;
|
|
||||||
|
|
||||||
void
|
|
||||||
_cogl_pipeline_node_set_parent (CoglNode *node,
|
|
||||||
CoglNode *parent,
|
|
||||||
gboolean take_strong_reference);
|
|
||||||
|
|
||||||
void
|
|
||||||
_cogl_pipeline_node_unparent (CoglNode *node);
|
|
||||||
|
|
||||||
typedef gboolean (*CoglNodeChildCallback) (CoglNode *child, void *user_data);
|
|
||||||
|
|
||||||
void
|
|
||||||
_cogl_pipeline_node_foreach_child (CoglNode *node,
|
|
||||||
CoglNodeChildCallback callback,
|
|
||||||
void *user_data);
|
|
@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
* Cogl
|
|
||||||
*
|
|
||||||
* A Low Level GPU Graphics and Utilities API
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008,2009,2010 Intel Corporation.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person
|
|
||||||
* obtaining a copy of this software and associated documentation
|
|
||||||
* files (the "Software"), to deal in the Software without
|
|
||||||
* restriction, including without limitation the rights to use, copy,
|
|
||||||
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
||||||
* of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
||||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Robert Bragg <robert@linux.intel.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include "cogl/cogl-util.h"
|
|
||||||
#include "cogl/cogl-node-private.h"
|
|
||||||
|
|
||||||
G_DEFINE_ABSTRACT_TYPE (CoglNode, cogl_node, G_TYPE_OBJECT)
|
|
||||||
|
|
||||||
static void
|
|
||||||
cogl_node_class_init (CoglNodeClass *klass)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
cogl_node_init (CoglNode *node)
|
|
||||||
{
|
|
||||||
node->parent = NULL;
|
|
||||||
_cogl_list_init (&node->children);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_cogl_pipeline_node_set_parent (CoglNode *node,
|
|
||||||
CoglNode *parent,
|
|
||||||
gboolean take_strong_reference)
|
|
||||||
{
|
|
||||||
/* NB: the old parent may indirectly be keeping the new parent alive
|
|
||||||
* so we have to ref the new parent before unrefing the old.
|
|
||||||
*
|
|
||||||
* Note: we take a reference here regardless of
|
|
||||||
* take_strong_reference because weak children may need special
|
|
||||||
* handling when the parent disposes itself which relies on a
|
|
||||||
* consistent link to all weak nodes. Once the node is linked to its
|
|
||||||
* parent then we remove the reference at the end if
|
|
||||||
* take_strong_reference == FALSE. */
|
|
||||||
g_object_ref (parent);
|
|
||||||
|
|
||||||
if (node->parent)
|
|
||||||
_cogl_pipeline_node_unparent (node);
|
|
||||||
|
|
||||||
_cogl_list_insert (&parent->children, &node->link);
|
|
||||||
|
|
||||||
node->parent = parent;
|
|
||||||
node->has_parent_reference = take_strong_reference;
|
|
||||||
|
|
||||||
/* Now that there is a consistent parent->child link we can remove
|
|
||||||
* the parent reference if no reference was requested. If it turns
|
|
||||||
* out that the new parent was only being kept alive by the old
|
|
||||||
* parent then it will be disposed of here. */
|
|
||||||
if (!take_strong_reference)
|
|
||||||
g_object_unref (parent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_cogl_pipeline_node_unparent (CoglNode *node)
|
|
||||||
{
|
|
||||||
CoglNode *parent = node->parent;
|
|
||||||
|
|
||||||
if (parent == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
g_return_if_fail (!_cogl_list_empty (&parent->children));
|
|
||||||
|
|
||||||
_cogl_list_remove (&node->link);
|
|
||||||
|
|
||||||
if (node->has_parent_reference)
|
|
||||||
g_object_unref (parent);
|
|
||||||
|
|
||||||
node->parent = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_cogl_pipeline_node_foreach_child (CoglNode *node,
|
|
||||||
CoglNodeChildCallback callback,
|
|
||||||
void *user_data)
|
|
||||||
{
|
|
||||||
CoglNode *child, *next;
|
|
||||||
|
|
||||||
_cogl_list_for_each_safe (child, next, &node->children, link)
|
|
||||||
callback (child, user_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -335,7 +335,6 @@ typedef struct _CoglDisplay CoglDisplay;
|
|||||||
typedef struct _CoglFramebufferBits CoglFramebufferBits;
|
typedef struct _CoglFramebufferBits CoglFramebufferBits;
|
||||||
typedef struct _CoglFrameInfo CoglFrameInfo;
|
typedef struct _CoglFrameInfo CoglFrameInfo;
|
||||||
typedef struct _CoglIndices CoglIndices;
|
typedef struct _CoglIndices CoglIndices;
|
||||||
typedef struct _CoglNode CoglNode;
|
|
||||||
typedef struct _CoglParamSpecColor CoglParamSpecColor;
|
typedef struct _CoglParamSpecColor CoglParamSpecColor;
|
||||||
typedef struct _CoglPipeline CoglPipeline;
|
typedef struct _CoglPipeline CoglPipeline;
|
||||||
typedef struct _CoglPixelBuffer CoglPixelBuffer;
|
typedef struct _CoglPixelBuffer CoglPixelBuffer;
|
||||||
|
@ -204,8 +204,6 @@ cogl_sources = [
|
|||||||
'cogl-memory-stack.c',
|
'cogl-memory-stack.c',
|
||||||
'cogl-meta-texture.c',
|
'cogl-meta-texture.c',
|
||||||
'cogl-mutter.h',
|
'cogl-mutter.h',
|
||||||
'cogl-node-private.h',
|
|
||||||
'cogl-node.c',
|
|
||||||
'cogl-offscreen-private.h',
|
'cogl-offscreen-private.h',
|
||||||
'cogl-offscreen.c',
|
'cogl-offscreen.c',
|
||||||
'cogl-onscreen-private.h',
|
'cogl-onscreen-private.h',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user