mirror of
https://github.com/brl/mutter.git
synced 2025-02-18 14:14:10 +00:00
screen-cast/monitor-src: Record DMA-BUF frames immediately
Instead of always, unconditionally scheduling an idle callback for frame recording, try to record a DMA-BUF only frame, and only if that's not possible, schedule the idle callback. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2804>
This commit is contained in:
parent
7f28fa6c79
commit
bc2f1145d8
@ -158,14 +158,24 @@ stage_painted (MetaStage *stage,
|
|||||||
MetaScreenCastMonitorStreamSrc *monitor_src =
|
MetaScreenCastMonitorStreamSrc *monitor_src =
|
||||||
META_SCREEN_CAST_MONITOR_STREAM_SRC (user_data);
|
META_SCREEN_CAST_MONITOR_STREAM_SRC (user_data);
|
||||||
MetaScreenCastStreamSrc *src = META_SCREEN_CAST_STREAM_SRC (monitor_src);
|
MetaScreenCastStreamSrc *src = META_SCREEN_CAST_STREAM_SRC (monitor_src);
|
||||||
|
MetaScreenCastRecordResult record_result;
|
||||||
|
MetaScreenCastRecordFlag flags;
|
||||||
|
|
||||||
if (monitor_src->maybe_record_idle_id)
|
if (monitor_src->maybe_record_idle_id)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
monitor_src->maybe_record_idle_id = g_idle_add (maybe_record_frame_on_idle,
|
flags = META_SCREEN_CAST_RECORD_FLAG_DMABUF_ONLY;
|
||||||
src);
|
record_result = meta_screen_cast_stream_src_maybe_record_frame (src,
|
||||||
g_source_set_name_by_id (monitor_src->maybe_record_idle_id,
|
flags,
|
||||||
"[mutter] maybe_record_frame_on_idle [monitor-src]");
|
NULL);
|
||||||
|
|
||||||
|
if (!(record_result & META_SCREEN_CAST_RECORD_RESULT_RECORDED_FRAME))
|
||||||
|
{
|
||||||
|
monitor_src->maybe_record_idle_id = g_idle_add (maybe_record_frame_on_idle,
|
||||||
|
src);
|
||||||
|
g_source_set_name_by_id (monitor_src->maybe_record_idle_id,
|
||||||
|
"[mutter] maybe_record_frame_on_idle [monitor-src]");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user