[mutter] compositor: Return more details from meta_actor_painting_untransformed
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] compositor: Return more details from meta_actor_painting_untransformed
- Date: Tue, 26 Jul 2022 19:43:03 +0000 (UTC)
commit b29a6c4d0cfeec4e14292a2e4f9bb215b8042b85
Author: Daniel van Vugt <daniel van vugt canonical com>
Date: Tue Jun 1 23:50:07 2021 +0800
compositor: Return more details from meta_actor_painting_untransformed
This adds x_scale and y_scale information, as well as simplifying the
parameters.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2506>
src/compositor/clutter-utils.c | 21 +++++++++++----------
src/compositor/clutter-utils.h | 11 +++++++----
src/compositor/meta-background-content.c | 2 +-
src/compositor/meta-cullable.c | 2 +-
src/compositor/meta-shaped-texture.c | 2 +-
src/compositor/meta-surface-actor.c | 2 +-
src/compositor/meta-window-group.c | 7 +++++--
7 files changed, 27 insertions(+), 20 deletions(-)
---
diff --git a/src/compositor/clutter-utils.c b/src/compositor/clutter-utils.c
index 86d788562e..95839c2df2 100644
--- a/src/compositor/clutter-utils.c
+++ b/src/compositor/clutter-utils.c
@@ -69,8 +69,7 @@ gboolean
meta_actor_vertices_are_untransformed (graphene_point3d_t *verts,
float widthf,
float heightf,
- int *x_origin,
- int *y_origin)
+ MetaTransforms *out_transforms)
{
int width, height;
int v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y;
@@ -90,6 +89,14 @@ meta_actor_vertices_are_untransformed (graphene_point3d_t *verts,
x = v0x >> 8;
y = v0y >> 8;
+ if (out_transforms)
+ {
+ out_transforms->x_origin = x;
+ out_transforms->y_origin = y;
+ out_transforms->x_scale = (v1x - v0x) / (float) width;
+ out_transforms->y_scale = (v2y - v0y) / (float) height;
+ }
+
/* At integral coordinates? */
if (x * 256 != v0x || y * 256 != v0y)
return FALSE;
@@ -103,11 +110,6 @@ meta_actor_vertices_are_untransformed (graphene_point3d_t *verts,
v3x != v1x || v3y != v2y)
return FALSE;
- if (x_origin)
- *x_origin = x;
- if (y_origin)
- *y_origin = y;
-
return TRUE;
}
@@ -137,8 +139,7 @@ meta_actor_painting_untransformed (CoglFramebuffer *fb,
int paint_height,
int sample_width,
int sample_height,
- int *x_origin,
- int *y_origin)
+ MetaTransforms *out_transforms)
{
graphene_matrix_t modelview, projection, modelview_projection;
graphene_point3d_t vertices[4];
@@ -183,6 +184,6 @@ meta_actor_painting_untransformed (CoglFramebuffer *fb,
return meta_actor_vertices_are_untransformed (vertices,
sample_width, sample_height,
- x_origin, y_origin);
+ out_transforms);
}
diff --git a/src/compositor/clutter-utils.h b/src/compositor/clutter-utils.h
index 8ed0e2a4d1..921551aafb 100644
--- a/src/compositor/clutter-utils.h
+++ b/src/compositor/clutter-utils.h
@@ -23,18 +23,21 @@
#include "clutter/clutter.h"
+typedef struct {
+ int x_origin, y_origin;
+ float x_scale, y_scale;
+} MetaTransforms;
+
gboolean meta_actor_vertices_are_untransformed (graphene_point3d_t *verts,
float widthf,
float heightf,
- int *x_origin,
- int *y_origin);
+ MetaTransforms *out_transforms);
gboolean meta_actor_painting_untransformed (CoglFramebuffer *fb,
int paint_width,
int paint_height,
int sample_widthf,
int sample_heightf,
- int *x_origin,
- int *y_origin);
+ MetaTransforms *out_transforms);
#endif /* __META_CLUTTER_UTILS_H__ */
diff --git a/src/compositor/meta-background-content.c b/src/compositor/meta-background-content.c
index 2e8c923b47..e472c3c5dc 100644
--- a/src/compositor/meta-background-content.c
+++ b/src/compositor/meta-background-content.c
@@ -548,7 +548,7 @@ setup_pipeline (MetaBackgroundContent *self,
actor_pixel_rect->height,
self->texture_width,
self->texture_height,
- NULL, NULL))
+ NULL))
{
min_filter = COGL_PIPELINE_FILTER_NEAREST;
mag_filter = COGL_PIPELINE_FILTER_NEAREST;
diff --git a/src/compositor/meta-cullable.c b/src/compositor/meta-cullable.c
index 6f38c5e47c..e306c56e28 100644
--- a/src/compositor/meta-cullable.c
+++ b/src/compositor/meta-cullable.c
@@ -175,7 +175,7 @@ meta_cullable_default_is_untransformed (MetaCullable *cullable)
clutter_actor_get_abs_allocation_vertices (CLUTTER_ACTOR (cullable), verts);
return meta_actor_vertices_are_untransformed (verts, width, height,
- NULL, NULL);
+ NULL);
}
static void
diff --git a/src/compositor/meta-shaped-texture.c b/src/compositor/meta-shaped-texture.c
index d7cba799ea..29a6b1c908 100644
--- a/src/compositor/meta-shaped-texture.c
+++ b/src/compositor/meta-shaped-texture.c
@@ -712,7 +712,7 @@ do_paint_content (MetaShapedTexture *stex,
if (meta_actor_painting_untransformed (framebuffer,
dst_width, dst_height,
sample_width, sample_height,
- NULL, NULL))
+ NULL))
filter = COGL_PIPELINE_FILTER_NEAREST;
else
filter = COGL_PIPELINE_FILTER_LINEAR;
diff --git a/src/compositor/meta-surface-actor.c b/src/compositor/meta-surface-actor.c
index c2bf6696a2..fcd94b86d3 100644
--- a/src/compositor/meta-surface-actor.c
+++ b/src/compositor/meta-surface-actor.c
@@ -331,7 +331,7 @@ meta_surface_actor_is_untransformed (MetaCullable *cullable)
return meta_actor_vertices_are_untransformed (verts,
width * geometry_scale,
height * geometry_scale,
- NULL, NULL);
+ NULL);
}
static void
diff --git a/src/compositor/meta-window-group.c b/src/compositor/meta-window-group.c
index 16ff2db097..c6af609aea 100644
--- a/src/compositor/meta-window-group.c
+++ b/src/compositor/meta-window-group.c
@@ -92,6 +92,7 @@ meta_window_group_paint (ClutterActor *actor,
{
CoglFramebuffer *fb;
ClutterStageView *view;
+ MetaTransforms trans;
fb = clutter_paint_context_get_framebuffer (paint_context);
view = clutter_paint_context_get_stage_view (paint_context);
@@ -102,13 +103,15 @@ meta_window_group_paint (ClutterActor *actor,
screen_height,
screen_width,
screen_height,
- &paint_x_origin,
- &paint_y_origin) ||
+ &trans) ||
!meta_cullable_is_untransformed (META_CULLABLE (actor)))
{
parent_actor_class->paint (actor, paint_context);
return;
}
+
+ paint_x_origin = trans.x_origin;
+ paint_y_origin = trans.y_origin;
}
else
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]