[mutter/gbsneto/window-screencast-fixes: 1/3] window-actor: Use frame rect to retrieve window geometry
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gbsneto/window-screencast-fixes: 1/3] window-actor: Use frame rect to retrieve window geometry
- Date: Tue, 17 Mar 2020 00:11:02 +0000 (UTC)
commit de102546a7b05eb5071922e7897df7adf5961d9b
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Mon Mar 16 19:28:09 2020 -0300
window-actor: Use frame rect to retrieve window geometry
The window actor encapsulates the entire buffer, which contains
even undesired things like the window shadow.
Use the MetaWindow's frame rect instead.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1129
src/compositor/meta-window-actor.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
---
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index d86e38fee..702e2ed03 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -1268,9 +1268,12 @@ meta_window_actor_blit_to_framebuffer (MetaScreenCastWindow *screen_cast_window,
CoglFramebuffer *framebuffer)
{
MetaWindowActor *window_actor = META_WINDOW_ACTOR (screen_cast_window);
+ MetaWindowActorPrivate *priv =
+ meta_window_actor_get_instance_private (window_actor);
ClutterActor *actor = CLUTTER_ACTOR (window_actor);
ClutterPaintContext *paint_context;
MetaRectangle scaled_clip;
+ MetaRectangle frame_rect;
CoglColor clear_color;
float resource_scale;
float width, height;
@@ -1279,19 +1282,20 @@ meta_window_actor_blit_to_framebuffer (MetaScreenCastWindow *screen_cast_window,
if (meta_window_actor_is_destroyed (window_actor))
return FALSE;
- clutter_actor_get_size (actor, &width, &height);
-
- if (width == 0 || height == 0)
- return FALSE;
-
if (!clutter_actor_get_resource_scale (actor, &resource_scale))
return FALSE;
- width = ceilf (width * resource_scale);
- height = ceilf (height * resource_scale);
+ meta_window_get_frame_rect (priv->window, &frame_rect);
+
+ x = floorf (frame_rect.x * resource_scale);
+ y = floorf (frame_rect.y * resource_scale);
+ width = ceilf (frame_rect.width * resource_scale);
+ height = ceilf (frame_rect.height * resource_scale);
+
+ if (width == 0 || height == 0)
+ return FALSE;
cogl_color_init_from_4ub (&clear_color, 0, 0, 0, 0);
- clutter_actor_get_position (actor, &x, &y);
cogl_framebuffer_push_matrix (framebuffer);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]