From 2a0f0be8c05edda713f178667dab1a1684848360 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Sat, 11 Feb 2023 09:19:29 -0800 Subject: [PATCH] lib: decode pixman_format_t into cairo_format_t --- lib/mks-paintable.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/mks-paintable.c b/lib/mks-paintable.c index 42a1d68..45526e6 100644 --- a/lib/mks-paintable.c +++ b/lib/mks-paintable.c @@ -199,10 +199,21 @@ mks_paintable_listener_update (MksPaintable *self, GVariant *bytes, MksQemuListener *listener) { + cairo_format_t format; + g_assert (MKS_IS_PAINTABLE (self)); g_assert (G_IS_DBUS_METHOD_INVOCATION (invocation)); g_assert (MKS_QEMU_IS_LISTENER (listener)); + if (!(format = _pixman_format_to_cairo_format (pixman_format))) + { + g_dbus_method_invocation_return_error_literal (invocation, + G_IO_ERROR, + G_IO_ERROR_NOT_SUPPORTED, + "Pixman format not supported"); + return TRUE; + } + gdk_paintable_invalidate_contents (GDK_PAINTABLE (self)); g_print ("Update {%d,%d,%d,%d}\n", x, y, width, height); @@ -221,12 +232,22 @@ mks_paintable_listener_scanout (MksPaintable *self, GVariant *bytes, MksQemuListener *listener) { + cairo_format_t format; gboolean size_changed; g_assert (MKS_IS_PAINTABLE (self)); g_assert (G_IS_DBUS_METHOD_INVOCATION (invocation)); g_assert (MKS_QEMU_IS_LISTENER (listener)); + if (!(format = _pixman_format_to_cairo_format (pixman_format))) + { + g_dbus_method_invocation_return_error_literal (invocation, + G_IO_ERROR, + G_IO_ERROR_NOT_SUPPORTED, + "Pixman format not supported"); + return TRUE; + } + size_changed = width != self->width || height != self->height; g_print ("Scannout!\n");