[Spice-commits] server/reds.c

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Sep 21 09:04:05 UTC 2018


 server/reds.c |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

New commits:
commit 145362b046c4acb03a334fe3602a553bcc5172ed
Author: Lukáš Hrázký <lhrazky at redhat.com>
Date:   Thu Sep 20 18:24:01 2018 +0200

    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 at redhat.com>
    Acked-by: Frediano Ziglio <fziglio at redhat.com>

diff --git a/server/reds.c b/server/reds.c
index 85043a88..4f890348 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -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) {


More information about the Spice-commits mailing list