mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 17:40:40 -05:00
screen-cast-monitor-stream-src: Only send cursor bitmap when it changes
To avoid unnecessary pixel copying, only send the cursor bitmap when it changes. This also allows the receiver to know when the cursor bitmap actually changed. https://gitlab.gnome.org/GNOME/mutter/merge_requests/357
This commit is contained in:
parent
c45d5f53ff
commit
56d260cfb3
@ -40,6 +40,8 @@ struct _MetaScreenCastMonitorStreamSrc
|
|||||||
{
|
{
|
||||||
MetaScreenCastStreamSrc parent;
|
MetaScreenCastStreamSrc parent;
|
||||||
|
|
||||||
|
gboolean cursor_bitmap_invalid;
|
||||||
|
|
||||||
gulong actors_painted_handler_id;
|
gulong actors_painted_handler_id;
|
||||||
gulong paint_handler_id;
|
gulong paint_handler_id;
|
||||||
gulong cursor_moved_handler_id;
|
gulong cursor_moved_handler_id;
|
||||||
@ -194,6 +196,7 @@ static void
|
|||||||
cursor_changed (MetaCursorTracker *cursor_tracker,
|
cursor_changed (MetaCursorTracker *cursor_tracker,
|
||||||
MetaScreenCastMonitorStreamSrc *monitor_src)
|
MetaScreenCastMonitorStreamSrc *monitor_src)
|
||||||
{
|
{
|
||||||
|
monitor_src->cursor_bitmap_invalid = TRUE;
|
||||||
sync_cursor_state (monitor_src);
|
sync_cursor_state (monitor_src);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -452,6 +455,16 @@ meta_screen_cast_monitor_stream_src_set_cursor_metadata (MetaScreenCastStreamSrc
|
|||||||
spa_meta_cursor->id = 1;
|
spa_meta_cursor->id = 1;
|
||||||
spa_meta_cursor->position.x = (int32_t) roundf (cursor_position.x);
|
spa_meta_cursor->position.x = (int32_t) roundf (cursor_position.x);
|
||||||
spa_meta_cursor->position.y = (int32_t) roundf (cursor_position.y);
|
spa_meta_cursor->position.y = (int32_t) roundf (cursor_position.y);
|
||||||
|
|
||||||
|
if (!monitor_src->cursor_bitmap_invalid)
|
||||||
|
{
|
||||||
|
spa_meta_cursor->hotspot.x = 0;
|
||||||
|
spa_meta_cursor->hotspot.y = 0;
|
||||||
|
spa_meta_cursor->bitmap_offset = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
monitor_src->cursor_bitmap_invalid = FALSE;
|
||||||
|
|
||||||
spa_meta_cursor->bitmap_offset = sizeof (struct spa_meta_cursor);
|
spa_meta_cursor->bitmap_offset = sizeof (struct spa_meta_cursor);
|
||||||
|
|
||||||
spa_meta_bitmap = SPA_MEMBER (spa_meta_cursor,
|
spa_meta_bitmap = SPA_MEMBER (spa_meta_cursor,
|
||||||
@ -551,6 +564,7 @@ meta_screen_cast_monitor_stream_src_new (MetaScreenCastMonitorStream *monitor_s
|
|||||||
static void
|
static void
|
||||||
meta_screen_cast_monitor_stream_src_init (MetaScreenCastMonitorStreamSrc *monitor_src)
|
meta_screen_cast_monitor_stream_src_init (MetaScreenCastMonitorStreamSrc *monitor_src)
|
||||||
{
|
{
|
||||||
|
monitor_src->cursor_bitmap_invalid = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user