[Spice-devel] [PATCH spice-gtk 1/2] Update current resolution when agent is started
Hans de Goede
hdegoede at redhat.com
Sat Mar 16 03:34:15 PDT 2013
ACK series
On 03/16/2013 01:02 AM, Marc-André Lureau wrote:
> This ensures we have the requested resolution whenever possible.
> ---
> gtk/channel-main.c | 49 ++++++++++++++++++++++++++++---------------------
> 1 file changed, 28 insertions(+), 21 deletions(-)
>
> diff --git a/gtk/channel-main.c b/gtk/channel-main.c
> index 2039a8a..2104f49 100644
> --- a/gtk/channel-main.c
> +++ b/gtk/channel-main.c
> @@ -1289,6 +1289,30 @@ static void agent_clipboard_release(SpiceMainChannel *channel, guint selection)
> agent_msg_queue(channel, VD_AGENT_CLIPBOARD_RELEASE, msgsize, msg);
> }
>
> +/* main context*/
> +static gboolean timer_set_display(gpointer data)
> +{
> + SpiceMainChannel *channel = data;
> + SpiceMainChannelPrivate *c = channel->priv;
> +
> + c->timer_id = 0;
> + if (c->agent_connected)
> + spice_main_send_monitor_config(channel);
> +
> + return FALSE;
> +}
> +
> +/* any context */
> +static void update_display_timer(SpiceMainChannel *channel, guint seconds)
> +{
> + SpiceMainChannelPrivate *c = channel->priv;
> +
> + if (c->timer_id)
> + g_source_remove(c->timer_id);
> +
> + c->timer_id = g_timeout_add_seconds(seconds, timer_set_display, channel);
> +}
> +
> /* coroutine context */
> static void set_agent_connected(SpiceMainChannel *channel, gboolean connected)
> {
> @@ -1297,6 +1321,8 @@ static void set_agent_connected(SpiceMainChannel *channel, gboolean connected)
> c->agent_connected = connected;
> SPICE_DEBUG("agent connected: %s", spice_yes_no(connected));
> g_object_notify_main_context(G_OBJECT(channel), "agent-connected");
> +
> + update_display_timer(channel, 0);
> }
>
> /* coroutine context */
> @@ -2320,19 +2346,6 @@ static void spice_main_handle_msg(SpiceChannel *channel, SpiceMsgIn *msg)
> g_return_if_reached();
> }
>
> -/* system context*/
> -static gboolean timer_set_display(gpointer data)
> -{
> - SpiceChannel *channel = data;
> - SpiceMainChannelPrivate *c = SPICE_MAIN_CHANNEL(channel)->priv;
> -
> - c->timer_id = 0;
> - if (c->agent_connected)
> - spice_main_send_monitor_config(SPICE_MAIN_CHANNEL(channel));
> -
> - return false;
> -}
> -
> /**
> * spice_main_agent_test_capability:
> * @channel:
> @@ -2387,10 +2400,7 @@ void spice_main_set_display(SpiceMainChannel *channel, int id,
> c->display[id].width = width;
> c->display[id].height = height;
>
> - if (c->timer_id) {
> - g_source_remove(c->timer_id);
> - }
> - c->timer_id = g_timeout_add_seconds(1, timer_set_display, channel);
> + update_display_timer(channel, 1);
> }
>
> /**
> @@ -2572,10 +2582,7 @@ void spice_main_set_display_enabled(SpiceMainChannel *channel, int id, gboolean
> c->display[id].enabled = enabled;
> }
>
> - if (c->timer_id) {
> - g_source_remove(c->timer_id);
> - }
> - c->timer_id = g_timeout_add_seconds(1, timer_set_display, channel);
> + update_display_timer(channel, 1);
> }
>
> static void file_xfer_failed(SpiceFileXferTask *task, GError *error)
>
More information about the Spice-devel
mailing list