--- gtk/channel-display.c | 27 +++++++++++++++++++++++++++ gtk/channel-display.h | 10 ++++++++++ 2 files changed, 37 insertions(+) diff --git a/gtk/channel-display.c b/gtk/channel-display.c index 952628c..681482b 100644 --- a/gtk/channel-display.c +++ b/gtk/channel-display.c @@ -70,6 +70,7 @@ struct _SpiceDisplayChannelPrivate { int nstreams; gboolean mark; guint mark_false_event_id; + GArray *monitors; #ifdef WIN32 HDC dc; #endif @@ -82,6 +83,7 @@ enum { PROP_0, PROP_WIDTH, PROP_HEIGHT, + PROP_MONITORS }; enum { @@ -123,6 +125,9 @@ static void spice_display_channel_dispose(GObject *object) static void spice_display_channel_finalize(GObject *object) { + SpiceDisplayChannelPrivate *c = SPICE_DISPLAY_CHANNEL(object)->priv; + + g_clear_pointer(&c->monitors, g_array_unref); clear_surfaces(SPICE_CHANNEL(object), FALSE); clear_streams(SPICE_CHANNEL(object)); @@ -142,6 +147,8 @@ static void spice_display_channel_constructed(GObject *object) g_return_if_fail(c->images != NULL); g_return_if_fail(c->palettes != NULL); + c->monitors = g_array_new(FALSE, TRUE, sizeof(SpiceDisplayMonitorConfig)); + if (G_OBJECT_CLASS(spice_display_channel_parent_class)->constructed) G_OBJECT_CLASS(spice_display_channel_parent_class)->constructed(object); } @@ -165,6 +172,10 @@ static void spice_display_get_property(GObject *object, g_value_set_uint(value, surface ? surface->height : 0); break; } + case PROP_MONITORS: { + g_value_set_boxed(value, c->monitors); + break; + } default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -228,6 +239,22 @@ static void spice_display_channel_class_init(SpiceDisplayChannelClass *klass) G_PARAM_STATIC_STRINGS)); /** + * SpiceDisplayChannel:monitors: + * + * Current monitors configuration. + * + * Since: 0.13 + */ + g_object_class_install_property + (gobject_class, PROP_MONITORS, + g_param_spec_boxed("monitors", + "Display monitors", + "The monitors configuration", + G_TYPE_ARRAY, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS)); + + /** * SpiceDisplayChannel::display-primary-create: * @display: the #SpiceDisplayChannel that emitted the signal * @format: %SPICE_SURFACE_FMT_32_xRGB or %SPICE_SURFACE_FMT_16_555; diff --git a/gtk/channel-display.h b/gtk/channel-display.h index b8d7679..a31aa54 100644 --- a/gtk/channel-display.h +++ b/gtk/channel-display.h @@ -33,6 +33,16 @@ typedef struct _SpiceDisplayChannel SpiceDisplayChannel; typedef struct _SpiceDisplayChannelClass SpiceDisplayChannelClass; typedef struct _SpiceDisplayChannelPrivate SpiceDisplayChannelPrivate; +typedef struct _SpiceDisplayMonitorConfig SpiceDisplayMonitorConfig; +struct _SpiceDisplayMonitorConfig { + guint id; + guint surface_id; + guint x; + guint y; + guint width; + guint height; +}; + /** * SpiceDisplayChannel: * -- 1.7.10.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel