summaryrefslogtreecommitdiff
path: root/src/backends/meta-screen-cast-monitor-stream-src.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/meta-screen-cast-monitor-stream-src.c')
-rw-r--r--src/backends/meta-screen-cast-monitor-stream-src.c25
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,