----- Original Message ----- > add spice_display_get_width() and spice_display_get_height() to get the > current > configuration of the display resolution. Why not a function to return the SpiceDisplayMonitorConfig ? > --- > gtk/map-file | 2 ++ > gtk/spice-gtk-sym-file | 2 ++ > gtk/spice-widget.c | 45 +++++++++++++++++++++++++++++++++------------ > gtk/spice-widget.h | 3 +++ > 4 files changed, 40 insertions(+), 12 deletions(-) > > diff --git a/gtk/map-file b/gtk/map-file > index 368b44f..2f89d61 100644 > --- a/gtk/map-file > +++ b/gtk/map-file > @@ -32,6 +32,8 @@ spice_display_new_with_monitor; > spice_display_paste_from_guest; > spice_display_send_keys; > spice_display_set_grab_keys; > +spice_display_get_width; > +spice_display_get_height; > 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..8c8ca0b 100644 > --- a/gtk/spice-gtk-sym-file > +++ b/gtk/spice-gtk-sym-file > @@ -9,6 +9,8 @@ spice_display_new_with_monitor > spice_display_paste_from_guest > spice_display_send_keys > spice_display_set_grab_keys > +spice_display_get_width > +spice_display_get_height > 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..59b7087 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) > +static SpiceDisplayMonitorConfig* get_monitor_config(SpiceDisplay* display) > { > - 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); > + 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); > + SpiceDisplayMonitorConfig *c = 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); > @@ -2575,6 +2583,19 @@ GdkPixbuf *spice_display_get_pixbuf(SpiceDisplay > *display) > return pixbuf; > } > > +gint spice_display_get_width(SpiceDisplay *display) > +{ > + SpiceDisplayMonitorConfig* cfg = get_monitor_config(display); > + return cfg ? cfg->width : 0; > +} > + > +gint spice_display_get_height(SpiceDisplay *display) > +{ > + SpiceDisplayMonitorConfig* cfg = get_monitor_config(display); > + return cfg ? cfg->height : 0; > +} > + > + > #if HAVE_X11_XKBLIB_H > static guint32 get_keyboard_lock_modifiers(Display *x_display) > { > diff --git a/gtk/spice-widget.h b/gtk/spice-widget.h > index d239ed2..7335722 100644 > --- a/gtk/spice-widget.h > +++ b/gtk/spice-widget.h > @@ -80,6 +80,9 @@ void spice_display_send_keys(SpiceDisplay *display, const > guint *keyvals, > int nkeyvals, SpiceDisplayKeyEvent kind); > GdkPixbuf *spice_display_get_pixbuf(SpiceDisplay *display); > > +gint spice_display_get_width(SpiceDisplay *display); > +gint spice_display_get_height(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