[mutter] clutter: Expose 'capture_view_into()` as API
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] clutter: Expose 'capture_view_into()` as API
- Date: Fri, 12 Mar 2021 15:43:46 +0000 (UTC)
commit 9b1b4eb843aaababb797c57d91e8d2dd3bf7c72b
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Wed Jan 27 23:14:29 2021 +0100
clutter: Expose 'capture_view_into()` as API
It'll be used to explicitly capture the content of a single view.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1698>
clutter/clutter/clutter-mutter.h | 7 +++++++
clutter/clutter/clutter-stage.c | 34 +++++++++++++++++-----------------
2 files changed, 24 insertions(+), 17 deletions(-)
---
diff --git a/clutter/clutter/clutter-mutter.h b/clutter/clutter/clutter-mutter.h
index 8f4e2390a0..88dee26587 100644
--- a/clutter/clutter/clutter-mutter.h
+++ b/clutter/clutter/clutter-mutter.h
@@ -54,6 +54,13 @@ void clutter_stage_capture_into (ClutterStage *stage,
cairo_rectangle_int_t *rect,
uint8_t *data);
+CLUTTER_EXPORT
+void clutter_stage_capture_view_into (ClutterStage *stage,
+ ClutterStageView *view,
+ cairo_rectangle_int_t *rect,
+ uint8_t *data,
+ int stride);
+
CLUTTER_EXPORT
void clutter_stage_clear_stage_views (ClutterStage *stage);
diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c
index 6e46187c59..5b574b5e15 100644
--- a/clutter/clutter/clutter-stage.c
+++ b/clutter/clutter/clutter-stage.c
@@ -175,11 +175,6 @@ static const ClutterColor default_stage_color = { 255, 255, 255, 255 };
static void free_queue_redraw_entry (QueueRedrawEntry *entry);
static void free_pointer_device_entry (PointerDeviceEntry *entry);
-static void capture_view_into (ClutterStage *stage,
- ClutterStageView *view,
- cairo_rectangle_int_t *rect,
- uint8_t *data,
- int stride);
static void clutter_stage_update_view_perspective (ClutterStage *stage);
static void clutter_stage_set_viewport (ClutterStage *stage,
float width,
@@ -3227,12 +3222,12 @@ clutter_stage_paint_to_buffer (ClutterStage *stage,
return TRUE;
}
-static void
-capture_view_into (ClutterStage *stage,
- ClutterStageView *view,
- cairo_rectangle_int_t *rect,
- uint8_t *data,
- int stride)
+void
+clutter_stage_capture_view_into (ClutterStage *stage,
+ ClutterStageView *view,
+ cairo_rectangle_int_t *rect,
+ uint8_t *data,
+ int stride)
{
CoglFramebuffer *framebuffer;
ClutterBackend *backend;
@@ -3247,6 +3242,11 @@ capture_view_into (ClutterStage *stage,
framebuffer = clutter_stage_view_get_framebuffer (view);
+ clutter_stage_view_get_layout (view, &view_layout);
+
+ if (!rect)
+ rect = &view_layout;
+
view_scale = clutter_stage_view_get_scale (view);
texture_width = roundf (rect->width * view_scale);
texture_height = roundf (rect->height * view_scale);
@@ -3259,8 +3259,6 @@ capture_view_into (ClutterStage *stage,
stride,
data);
- clutter_stage_view_get_layout (view, &view_layout);
-
cogl_framebuffer_read_pixels_into_bitmap (framebuffer,
roundf ((rect->x - view_layout.x) * view_scale),
roundf ((rect->y - view_layout.y) * view_scale),
@@ -3300,10 +3298,12 @@ clutter_stage_capture_into (ClutterStage *stage,
x_offset = capture_rect.x - rect->x;
y_offset = capture_rect.y - rect->y;
- capture_view_into (stage, view,
- &capture_rect,
- data + (x_offset * bpp) + (y_offset * stride),
- stride);
+ clutter_stage_capture_view_into (stage, view,
+ &capture_rect,
+ (data +
+ (x_offset * bpp) +
+ (y_offset * stride)),
+ stride);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]