From 678dc3243f5ae97455a94bea432eb6abbf50cc39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 7 Jul 2022 09:23:41 +0200 Subject: [PATCH] clutter/stage-view: Allow stage view to allocate frame This will be used to allow the native backend to allocate a KMS update that'll be used for one frame. Part-of: --- clutter/clutter/clutter-stage-view.c | 14 ++++++++++++++ clutter/clutter/clutter-stage-view.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/clutter/clutter/clutter-stage-view.c b/clutter/clutter/clutter-stage-view.c index 0bedb67f7..f489988bb 100644 --- a/clutter/clutter/clutter-stage-view.c +++ b/clutter/clutter/clutter-stage-view.c @@ -1278,9 +1278,23 @@ handle_frame_clock_frame (ClutterFrameClock *frame_clock, return clutter_frame_get_result (frame); } +static ClutterFrame * +handle_frame_clock_new_frame (ClutterFrameClock *frame_clock, + gpointer user_data) +{ + ClutterStageView *view = CLUTTER_STAGE_VIEW (user_data); + ClutterStageViewClass *view_class = CLUTTER_STAGE_VIEW_GET_CLASS (view); + + if (view_class->new_frame) + return view_class->new_frame (view); + else + return NULL; +} + static const ClutterFrameListenerIface frame_clock_listener_iface = { .before_frame = handle_frame_clock_before_frame, .frame = handle_frame_clock_frame, + .new_frame = handle_frame_clock_new_frame, }; void diff --git a/clutter/clutter/clutter-stage-view.h b/clutter/clutter/clutter-stage-view.h index 46ee87b3d..a2c5aad15 100644 --- a/clutter/clutter/clutter-stage-view.h +++ b/clutter/clutter/clutter-stage-view.h @@ -50,6 +50,8 @@ struct _ClutterStageViewClass int dst_width, int dst_height, cairo_rectangle_int_t *dst_rect); + + ClutterFrame * (* new_frame) (ClutterStageView *view); }; CLUTTER_EXPORT