From b47d96b86248daa1451f25028e98609c0eca633c Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 24 Jan 2023 11:59:17 -0300 Subject: backends/stage: Pass ClutterFrame to MetaStageWatchFunc We'll need to access the timestamp of the frame later on, so pass it to stage watchers. Part-of: --- src/backends/meta-screen-cast-area-stream-src.c | 2 ++ src/backends/meta-screen-cast-monitor-stream-src.c | 2 ++ src/backends/meta-screen-cast-virtual-stream-src.c | 1 + src/backends/meta-stage-private.h | 1 + src/backends/meta-stage.c | 13 ++++++++----- src/tests/meta-ref-test.c | 1 + 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/backends/meta-screen-cast-area-stream-src.c b/src/backends/meta-screen-cast-area-stream-src.c index c0b6b39c0..696a46e8f 100644 --- a/src/backends/meta-screen-cast-area-stream-src.c +++ b/src/backends/meta-screen-cast-area-stream-src.c @@ -248,6 +248,7 @@ static void before_stage_painted (MetaStage *stage, ClutterStageView *view, ClutterPaintContext *paint_context, + ClutterFrame *frame, gpointer user_data) { MetaScreenCastAreaStreamSrc *area_src = @@ -267,6 +268,7 @@ static void stage_painted (MetaStage *stage, ClutterStageView *view, ClutterPaintContext *paint_context, + ClutterFrame *frame, gpointer user_data) { MetaScreenCastAreaStreamSrc *area_src = diff --git a/src/backends/meta-screen-cast-monitor-stream-src.c b/src/backends/meta-screen-cast-monitor-stream-src.c index 5ed744f56..ed0d854c1 100644 --- a/src/backends/meta-screen-cast-monitor-stream-src.c +++ b/src/backends/meta-screen-cast-monitor-stream-src.c @@ -152,6 +152,7 @@ static void stage_painted (MetaStage *stage, ClutterStageView *view, ClutterPaintContext *paint_context, + ClutterFrame *frame, gpointer user_data) { MetaScreenCastMonitorStreamSrc *monitor_src = @@ -171,6 +172,7 @@ static void before_stage_painted (MetaStage *stage, ClutterStageView *view, ClutterPaintContext *paint_context, + ClutterFrame *frame, gpointer user_data) { MetaScreenCastMonitorStreamSrc *monitor_src = diff --git a/src/backends/meta-screen-cast-virtual-stream-src.c b/src/backends/meta-screen-cast-virtual-stream-src.c index 9cb8e98f5..edf6e861b 100644 --- a/src/backends/meta-screen-cast-virtual-stream-src.c +++ b/src/backends/meta-screen-cast-virtual-stream-src.c @@ -186,6 +186,7 @@ static void actors_painted (MetaStage *stage, ClutterStageView *view, ClutterPaintContext *paint_context, + ClutterFrame *frame, gpointer user_data) { MetaScreenCastStreamSrc *src = META_SCREEN_CAST_STREAM_SRC (user_data); diff --git a/src/backends/meta-stage-private.h b/src/backends/meta-stage-private.h index e296e274e..809e71a52 100644 --- a/src/backends/meta-stage-private.h +++ b/src/backends/meta-stage-private.h @@ -42,6 +42,7 @@ typedef enum typedef void (* MetaStageWatchFunc) (MetaStage *stage, ClutterStageView *view, ClutterPaintContext *paint_context, + ClutterFrame *frame, gpointer user_data); ClutterActor *meta_stage_new (MetaBackend *backend); diff --git a/src/backends/meta-stage.c b/src/backends/meta-stage.c index e3f4ae077..2599daef0 100644 --- a/src/backends/meta-stage.c +++ b/src/backends/meta-stage.c @@ -189,6 +189,7 @@ static void notify_watchers_for_mode (MetaStage *stage, ClutterStageView *view, ClutterPaintContext *paint_context, + ClutterFrame *frame, MetaStageWatchPhase watch_phase) { GPtrArray *watchers; @@ -203,7 +204,7 @@ notify_watchers_for_mode (MetaStage *stage, if (watch->view && view != watch->view) continue; - watch->callback (stage, view, paint_context, watch->user_data); + watch->callback (stage, view, paint_context, frame, watch->user_data); } } @@ -214,7 +215,7 @@ meta_stage_before_paint (ClutterStage *stage, { MetaStage *meta_stage = META_STAGE (stage); - notify_watchers_for_mode (meta_stage, view, NULL, + notify_watchers_for_mode (meta_stage, view, NULL, frame, META_STAGE_WATCH_BEFORE_PAINT); } @@ -224,13 +225,15 @@ meta_stage_paint (ClutterActor *actor, { MetaStage *stage = META_STAGE (actor); ClutterStageView *view; + ClutterFrame *frame; CLUTTER_ACTOR_CLASS (meta_stage_parent_class)->paint (actor, paint_context); + frame = clutter_paint_context_get_frame (paint_context); view = clutter_paint_context_get_stage_view (paint_context); if (view) { - notify_watchers_for_mode (stage, view, paint_context, + notify_watchers_for_mode (stage, view, paint_context, frame, META_STAGE_WATCH_AFTER_ACTOR_PAINT); } @@ -260,7 +263,7 @@ meta_stage_paint (ClutterActor *actor, if (view) { - notify_watchers_for_mode (stage, view, paint_context, + notify_watchers_for_mode (stage, view, paint_context, frame, META_STAGE_WATCH_AFTER_OVERLAY_PAINT); } } @@ -277,7 +280,7 @@ meta_stage_paint_view (ClutterStage *stage, redraw_clip, frame); - notify_watchers_for_mode (meta_stage, view, NULL, + notify_watchers_for_mode (meta_stage, view, NULL, frame, META_STAGE_WATCH_AFTER_PAINT); } diff --git a/src/tests/meta-ref-test.c b/src/tests/meta-ref-test.c index 0c019365d..4861f3b95 100644 --- a/src/tests/meta-ref-test.c +++ b/src/tests/meta-ref-test.c @@ -273,6 +273,7 @@ static void on_after_paint (MetaStage *stage, ClutterStageView *view, ClutterPaintContext *paint_context, + ClutterFrame *frame, gpointer user_data) { CaptureViewData *data = user_data; -- cgit v1.2.1