screen-cast/src: Allow dropping cursor-frame if nothing changed
Allow a screen cast stream source to say that nothing changed in terms of cursor metadata, and treat this together with a cursor-only frame as we not recording anything. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3803>
This commit is contained in:
parent
f19f8fcb16
commit
91d43bfbe1
@ -776,6 +776,8 @@ meta_screen_cast_stream_src_maybe_record_frame_with_timestamp (MetaScreenCastStr
|
|||||||
{
|
{
|
||||||
MetaScreenCastStreamSrcPrivate *priv =
|
MetaScreenCastStreamSrcPrivate *priv =
|
||||||
meta_screen_cast_stream_src_get_instance_private (src);
|
meta_screen_cast_stream_src_get_instance_private (src);
|
||||||
|
MetaScreenCastStreamSrcClass *klass =
|
||||||
|
META_SCREEN_CAST_STREAM_SRC_GET_CLASS (src);
|
||||||
MetaScreenCastRecordResult record_result =
|
MetaScreenCastRecordResult record_result =
|
||||||
META_SCREEN_CAST_RECORD_RESULT_RECORDED_NOTHING;
|
META_SCREEN_CAST_RECORD_RESULT_RECORDED_NOTHING;
|
||||||
MtkRectangle crop_rect;
|
MtkRectangle crop_rect;
|
||||||
@ -787,6 +789,15 @@ meta_screen_cast_stream_src_maybe_record_frame_with_timestamp (MetaScreenCastStr
|
|||||||
COGL_TRACE_BEGIN_SCOPED (MaybeRecordFrame,
|
COGL_TRACE_BEGIN_SCOPED (MaybeRecordFrame,
|
||||||
"Meta::ScreenCastStreamSrc::maybe_record_frame_with_timestamp()");
|
"Meta::ScreenCastStreamSrc::maybe_record_frame_with_timestamp()");
|
||||||
|
|
||||||
|
if ((flags & META_SCREEN_CAST_RECORD_FLAG_CURSOR_ONLY) &&
|
||||||
|
klass->is_cursor_metadata_valid &&
|
||||||
|
klass->is_cursor_metadata_valid (src))
|
||||||
|
{
|
||||||
|
meta_topic (META_DEBUG_SCREEN_CAST,
|
||||||
|
"Dropping cursor-only frame as the cursor didn't change");
|
||||||
|
return record_result;
|
||||||
|
}
|
||||||
|
|
||||||
/* Accumulate the damaged region since we might not schedule a frame capture
|
/* Accumulate the damaged region since we might not schedule a frame capture
|
||||||
* eventually but once we do, we should report all the previous damaged areas.
|
* eventually but once we do, we should report all the previous damaged areas.
|
||||||
*/
|
*/
|
||||||
|
@ -85,6 +85,7 @@ struct _MetaScreenCastStreamSrcClass
|
|||||||
|
|
||||||
gboolean (* get_videocrop) (MetaScreenCastStreamSrc *src,
|
gboolean (* get_videocrop) (MetaScreenCastStreamSrc *src,
|
||||||
MtkRectangle *crop_rect);
|
MtkRectangle *crop_rect);
|
||||||
|
gboolean (* is_cursor_metadata_valid) (MetaScreenCastStreamSrc *src);
|
||||||
void (* set_cursor_metadata) (MetaScreenCastStreamSrc *src,
|
void (* set_cursor_metadata) (MetaScreenCastStreamSrc *src,
|
||||||
struct spa_meta_cursor *spa_meta_cursor);
|
struct spa_meta_cursor *spa_meta_cursor);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user