----- Original Message ----- > Add spice_display_get_monitor_config() to get the current configuration of > the > display. > --- > > Change to return the SpiceDisplayMonitorConfig struct as suggested by > Marc-Andre > > gtk/map-file | 1 + > gtk/spice-gtk-sym-file | 1 + > gtk/spice-widget.c | 32 ++++++++++++++++++++------------ > gtk/spice-widget.h | 2 ++ > 4 files changed, 24 insertions(+), 12 deletions(-) > > diff --git a/gtk/map-file b/gtk/map-file > index 368b44f..d093f7c 100644 > --- a/gtk/map-file > +++ b/gtk/map-file > @@ -32,6 +32,7 @@ spice_display_new_with_monitor; > spice_display_paste_from_guest; > spice_display_send_keys; > spice_display_set_grab_keys; > +spice_display_get_monitor_config; > spice_error_get_type; > spice_get_option_group; > spice_grab_sequence_as_string; > diff --git a/gtk/spice-gtk-sym-file b/gtk/spice-gtk-sym-file > index 1574e07..8d3c9a0 100644 > --- a/gtk/spice-gtk-sym-file > +++ b/gtk/spice-gtk-sym-file > @@ -9,6 +9,7 @@ spice_display_new_with_monitor > spice_display_paste_from_guest > spice_display_send_keys > spice_display_set_grab_keys > +spice_display_get_monitor_config > spice_grab_sequence_as_string > spice_grab_sequence_copy > spice_grab_sequence_free > diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c > index d39ff59..335b0af 100644 > --- a/gtk/spice-widget.c > +++ b/gtk/spice-widget.c > @@ -278,25 +278,35 @@ static gint get_display_id(SpiceDisplay *display) > return d->channel_id; > } > > -static void update_monitor_area(SpiceDisplay *display) > +const SpiceDisplayMonitorConfig* > spice_display_get_monitor_config(SpiceDisplay *display) Please add doc of public functions > { > - SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); > - SpiceDisplayMonitorConfig *cfg, *c = NULL; > - GArray *monitors = NULL; > int i; > + GArray *monitors = NULL; > + SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); Argh, in theory we should have more g_return_val_if_fail(SPICE_IS_DISPLAY(display), NULL) in our public functions, but I see a lot are missing in spice-widget. It can be done in a seperate commit. ack otherwise > + SpiceDisplayMonitorConfig* c = NULL; > > - SPICE_DEBUG("update monitor area %d:%d", d->channel_id, d->monitor_id); > - if (d->monitor_id < 0) > - goto whole; > + g_return_val_if_fail(d->monitor_id >= 0, NULL); > > g_object_get(d->display, "monitors", &monitors, NULL); > for (i = 0; monitors != NULL && i < monitors->len; i++) { > - cfg = &g_array_index(monitors, SpiceDisplayMonitorConfig, i); > + SpiceDisplayMonitorConfig *cfg = &g_array_index(monitors, > + > SpiceDisplayMonitorConfig, > + i); > if (cfg->id == d->monitor_id) { > - c = cfg; > - break; > + c = cfg; > + break; > } > } > + > + g_clear_pointer(&monitors, g_array_unref); > + return c; > +} > + > +static void update_monitor_area(SpiceDisplay *display) > +{ > + SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); > + const SpiceDisplayMonitorConfig *c = > spice_display_get_monitor_config(display); > + > if (c == NULL) { > SPICE_DEBUG("update monitor: no monitor %d", d->monitor_id); > set_monitor_ready(display, false); > @@ -318,11 +328,9 @@ static void update_monitor_area(SpiceDisplay *display) > c->x, c->y, c->width, c->height, FALSE); > > update_area(display, c->x, c->y, c->width, c->height); > - g_clear_pointer(&monitors, g_array_unref); > return; > > whole: > - g_clear_pointer(&monitors, g_array_unref); > /* by display whole surface */ > update_area(display, 0, 0, d->width, d->height); > set_monitor_ready(display, true); > diff --git a/gtk/spice-widget.h b/gtk/spice-widget.h > index d239ed2..f7cfbf1 100644 > --- a/gtk/spice-widget.h > +++ b/gtk/spice-widget.h > @@ -80,6 +80,8 @@ void spice_display_send_keys(SpiceDisplay *display, const > guint *keyvals, > int nkeyvals, SpiceDisplayKeyEvent kind); > GdkPixbuf *spice_display_get_pixbuf(SpiceDisplay *display); > > +const SpiceDisplayMonitorConfig* > spice_display_get_monitor_config(SpiceDisplay *display); > + > #ifndef SPICE_DISABLE_DEPRECATED > SPICE_DEPRECATED_FOR(spice_gtk_session_copy_to_guest) > void spice_display_copy_to_guest(SpiceDisplay *display); > -- > 1.8.3.1 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel