mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
clutter: fix hole in ClutterPaintNode
Fixing the missalignment takes the structure from 80 bytes down to 72. https://gitlab.gnome.org/GNOME/mutter/merge_requests/1081
This commit is contained in:
parent
aedcfcd010
commit
4c421959dc
@ -3474,8 +3474,8 @@ _clutter_actor_draw_paint_volume_full (ClutterActor *self,
|
|||||||
cogl_pipeline_set_color (outline, &cogl_color);
|
cogl_pipeline_set_color (outline, &cogl_color);
|
||||||
|
|
||||||
pipeline_node = clutter_pipeline_node_new (outline);
|
pipeline_node = clutter_pipeline_node_new (outline);
|
||||||
clutter_paint_node_set_name (pipeline_node,
|
clutter_paint_node_set_static_name (pipeline_node,
|
||||||
"ClutterActor (paint volume outline)");
|
"ClutterActor (paint volume outline)");
|
||||||
clutter_paint_node_add_primitive (pipeline_node, prim);
|
clutter_paint_node_add_primitive (pipeline_node, prim);
|
||||||
clutter_paint_node_add_child (node, pipeline_node);
|
clutter_paint_node_add_child (node, pipeline_node);
|
||||||
cogl_object_unref (prim);
|
cogl_object_unref (prim);
|
||||||
@ -3489,8 +3489,8 @@ _clutter_actor_draw_paint_volume_full (ClutterActor *self,
|
|||||||
pango_layout_set_text (layout, label, -1);
|
pango_layout_set_text (layout, label, -1);
|
||||||
|
|
||||||
text_node = clutter_text_node_new (layout, color);
|
text_node = clutter_text_node_new (layout, color);
|
||||||
clutter_paint_node_set_name (text_node,
|
clutter_paint_node_set_static_name (text_node,
|
||||||
"ClutterActor (paint volume label)");
|
"ClutterActor (paint volume label)");
|
||||||
clutter_paint_node_add_rectangle (text_node,
|
clutter_paint_node_add_rectangle (text_node,
|
||||||
&(ClutterActorBox) {
|
&(ClutterActorBox) {
|
||||||
.x1 = pv->vertices[0].x,
|
.x1 = pv->vertices[0].x,
|
||||||
@ -3586,8 +3586,8 @@ _clutter_actor_paint_cull_result (ClutterActor *self,
|
|||||||
pango_layout_set_text (layout, label, -1);
|
pango_layout_set_text (layout, label, -1);
|
||||||
|
|
||||||
text_node = clutter_text_node_new (layout, &color);
|
text_node = clutter_text_node_new (layout, &color);
|
||||||
clutter_paint_node_set_name (text_node,
|
clutter_paint_node_set_static_name (text_node,
|
||||||
"ClutterActor (paint volume text)");
|
"ClutterActor (paint volume text)");
|
||||||
clutter_paint_node_add_rectangle (text_node,
|
clutter_paint_node_add_rectangle (text_node,
|
||||||
&(ClutterActorBox) {
|
&(ClutterActorBox) {
|
||||||
.x1 = 0.f,
|
.x1 = 0.f,
|
||||||
@ -3868,7 +3868,7 @@ clutter_actor_paint_node (ClutterActor *actor,
|
|||||||
clear_flags = COGL_BUFFER_BIT_DEPTH;
|
clear_flags = COGL_BUFFER_BIT_DEPTH;
|
||||||
|
|
||||||
node = clutter_root_node_new (fb, &bg_color, clear_flags);
|
node = clutter_root_node_new (fb, &bg_color, clear_flags);
|
||||||
clutter_paint_node_set_name (node, "stageClear");
|
clutter_paint_node_set_static_name (node, "stageClear");
|
||||||
clutter_paint_node_add_rectangle (node, &box);
|
clutter_paint_node_add_rectangle (node, &box);
|
||||||
clutter_paint_node_add_child (root, node);
|
clutter_paint_node_add_child (root, node);
|
||||||
clutter_paint_node_unref (node);
|
clutter_paint_node_unref (node);
|
||||||
@ -3883,7 +3883,7 @@ clutter_actor_paint_node (ClutterActor *actor,
|
|||||||
/ 255;
|
/ 255;
|
||||||
|
|
||||||
node = clutter_color_node_new (&bg_color);
|
node = clutter_color_node_new (&bg_color);
|
||||||
clutter_paint_node_set_name (node, "backgroundColor");
|
clutter_paint_node_set_static_name (node, "backgroundColor");
|
||||||
clutter_paint_node_add_rectangle (node, &box);
|
clutter_paint_node_add_rectangle (node, &box);
|
||||||
clutter_paint_node_add_child (root, node);
|
clutter_paint_node_add_child (root, node);
|
||||||
clutter_paint_node_unref (node);
|
clutter_paint_node_unref (node);
|
||||||
@ -4167,7 +4167,7 @@ clutter_actor_continue_paint (ClutterActor *self,
|
|||||||
*/
|
*/
|
||||||
framebuffer = clutter_paint_context_get_base_framebuffer (paint_context);
|
framebuffer = clutter_paint_context_get_base_framebuffer (paint_context);
|
||||||
dummy = _clutter_dummy_node_new (self, framebuffer);
|
dummy = _clutter_dummy_node_new (self, framebuffer);
|
||||||
clutter_paint_node_set_name (dummy, "Root");
|
clutter_paint_node_set_static_name (dummy, "Root");
|
||||||
|
|
||||||
/* XXX - for 1.12, we use the return value of paint_node() to
|
/* XXX - for 1.12, we use the return value of paint_node() to
|
||||||
* decide whether we should emit the ::paint signal.
|
* decide whether we should emit the ::paint signal.
|
||||||
@ -21171,7 +21171,7 @@ clutter_actor_create_texture_paint_node (ClutterActor *self,
|
|||||||
color.alpha = clutter_actor_get_paint_opacity_internal (self);
|
color.alpha = clutter_actor_get_paint_opacity_internal (self);
|
||||||
|
|
||||||
node = clutter_texture_node_new (texture, &color, priv->min_filter, priv->mag_filter);
|
node = clutter_texture_node_new (texture, &color, priv->min_filter, priv->mag_filter);
|
||||||
clutter_paint_node_set_name (node, "Texture");
|
clutter_paint_node_set_static_name (node, "Texture");
|
||||||
|
|
||||||
if (priv->content_repeat == CLUTTER_REPEAT_NONE)
|
if (priv->content_repeat == CLUTTER_REPEAT_NONE)
|
||||||
clutter_paint_node_add_rectangle (node, &box);
|
clutter_paint_node_add_rectangle (node, &box);
|
||||||
|
@ -352,7 +352,7 @@ clutter_canvas_paint_content (ClutterContent *content,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
node = clutter_actor_create_texture_paint_node (actor, priv->texture);
|
node = clutter_actor_create_texture_paint_node (actor, priv->texture);
|
||||||
clutter_paint_node_set_name (node, "Canvas Content");
|
clutter_paint_node_set_static_name (node, "Canvas Content");
|
||||||
clutter_paint_node_add_child (root, node);
|
clutter_paint_node_add_child (root, node);
|
||||||
clutter_paint_node_unref (node);
|
clutter_paint_node_unref (node);
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ clutter_image_paint_content (ClutterContent *content,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
node = clutter_actor_create_texture_paint_node (actor, priv->texture);
|
node = clutter_actor_create_texture_paint_node (actor, priv->texture);
|
||||||
clutter_paint_node_set_name (node, "Image Content");
|
clutter_paint_node_set_static_name (node, "Image Content");
|
||||||
clutter_paint_node_add_child (root, node);
|
clutter_paint_node_add_child (root, node);
|
||||||
clutter_paint_node_unref (node);
|
clutter_paint_node_unref (node);
|
||||||
}
|
}
|
||||||
|
@ -49,11 +49,11 @@ struct _ClutterPaintNode
|
|||||||
ClutterPaintNode *next_sibling;
|
ClutterPaintNode *next_sibling;
|
||||||
ClutterPaintNode *last_child;
|
ClutterPaintNode *last_child;
|
||||||
|
|
||||||
guint n_children;
|
|
||||||
|
|
||||||
GArray *operations;
|
GArray *operations;
|
||||||
|
|
||||||
gchar *name;
|
const gchar *name;
|
||||||
|
|
||||||
|
guint n_children;
|
||||||
|
|
||||||
volatile int ref_count;
|
volatile int ref_count;
|
||||||
};
|
};
|
||||||
|
@ -171,8 +171,6 @@ clutter_paint_node_real_finalize (ClutterPaintNode *node)
|
|||||||
{
|
{
|
||||||
ClutterPaintNode *iter;
|
ClutterPaintNode *iter;
|
||||||
|
|
||||||
g_free (node->name);
|
|
||||||
|
|
||||||
if (node->operations != NULL)
|
if (node->operations != NULL)
|
||||||
{
|
{
|
||||||
guint i;
|
guint i;
|
||||||
@ -297,7 +295,8 @@ clutter_paint_node_get_type (void)
|
|||||||
*
|
*
|
||||||
* The @name will be used for debugging purposes.
|
* The @name will be used for debugging purposes.
|
||||||
*
|
*
|
||||||
* The @node will copy the passed string.
|
* The @node will intern @name using g_intern_string(). If you have access to a
|
||||||
|
* static string, use clutter_paint_node_set_static_name() instead.
|
||||||
*
|
*
|
||||||
* Since: 1.10
|
* Since: 1.10
|
||||||
*/
|
*/
|
||||||
@ -307,8 +306,22 @@ clutter_paint_node_set_name (ClutterPaintNode *node,
|
|||||||
{
|
{
|
||||||
g_return_if_fail (CLUTTER_IS_PAINT_NODE (node));
|
g_return_if_fail (CLUTTER_IS_PAINT_NODE (node));
|
||||||
|
|
||||||
g_free (node->name);
|
node->name = g_intern_string (name);
|
||||||
node->name = g_strdup (name);
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_paint_node_set_static_name: (skip)
|
||||||
|
*
|
||||||
|
* Like clutter_paint_node_set_name() but uses a static or interned string
|
||||||
|
* containing the name.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_paint_node_set_static_name (ClutterPaintNode *node,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
g_return_if_fail (CLUTTER_IS_PAINT_NODE (node));
|
||||||
|
|
||||||
|
node->name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -56,6 +56,9 @@ void clutter_paint_node_paint (Clutter
|
|||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
void clutter_paint_node_set_name (ClutterPaintNode *node,
|
void clutter_paint_node_set_name (ClutterPaintNode *node,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
CLUTTER_EXPORT
|
||||||
|
void clutter_paint_node_set_static_name (ClutterPaintNode *node,
|
||||||
|
const char *name);
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
CoglFramebuffer * clutter_paint_node_get_framebuffer (ClutterPaintNode *node);
|
CoglFramebuffer * clutter_paint_node_get_framebuffer (ClutterPaintNode *node);
|
||||||
|
@ -443,7 +443,7 @@ paint_clipped_rectangle_node (MetaShapedTexture *stex,
|
|||||||
coords[7] = coords[3];
|
coords[7] = coords[3];
|
||||||
|
|
||||||
node = clutter_pipeline_node_new (pipeline);
|
node = clutter_pipeline_node_new (pipeline);
|
||||||
clutter_paint_node_set_name (node, "MetaShapedTexture (clipped)");
|
clutter_paint_node_set_static_name (node, "MetaShapedTexture (clipped)");
|
||||||
clutter_paint_node_add_child (root_node, node);
|
clutter_paint_node_add_child (root_node, node);
|
||||||
|
|
||||||
clutter_paint_node_add_multitexture_rectangle (node,
|
clutter_paint_node_add_multitexture_rectangle (node,
|
||||||
@ -664,7 +664,7 @@ do_paint_content (MetaShapedTexture *stex,
|
|||||||
g_autoptr (ClutterPaintNode) node = NULL;
|
g_autoptr (ClutterPaintNode) node = NULL;
|
||||||
|
|
||||||
node = clutter_pipeline_node_new (blended_pipeline);
|
node = clutter_pipeline_node_new (blended_pipeline);
|
||||||
clutter_paint_node_set_name (node, "MetaShapedTexture (unclipped)");
|
clutter_paint_node_set_static_name (node, "MetaShapedTexture (unclipped)");
|
||||||
clutter_paint_node_add_child (root_node, node);
|
clutter_paint_node_add_child (root_node, node);
|
||||||
|
|
||||||
/* 3) blended_tex_region is NULL. Do a full paint. */
|
/* 3) blended_tex_region is NULL. Do a full paint. */
|
||||||
@ -1241,7 +1241,7 @@ get_image_via_offscreen (MetaShapedTexture *stex,
|
|||||||
clear_color = (ClutterColor) { 0, 0, 0, 0 };
|
clear_color = (ClutterColor) { 0, 0, 0, 0 };
|
||||||
|
|
||||||
root_node = clutter_root_node_new (fb, &clear_color, COGL_BUFFER_BIT_COLOR);
|
root_node = clutter_root_node_new (fb, &clear_color, COGL_BUFFER_BIT_COLOR);
|
||||||
clutter_paint_node_set_name (root_node, "MetaShapedTexture.offscreen");
|
clutter_paint_node_set_static_name (root_node, "MetaShapedTexture.offscreen");
|
||||||
|
|
||||||
paint_context = clutter_paint_context_new_for_framebuffer (fb);
|
paint_context = clutter_paint_context_new_for_framebuffer (fb);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user