[Spice-devel] [PATCH spice-gtk 2/2] channel-main: Add support for VD_AGENT_CAP_SPARSE_MONITORS_CONFIG (rhbz#881072)

Marc-André Lureau marcandre.lureau at gmail.com
Sun Jan 13 06:51:32 PST 2013


Hi

Why not be consistant with QXLMonitorsConfig and add an id field to
VDAgentMonitorConfig? That's why spice-gtk didn't care much about
QXLMonitorsConfig id, since VDAgentMonitorConfig didn't had one (since
it was meant to reflect real hw I suppose), it couldn't set it back
(unless the agent learned to deal with "sparse" monitors in some
ways). I agree it could have been done in the first place. Patch looks
good otherwise.

On Fri, Jan 11, 2013 at 10:55 PM, Hans de Goede <hdegoede at redhat.com> wrote:
> Hi,
>
>
> On 01/11/2013 09:02 PM, Marc-André Lureau wrote:
>>
>> Hi
>>
>> My understanding of this patch is that you send all monitors config,
>> regardless if there are disabled. This is a bit wasteful, but not a
>> real problem.
>>
>> Why is that needed if the implementation handle "missing" monitors id
>> as disabled? (which is what the current implementation should do, no?)
>
>
> This code builds a VDAgentMonitorsConfig which contains
> a "struct VDAgentMonConfig monitors[]" array and the
> VDAgentMonConfig struct does not contain ids, instead the expectation is
> that the info for the display with id x is stored at monitors[x]
>
> Note that this being a problem is already acknowledged in the current
> code with a FIXME comment, which this patch actually fixes.
>
> Regards,
>
> Hans
>
>
>
>
>
>>
>> On Thu, Jan 10, 2013 at 11:52 PM, Hans de Goede <hdegoede at redhat.com>
>> wrote:
>>>
>>> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
>>> ---
>>>   gtk/channel-main.c | 20 ++++++++++++++------
>>>   1 file changed, 14 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/gtk/channel-main.c b/gtk/channel-main.c
>>> index 653b989..720fcfa 100644
>>> --- a/gtk/channel-main.c
>>> +++ b/gtk/channel-main.c
>>> @@ -939,11 +939,15 @@ gboolean
>>> spice_main_send_monitor_config(SpiceMainChannel *channel)
>>>       c = channel->priv;
>>>       g_return_val_if_fail(c->agent_connected, FALSE);
>>>
>>> -    monitors = 0;
>>> -    /* FIXME: fix MonitorConfig to be per display */
>>> -    for (i = 0; i < SPICE_N_ELEMENTS(c->display); i++) {
>>> -        if (c->display[i].enabled)
>>> -            monitors += 1;
>>> +    if (spice_main_agent_test_capability(channel,
>>> +
>>> VD_AGENT_CAP_SPARSE_MONITORS_CONFIG)) {
>>> +        monitors = SPICE_N_ELEMENTS(c->display);
>>> +    } else {
>>> +        monitors = 0;
>>> +        for (i = 0; i < SPICE_N_ELEMENTS(c->display); i++) {
>>> +            if (c->display[i].enabled)
>>> +                monitors += 1;
>>> +        }
>>>       }
>>>
>>>       size = sizeof(VDAgentMonitorsConfig) + sizeof(VDAgentMonConfig) *
>>> monitors;
>>> @@ -956,8 +960,12 @@ gboolean
>>> spice_main_send_monitor_config(SpiceMainChannel *channel)
>>>
>>>       j = 0;
>>>       for (i = 0; i < SPICE_N_ELEMENTS(c->display); i++) {
>>> -        if (!c->display[i].enabled)
>>> +        if (!c->display[i].enabled) {
>>> +            if (spice_main_agent_test_capability(channel,
>>> +
>>> VD_AGENT_CAP_SPARSE_MONITORS_CONFIG))
>>> +                j++;
>>>               continue;
>>> +        }
>>>           mon->monitors[j].depth  = c->display_color_depth ?
>>> c->display_color_depth : 32;
>>>           mon->monitors[j].width  = c->display[j].width;
>>>           mon->monitors[j].height = c->display[j].height;
>>> --
>>> 1.8.0.2
>>>
>>> _______________________________________________
>>> Spice-devel mailing list
>>> Spice-devel at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>>
>>
>>
>>
>



-- 
Marc-André Lureau


More information about the Spice-devel mailing list