wayland: Mark sprite as invalid after cursor changes

This will be used to hint the backend that the cursor surface
might need uploading again.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1915>
This commit is contained in:
Carlos Garnacho
2021-07-05 15:50:06 +02:00
committed by Marge Bot
parent 508c08fa09
commit 5e93708d86
2 changed files with 28 additions and 1 deletions

View File

@@ -25,6 +25,7 @@ struct _MetaCursorSpriteWayland
MetaCursorSprite parent;
MetaWaylandSurface *surface;
gboolean invalidated;
};
G_DEFINE_TYPE (MetaCursorSpriteWayland,
@@ -34,7 +35,17 @@ G_DEFINE_TYPE (MetaCursorSpriteWayland,
static gboolean
meta_cursor_sprite_wayland_realize_texture (MetaCursorSprite *sprite)
{
return TRUE;
MetaCursorSpriteWayland *sprite_wayland;
sprite_wayland = META_CURSOR_SPRITE_WAYLAND (sprite);
if (sprite_wayland->invalidated)
{
sprite_wayland->invalidated = FALSE;
return TRUE;
}
return FALSE;
}
static gboolean
@@ -43,6 +54,15 @@ meta_cursor_sprite_wayland_is_animated (MetaCursorSprite *sprite)
return FALSE;
}
static void
meta_cursor_sprite_wayland_invalidate (MetaCursorSprite *sprite)
{
MetaCursorSpriteWayland *sprite_wayland;
sprite_wayland = META_CURSOR_SPRITE_WAYLAND (sprite);
sprite_wayland->invalidated = TRUE;
}
MetaCursorSpriteWayland *
meta_cursor_sprite_wayland_new (MetaWaylandSurface *surface)
{
@@ -72,5 +92,7 @@ meta_cursor_sprite_wayland_class_init (MetaCursorSpriteWaylandClass *klass)
cursor_sprite_class->realize_texture =
meta_cursor_sprite_wayland_realize_texture;
cursor_sprite_class->invalidate =
meta_cursor_sprite_wayland_invalidate;
cursor_sprite_class->is_animated = meta_cursor_sprite_wayland_is_animated;
}