Count display channels for tablet mode check

Having a single QXL interface is not enough, there can be other (e.g.
streaming) display channels that make the tablet unusable. Add a check for the
number of display channels also being equal to 1. We still need the check for
QXL interaces, because the tablet only works with QXL.

Signed-off-by: Lukáš Hrázký <lhrazky@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
This commit is contained in:
Lukáš Hrázký 2018-09-20 18:24:01 +02:00 committed by Frediano Ziglio
parent 4f08f50de9
commit 145362b046

View File

@ -651,9 +651,20 @@ static void reds_update_mouse_mode(RedsState *reds)
{
int allowed = 0;
int qxl_count = g_list_length(reds->qxl_instances);
int display_channel_count = 0;
RedChannel *channel;
GLIST_FOREACH(reds->channels, RedChannel, channel) {
uint32_t this_type;
g_object_get(channel, "channel-type", &this_type, NULL);
if (this_type == SPICE_CHANNEL_DISPLAY) {
++display_channel_count;
}
}
if ((reds->config->agent_mouse && reds->vdagent) ||
(inputs_channel_has_tablet(reds->inputs_channel) && qxl_count == 1)) {
(inputs_channel_has_tablet(reds->inputs_channel) &&
qxl_count == 1 && display_channel_count == 1)) {
allowed = reds->dispatcher_allows_client_mouse;
}
if (allowed == reds->is_client_mouse_allowed) {