Hi On Sat, Oct 5, 2024 at 12:45 PM Akihiko Odaki <akihiko.od...@daynix.com> wrote: > > On 2024/10/03 20:22, marcandre.lur...@redhat.com wrote: > > From: Marc-André Lureau <marcandre.lur...@redhat.com> > > > > Similar to scanout updates, let's discard pending cursor changes. > > > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > > --- > > ui/dbus-listener.c | 23 +++++++++++++++++++++++ > > roms/openbios | 2 +- > > 2 files changed, 24 insertions(+), 1 deletion(-) > > > > diff --git a/ui/dbus-listener.c b/ui/dbus-listener.c > > index 23a4633fa4..020c05198b 100644 > > --- a/ui/dbus-listener.c > > +++ b/ui/dbus-listener.c > > @@ -87,6 +87,7 @@ struct _DBusDisplayListener { > > > > guint dbus_filter; > > guint32 display_serial_to_discard; > > + guint32 cursor_serial_to_discard; > > }; > > > > G_DEFINE_TYPE(DBusDisplayListener, dbus_display_listener, G_TYPE_OBJECT) > > @@ -102,6 +103,14 @@ static void > > ddl_discard_display_messages(DBusDisplayListener *ddl) > > g_atomic_int_set(&ddl->display_serial_to_discard, serial); > > } > > > > +static void ddl_discard_cursor_messages(DBusDisplayListener *ddl) > > +{ > > + guint32 serial = g_dbus_connection_get_last_serial( > > + g_dbus_proxy_get_connection(G_DBUS_PROXY(ddl->proxy))); > > + > > + g_atomic_int_set(&ddl->cursor_serial_to_discard, serial); > > +} > > + > > #ifdef CONFIG_OPENGL > > static void dbus_scanout_disable(DisplayChangeListener *dcl) > > { > > @@ -502,6 +511,8 @@ static void dbus_cursor_dmabuf(DisplayChangeListener > > *dcl, > > return; > > } > > > > + ddl_discard_cursor_messages(ddl); > > + > > egl_dmabuf_import_texture(dmabuf); > > texture = qemu_dmabuf_get_texture(dmabuf); > > if (!texture) { > > @@ -745,6 +756,8 @@ static void dbus_cursor_define(DisplayChangeListener > > *dcl, > > DBusDisplayListener *ddl = container_of(dcl, DBusDisplayListener, > > dcl); > > GVariant *v_data = NULL; > > > > + ddl_discard_cursor_messages(ddl); > > + > > v_data = g_variant_new_from_data( > > G_VARIANT_TYPE("ay"), > > c->data, > > @@ -1027,6 +1040,16 @@ dbus_filter(GDBusConnection *connection, > > } > > } > > > > + discard_serial = g_atomic_int_get(&ddl->cursor_serial_to_discard); > > + if (serial <= discard_serial) { > > + member = g_dbus_message_get_member(message); > > + if (g_strv_contains((const gchar *[]) { "CursorDefine", NULL }, > > member)) { > > + trace_dbus_filter(serial, discard_serial); > > + g_object_unref(message); > > + return NULL; > > + } > > + } > > + > > return message; > > } > > > > diff --git a/roms/openbios b/roms/openbios > > index c3a19c1e54..af97fd7af5 160000 > > --- a/roms/openbios > > +++ b/roms/openbios > > @@ -1 +1 @@ > > -Subproject commit c3a19c1e54977a53027d6232050e1e3e39a98a1b > > +Subproject commit af97fd7af5e7c18f591a7b987291d3db4ffb28b5 > > An accidental change of roms/openbios.
good catch.. thanks