[mutter/wip/rstrode/rhel-8.0.0: 63/117] compositor: Make meta_actor_painting_untransformed take a framebuffer
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/rstrode/rhel-8.0.0: 63/117] compositor: Make meta_actor_painting_untransformed take a framebuffer
- Date: Sun, 17 Feb 2019 17:28:07 +0000 (UTC)
commit 01d147a2d7e0204075051ba35f0a85f83254f294
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Wed Dec 19 11:55:43 2018 +0100
compositor: Make meta_actor_painting_untransformed take a framebuffer
Stop using the cogl draw framebuffer implicitly.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/362
src/compositor/clutter-utils.c | 9 +++++----
src/compositor/clutter-utils.h | 9 +++++----
src/compositor/meta-background-actor.c | 7 ++++++-
src/compositor/meta-shaped-texture.c | 7 +++++--
src/compositor/meta-window-group.c | 6 +++++-
5 files changed, 26 insertions(+), 12 deletions(-)
---
diff --git a/src/compositor/clutter-utils.c b/src/compositor/clutter-utils.c
index fb74732ce..6591ee2d3 100644
--- a/src/compositor/clutter-utils.c
+++ b/src/compositor/clutter-utils.c
@@ -143,7 +143,8 @@ meta_actor_is_untransformed (ClutterActor *actor,
* transform.
*/
gboolean
-meta_actor_painting_untransformed (int paint_width,
+meta_actor_painting_untransformed (CoglFramebuffer *fb,
+ int paint_width,
int paint_height,
int *x_origin,
int *y_origin)
@@ -153,8 +154,8 @@ meta_actor_painting_untransformed (int paint_width,
float viewport[4];
int i;
- cogl_get_modelview_matrix (&modelview);
- cogl_get_projection_matrix (&projection);
+ cogl_framebuffer_get_modelview_matrix (fb, &modelview);
+ cogl_framebuffer_get_projection_matrix (fb, &projection);
cogl_matrix_multiply (&modelview_projection,
&projection,
@@ -173,7 +174,7 @@ meta_actor_painting_untransformed (int paint_width,
vertices[3].y = paint_height;
vertices[3].z = 0;
- cogl_get_viewport (viewport);
+ cogl_framebuffer_get_viewport4fv (fb, viewport);
for (i = 0; i < 4; i++)
{
diff --git a/src/compositor/clutter-utils.h b/src/compositor/clutter-utils.h
index 36a5925cf..b96733e4a 100644
--- a/src/compositor/clutter-utils.h
+++ b/src/compositor/clutter-utils.h
@@ -31,9 +31,10 @@ gboolean meta_actor_is_untransformed (ClutterActor *actor,
int *x_origin,
int *y_origin);
-gboolean meta_actor_painting_untransformed (int paint_width,
- int paint_height,
- int *x_origin,
- int *y_origin);
+gboolean meta_actor_painting_untransformed (CoglFramebuffer *fb,
+ int paint_width,
+ int paint_height,
+ int *x_origin,
+ int *y_origin);
#endif /* __META_CLUTTER_UTILS_H__ */
diff --git a/src/compositor/meta-background-actor.c b/src/compositor/meta-background-actor.c
index 197a62c0f..c4c0f9561 100644
--- a/src/compositor/meta-background-actor.c
+++ b/src/compositor/meta-background-actor.c
@@ -325,6 +325,7 @@ setup_pipeline (MetaBackgroundActor *self,
PipelineFlags pipeline_flags = 0;
guint8 opacity;
float color_component;
+ CoglFramebuffer *fb;
CoglPipelineFilter filter;
opacity = clutter_actor_get_paint_opacity (CLUTTER_ACTOR (self));
@@ -417,8 +418,12 @@ setup_pipeline (MetaBackgroundActor *self,
color_component,
opacity / 255.);
+ fb = cogl_get_draw_framebuffer ();
if (!priv->force_bilinear &&
- meta_actor_painting_untransformed (actor_pixel_rect->width, actor_pixel_rect->height, NULL, NULL))
+ meta_actor_painting_untransformed (fb,
+ actor_pixel_rect->width,
+ actor_pixel_rect->height,
+ NULL, NULL))
filter = COGL_PIPELINE_FILTER_NEAREST;
else
filter = COGL_PIPELINE_FILTER_LINEAR;
diff --git a/src/compositor/meta-shaped-texture.c b/src/compositor/meta-shaped-texture.c
index 98346c6ae..133041ba9 100644
--- a/src/compositor/meta-shaped-texture.c
+++ b/src/compositor/meta-shaped-texture.c
@@ -422,17 +422,20 @@ meta_shaped_texture_paint (ClutterActor *actor)
cairo_rectangle_int_t tex_rect = { 0, 0, tex_width, tex_height };
+ fb = cogl_get_draw_framebuffer ();
+
/* Use nearest-pixel interpolation if the texture is unscaled. This
* improves performance, especially with software rendering.
*/
filter = COGL_PIPELINE_FILTER_LINEAR;
- if (meta_actor_painting_untransformed (tex_width, tex_height, NULL, NULL))
+ if (meta_actor_painting_untransformed (fb,
+ tex_width, tex_height,
+ NULL, NULL))
filter = COGL_PIPELINE_FILTER_NEAREST;
ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
- fb = cogl_get_draw_framebuffer ();
opacity = clutter_actor_get_paint_opacity (actor);
clutter_actor_get_allocation_box (actor, &alloc);
diff --git a/src/compositor/meta-window-group.c b/src/compositor/meta-window-group.c
index 665adee77..d41c00783 100644
--- a/src/compositor/meta-window-group.c
+++ b/src/compositor/meta-window-group.c
@@ -81,7 +81,11 @@ meta_window_group_paint (ClutterActor *actor)
*/
if (clutter_actor_is_in_clone_paint (actor))
{
- if (!meta_actor_painting_untransformed (screen_width,
+ CoglFramebuffer *fb;
+
+ fb = cogl_get_draw_framebuffer ();
+ if (!meta_actor_painting_untransformed (fb,
+ screen_width,
screen_height,
&paint_x_origin,
&paint_y_origin) ||
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]