ui/dbus: factor out sending a scanout
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
349b1881de
commit
7945576cf2
@ -630,11 +630,26 @@ static void dbus_gfx_update_sub(DBusDisplayListener *ddl,
|
|||||||
DBUS_DEFAULT_TIMEOUT, NULL, NULL, NULL);
|
DBUS_DEFAULT_TIMEOUT, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ddl_scanout(DBusDisplayListener *ddl)
|
||||||
|
{
|
||||||
|
GVariant *v_data;
|
||||||
|
|
||||||
|
v_data = g_variant_new_from_data(
|
||||||
|
G_VARIANT_TYPE("ay"), surface_data(ddl->ds),
|
||||||
|
surface_stride(ddl->ds) * surface_height(ddl->ds), TRUE,
|
||||||
|
(GDestroyNotify)pixman_image_unref, pixman_image_ref(ddl->ds->image));
|
||||||
|
|
||||||
|
qemu_dbus_display1_listener_call_scanout(
|
||||||
|
ddl->proxy, surface_width(ddl->ds), surface_height(ddl->ds),
|
||||||
|
surface_stride(ddl->ds), surface_format(ddl->ds), v_data,
|
||||||
|
G_DBUS_CALL_FLAGS_NONE, DBUS_DEFAULT_TIMEOUT, NULL, NULL,
|
||||||
|
g_object_ref(ddl));
|
||||||
|
}
|
||||||
|
|
||||||
static void dbus_gfx_update(DisplayChangeListener *dcl,
|
static void dbus_gfx_update(DisplayChangeListener *dcl,
|
||||||
int x, int y, int w, int h)
|
int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
DBusDisplayListener *ddl = container_of(dcl, DBusDisplayListener, dcl);
|
DBusDisplayListener *ddl = container_of(dcl, DBusDisplayListener, dcl);
|
||||||
GVariant *v_data;
|
|
||||||
|
|
||||||
assert(ddl->ds);
|
assert(ddl->ds);
|
||||||
|
|
||||||
@ -652,23 +667,7 @@ static void dbus_gfx_update(DisplayChangeListener *dcl,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (x == 0 && y == 0 && w == surface_width(ddl->ds) && h == surface_height(ddl->ds)) {
|
if (x == 0 && y == 0 && w == surface_width(ddl->ds) && h == surface_height(ddl->ds)) {
|
||||||
v_data = g_variant_new_from_data(
|
return ddl_scanout(ddl);
|
||||||
G_VARIANT_TYPE("ay"),
|
|
||||||
surface_data(ddl->ds),
|
|
||||||
surface_stride(ddl->ds) * surface_height(ddl->ds),
|
|
||||||
TRUE,
|
|
||||||
(GDestroyNotify)pixman_image_unref,
|
|
||||||
pixman_image_ref(ddl->ds->image));
|
|
||||||
qemu_dbus_display1_listener_call_scanout(
|
|
||||||
ddl->proxy,
|
|
||||||
surface_width(ddl->ds),
|
|
||||||
surface_height(ddl->ds),
|
|
||||||
surface_stride(ddl->ds),
|
|
||||||
surface_format(ddl->ds),
|
|
||||||
v_data,
|
|
||||||
G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
DBUS_DEFAULT_TIMEOUT, NULL, NULL, NULL);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dbus_gfx_update_sub(ddl, x, y, w, h);
|
dbus_gfx_update_sub(ddl, x, y, w, h);
|
||||||
|
Loading…
Reference in New Issue
Block a user