diff options
Diffstat (limited to 'src/backends/meta-screen-cast-monitor-stream-src.c')
-rw-r--r-- | src/backends/meta-screen-cast-monitor-stream-src.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/backends/meta-screen-cast-monitor-stream-src.c b/src/backends/meta-screen-cast-monitor-stream-src.c index efb458067..073a4d101 100644 --- a/src/backends/meta-screen-cast-monitor-stream-src.c +++ b/src/backends/meta-screen-cast-monitor-stream-src.c @@ -158,8 +158,8 @@ stage_painted (MetaStage *stage, MetaScreenCastMonitorStreamSrc *monitor_src = META_SCREEN_CAST_MONITOR_STREAM_SRC (user_data); MetaScreenCastStreamSrc *src = META_SCREEN_CAST_STREAM_SRC (monitor_src); - MetaScreenCastRecordResult record_result; - MetaScreenCastRecordFlag flags; + MetaScreenCastRecordResult record_result = + META_SCREEN_CAST_RECORD_RESULT_RECORDED_NOTHING; int64_t presentation_time_us; if (monitor_src->maybe_record_idle_id) @@ -168,12 +168,16 @@ stage_painted (MetaStage *stage, if (!clutter_frame_get_target_presentation_time (frame, &presentation_time_us)) presentation_time_us = g_get_monotonic_time (); - flags = META_SCREEN_CAST_RECORD_FLAG_DMABUF_ONLY; - record_result = - meta_screen_cast_stream_src_maybe_record_frame_with_timestamp (src, - flags, - NULL, - presentation_time_us); + if (meta_screen_cast_stream_src_uses_dma_bufs (src)) + { + MetaScreenCastRecordFlag flags = META_SCREEN_CAST_RECORD_FLAG_NONE; + + record_result = + meta_screen_cast_stream_src_maybe_record_frame_with_timestamp (src, + flags, + NULL, + presentation_time_us); + } if (!(record_result & META_SCREEN_CAST_RECORD_RESULT_RECORDED_FRAME)) { @@ -200,13 +204,16 @@ before_stage_painted (MetaStage *stage, if (monitor_src->maybe_record_idle_id) return; + if (!meta_screen_cast_stream_src_uses_dma_bufs (src)) + return; + if (!clutter_stage_view_peek_scanout (view)) return; if (!clutter_frame_get_target_presentation_time (frame, &presentation_time_us)) presentation_time_us = g_get_monotonic_time (); - flags = META_SCREEN_CAST_RECORD_FLAG_DMABUF_ONLY; + flags = META_SCREEN_CAST_RECORD_FLAG_NONE; meta_screen_cast_stream_src_maybe_record_frame_with_timestamp (src, flags, NULL, |