From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34644) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eAaaX-0005sJ-Vz for qemu-devel@nongnu.org; Fri, 03 Nov 2017 07:56:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eAaaT-0003WO-Hz for qemu-devel@nongnu.org; Fri, 03 Nov 2017 07:56:42 -0400 Received: from smtp02.citrix.com ([66.165.176.63]:52427) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1eAaaT-0003St-Cu for qemu-devel@nongnu.org; Fri, 03 Nov 2017 07:56:37 -0400 From: Owen Smith Date: Fri, 3 Nov 2017 11:56:30 +0000 Message-ID: <20171103115631.15175-4-owen.smith@citrix.com> In-Reply-To: <20171103115631.15175-1-owen.smith@citrix.com> References: <20171103115631.15175-1-owen.smith@citrix.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH v5 3/4] xenfb: Add [feature|request]-raw-pointer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: sstabellini@kernel.org, anthony.perard@citrix.com, kraxel@redhat.com Cc: qemu-devel@nongnu.org, xen-devel@lists.xenproject.org, owen.smith@citrix.com Writes "feature-raw-pointer" during init to indicate the backend can pass raw unscaled values for absolute axes to the frontend. Frontends set "request-raw-pointer" to indicate the backend should not attempt to scale absolute values to console size. "request-raw-pointer" is only valid if "request-abs-pointer" is also set. Raw unscaled pointer values are in the range [0, 0x7fff] "feature-raw-pointer" and "request-raw-pointer" added to Xen header in commit 7868654ff7fe5e4a2eeae2b277644fa884a5031e Signed-off-by: Owen Smith --- hw/display/xenfb.c | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index 0cf8b3aff7..3cbc248c34 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -52,6 +52,7 @@ struct common { struct XenInput { struct common c; int abs_pointer_wanted; /* Whether guest supports absolute pointer */ + int raw_pointer_wanted; /* Whether guest supports raw (unscaled) pointer */ QemuInputHandlerState *qkbd; QemuInputHandlerState *qmou; int axis[INPUT_AXIS__MAX]; @@ -264,24 +265,28 @@ static void xenfb_mouse_event(DeviceState *dev, QemuConsole *src, case INPUT_EVENT_KIND_ABS: move = evt->u.abs.data; - con = qemu_console_lookup_by_index(0); - if (!con) { - xen_pv_printf(&xenfb->c.xendev, 0, "No QEMU console available"); - return; - } - surface = qemu_console_surface(con); - switch (move->axis) { - case INPUT_AXIS_X: - scale = surface_width(surface) - 1; - break; - case INPUT_AXIS_Y: - scale = surface_height(surface) - 1; - break; - default: - scale = 0x8000; - break; + if (xenfb->raw_pointer_wanted) { + xenfb->axis[move->axis] = move->value; + } else { + con = qemu_console_lookup_by_index(0); + if (!con) { + xen_pv_printf(&xenfb->c.xendev, 0, "No QEMU console available"); + return; + } + surface = qemu_console_surface(con); + switch (move->axis) { + case INPUT_AXIS_X: + scale = surface_width(surface) - 1; + break; + case INPUT_AXIS_Y: + scale = surface_height(surface) - 1; + break; + default: + scale = 0x8000; + break; + } + xenfb->axis[move->axis] = move->value * scale / 0x7fff; } - xenfb->axis[move->axis] = move->value * scale / 0x7fff; break; case INPUT_EVENT_KIND_REL: @@ -339,6 +344,7 @@ static QemuInputHandler xenfb_rel_mouse = { static int input_init(struct XenDevice *xendev) { xenstore_write_be_int(xendev, "feature-abs-pointer", 1); + xenstore_write_be_int(xendev, "feature-raw-pointer", 1); return 0; } @@ -362,6 +368,13 @@ static void input_connected(struct XenDevice *xendev) &in->abs_pointer_wanted) == -1) { in->abs_pointer_wanted = 0; } + if (xenstore_read_fe_int(xendev, "request-raw-pointer", + &in->raw_pointer_wanted) == -1) { + in->raw_pointer_wanted = 0; + } + if (in->raw_pointer_wanted && in->abs_pointer_wanted == 0) { + xen_pv_printf(xendev, 0, "raw pointer set without abs pointer"); + } if (in->qkbd) { qemu_input_handler_unregister(in->qkbd); -- 2.11.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Owen Smith Subject: [PATCH v5 3/4] xenfb: Add [feature|request]-raw-pointer Date: Fri, 3 Nov 2017 11:56:30 +0000 Message-ID: <20171103115631.15175-4-owen.smith@citrix.com> References: <20171103115631.15175-1-owen.smith@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eAaaV-0008Ca-PM for xen-devel@lists.xenproject.org; Fri, 03 Nov 2017 11:56:39 +0000 In-Reply-To: <20171103115631.15175-1-owen.smith@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: sstabellini@kernel.org, anthony.perard@citrix.com, kraxel@redhat.com Cc: xen-devel@lists.xenproject.org, qemu-devel@nongnu.org, owen.smith@citrix.com List-Id: xen-devel@lists.xenproject.org V3JpdGVzICJmZWF0dXJlLXJhdy1wb2ludGVyIiBkdXJpbmcgaW5pdCB0byBpbmRpY2F0ZSB0aGUg YmFja2VuZApjYW4gcGFzcyByYXcgdW5zY2FsZWQgdmFsdWVzIGZvciBhYnNvbHV0ZSBheGVzIHRv IHRoZSBmcm9udGVuZC4KRnJvbnRlbmRzIHNldCAicmVxdWVzdC1yYXctcG9pbnRlciIgdG8gaW5k aWNhdGUgdGhlIGJhY2tlbmQgc2hvdWxkCm5vdCBhdHRlbXB0IHRvIHNjYWxlIGFic29sdXRlIHZh bHVlcyB0byBjb25zb2xlIHNpemUuCiJyZXF1ZXN0LXJhdy1wb2ludGVyIiBpcyBvbmx5IHZhbGlk IGlmICJyZXF1ZXN0LWFicy1wb2ludGVyIiBpcwphbHNvIHNldC4gUmF3IHVuc2NhbGVkIHBvaW50 ZXIgdmFsdWVzIGFyZSBpbiB0aGUgcmFuZ2UgWzAsIDB4N2ZmZl0KCiJmZWF0dXJlLXJhdy1wb2lu dGVyIiBhbmQgInJlcXVlc3QtcmF3LXBvaW50ZXIiIGFkZGVkIHRvIFhlbgpoZWFkZXIgaW4gY29t bWl0IDc4Njg2NTRmZjdmZTVlNGEyZWVhZTJiMjc3NjQ0ZmE4ODRhNTAzMWUKClNpZ25lZC1vZmYt Ynk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBody9kaXNwbGF5L3hl bmZiLmMgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2h3L2Rpc3BsYXkveGVuZmIuYyBiL2h3L2Rpc3BsYXkveGVuZmIuYwppbmRleCAw Y2Y4YjNhZmY3Li4zY2JjMjQ4YzM0IDEwMDY0NAotLS0gYS9ody9kaXNwbGF5L3hlbmZiLmMKKysr IGIvaHcvZGlzcGxheS94ZW5mYi5jCkBAIC01Miw2ICs1Miw3IEBAIHN0cnVjdCBjb21tb24gewog c3RydWN0IFhlbklucHV0IHsKICAgICBzdHJ1Y3QgY29tbW9uIGM7CiAgICAgaW50IGFic19wb2lu dGVyX3dhbnRlZDsgLyogV2hldGhlciBndWVzdCBzdXBwb3J0cyBhYnNvbHV0ZSBwb2ludGVyICov CisgICAgaW50IHJhd19wb2ludGVyX3dhbnRlZDsgLyogV2hldGhlciBndWVzdCBzdXBwb3J0cyBy YXcgKHVuc2NhbGVkKSBwb2ludGVyICovCiAgICAgUWVtdUlucHV0SGFuZGxlclN0YXRlICpxa2Jk OwogICAgIFFlbXVJbnB1dEhhbmRsZXJTdGF0ZSAqcW1vdTsKICAgICBpbnQgYXhpc1tJTlBVVF9B WElTX19NQVhdOwpAQCAtMjY0LDI0ICsyNjUsMjggQEAgc3RhdGljIHZvaWQgeGVuZmJfbW91c2Vf ZXZlbnQoRGV2aWNlU3RhdGUgKmRldiwgUWVtdUNvbnNvbGUgKnNyYywKIAogICAgIGNhc2UgSU5Q VVRfRVZFTlRfS0lORF9BQlM6CiAgICAgICAgIG1vdmUgPSBldnQtPnUuYWJzLmRhdGE7Ci0gICAg ICAgIGNvbiA9IHFlbXVfY29uc29sZV9sb29rdXBfYnlfaW5kZXgoMCk7Ci0gICAgICAgIGlmICgh Y29uKSB7Ci0gICAgICAgICAgICB4ZW5fcHZfcHJpbnRmKCZ4ZW5mYi0+Yy54ZW5kZXYsIDAsICJO byBRRU1VIGNvbnNvbGUgYXZhaWxhYmxlIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg IH0KLSAgICAgICAgc3VyZmFjZSA9IHFlbXVfY29uc29sZV9zdXJmYWNlKGNvbik7Ci0gICAgICAg IHN3aXRjaCAobW92ZS0+YXhpcykgewotICAgICAgICBjYXNlIElOUFVUX0FYSVNfWDoKLSAgICAg ICAgICAgIHNjYWxlID0gc3VyZmFjZV93aWR0aChzdXJmYWNlKSAtIDE7Ci0gICAgICAgICAgICBi cmVhazsKLSAgICAgICAgY2FzZSBJTlBVVF9BWElTX1k6Ci0gICAgICAgICAgICBzY2FsZSA9IHN1 cmZhY2VfaGVpZ2h0KHN1cmZhY2UpIC0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk ZWZhdWx0OgotICAgICAgICAgICAgc2NhbGUgPSAweDgwMDA7Ci0gICAgICAgICAgICBicmVhazsK KyAgICAgICAgaWYgKHhlbmZiLT5yYXdfcG9pbnRlcl93YW50ZWQpIHsKKyAgICAgICAgICAgIHhl bmZiLT5heGlzW21vdmUtPmF4aXNdID0gbW92ZS0+dmFsdWU7CisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICBjb24gPSBxZW11X2NvbnNvbGVfbG9va3VwX2J5X2luZGV4KDApOworICAgICAg ICAgICAgaWYgKCFjb24pIHsKKyAgICAgICAgICAgICAgICB4ZW5fcHZfcHJpbnRmKCZ4ZW5mYi0+ Yy54ZW5kZXYsIDAsICJObyBRRU1VIGNvbnNvbGUgYXZhaWxhYmxlIik7CisgICAgICAgICAgICAg ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3VyZmFjZSA9IHFlbXVfY29u c29sZV9zdXJmYWNlKGNvbik7CisgICAgICAgICAgICBzd2l0Y2ggKG1vdmUtPmF4aXMpIHsKKyAg ICAgICAgICAgIGNhc2UgSU5QVVRfQVhJU19YOgorICAgICAgICAgICAgICAgIHNjYWxlID0gc3Vy ZmFjZV93aWR0aChzdXJmYWNlKSAtIDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICBjYXNlIElOUFVUX0FYSVNfWToKKyAgICAgICAgICAgICAgICBzY2FsZSA9IHN1cmZhY2Vf aGVpZ2h0KHN1cmZhY2UpIC0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc2NhbGUgPSAweDgwMDA7CisgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB4ZW5mYi0+YXhpc1ttb3ZlLT5h eGlzXSA9IG1vdmUtPnZhbHVlICogc2NhbGUgLyAweDdmZmY7CiAgICAgICAgIH0KLSAgICAgICAg eGVuZmItPmF4aXNbbW92ZS0+YXhpc10gPSBtb3ZlLT52YWx1ZSAqIHNjYWxlIC8gMHg3ZmZmOwog ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSU5QVVRfRVZFTlRfS0lORF9SRUw6CkBAIC0zMzks NiArMzQ0LDcgQEAgc3RhdGljIFFlbXVJbnB1dEhhbmRsZXIgeGVuZmJfcmVsX21vdXNlID0gewog c3RhdGljIGludCBpbnB1dF9pbml0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKIHsKICAgICB4 ZW5zdG9yZV93cml0ZV9iZV9pbnQoeGVuZGV2LCAiZmVhdHVyZS1hYnMtcG9pbnRlciIsIDEpOwor ICAgIHhlbnN0b3JlX3dyaXRlX2JlX2ludCh4ZW5kZXYsICJmZWF0dXJlLXJhdy1wb2ludGVyIiwg MSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM2Miw2ICszNjgsMTMgQEAgc3RhdGljIHZvaWQg aW5wdXRfY29ubmVjdGVkKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmluLT5hYnNfcG9pbnRlcl93YW50ZWQpID09IC0xKSB7CiAgICAgICAg IGluLT5hYnNfcG9pbnRlcl93YW50ZWQgPSAwOwogICAgIH0KKyAgICBpZiAoeGVuc3RvcmVfcmVh ZF9mZV9pbnQoeGVuZGV2LCAicmVxdWVzdC1yYXctcG9pbnRlciIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZpbi0+cmF3X3BvaW50ZXJfd2FudGVkKSA9PSAtMSkgeworICAgICAgICBp bi0+cmF3X3BvaW50ZXJfd2FudGVkID0gMDsKKyAgICB9CisgICAgaWYgKGluLT5yYXdfcG9pbnRl cl93YW50ZWQgJiYgaW4tPmFic19wb2ludGVyX3dhbnRlZCA9PSAwKSB7CisgICAgICAgIHhlbl9w dl9wcmludGYoeGVuZGV2LCAwLCAicmF3IHBvaW50ZXIgc2V0IHdpdGhvdXQgYWJzIHBvaW50ZXIi KTsKKyAgICB9CiAKICAgICBpZiAoaW4tPnFrYmQpIHsKICAgICAgICAgcWVtdV9pbnB1dF9oYW5k bGVyX3VucmVnaXN0ZXIoaW4tPnFrYmQpOwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==