From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HQOu7-0001U9-Nm for qemu-devel@nongnu.org; Sun, 11 Mar 2007 10:20:07 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HQOu6-0001Tw-7G for qemu-devel@nongnu.org; Sun, 11 Mar 2007 10:20:07 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HQOu5-0001Tt-Vo for qemu-devel@nongnu.org; Sun, 11 Mar 2007 09:20:06 -0500 Received: from ug-out-1314.google.com ([66.249.92.170]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HQOtW-0001Km-Q9 for qemu-devel@nongnu.org; Sun, 11 Mar 2007 10:19:31 -0400 Received: by ug-out-1314.google.com with SMTP id j40so1855694ugd for ; Sun, 11 Mar 2007 07:19:29 -0700 (PDT) Message-ID: Date: Sun, 11 Mar 2007 15:19:28 +0100 From: "andrzej zaborowski" Sender: balrogg@gmail.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_22250_7685598.1173622768431" Subject: [Qemu-devel] [PATCH] Guest mouse cursor drawing in SDL Reply-To: balrogg@gmail.com, qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_22250_7685598.1173622768431 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline This should allow the emulated video cards that support hardware accelerated cursors to relay the cursor drawing to host, possibly using real hardware cursor. This way the guest and host effectively share one cursor. Only SDL support is included. Not tested with mice that report absolute coordinates. The cursor does not appear in the framebuffer seen by the guest, it's only drawn on the host. One funny effect is that it's not clipped to the size of the framebuffer and can stick out of the SDL window. I think the sdl.c could use a small rewrite to have all cursor hiding and showing in one place instead of spread across the file. VNC support would need employing an extension for this, according to Anthony Liguori. VMware made a documented VNC extension that does it. ------=_Part_22250_7685598.1173622768431 Content-Type: text/plain; name=0002-Host-accelerated-mouse-cursor-support-in-SDL.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ez5mf1ek Content-Disposition: attachment; filename="0002-Host-accelerated-mouse-cursor-support-in-SDL.txt" RnJvbSAzY2Y3N2E4YjNjODBiMDMwNmEwZTczNjc3YWM2ZmFlYjFmODNlMGEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5vcmc+ CkRhdGU6IFN1biwgMTEgTWFyIDIwMDcgMTU6MzE6MTIgKzAxMDAKU3ViamVjdDogW1BBVENIXSBI b3N0LWFjY2VsZXJhdGVkIG1vdXNlIGN1cnNvciBzdXBwb3J0IGluIFNETC4KCi0tLQogc2RsLmMg fCAgMTA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCiB2bC5jICB8ICAgIDQgKysKIHZsLmggIHwgICAgOSArKysrKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc2RsLmMgYi9zZGwuYwppbmRleCAwY2IyMjQxLi43ODQwNDljIDEwMDY0NAotLS0gYS9z ZGwuYworKysgYi9zZGwuYwpAQCAtNDQsNiArNDQsOSBAQCBzdGF0aWMgaW50IHdpZHRoLCBoZWln aHQ7CiBzdGF0aWMgU0RMX0N1cnNvciAqc2RsX2N1cnNvcl9ub3JtYWw7CiBzdGF0aWMgU0RMX0N1 cnNvciAqc2RsX2N1cnNvcl9oaWRkZW47CiBzdGF0aWMgaW50IGFic29sdXRlX2VuYWJsZWQgPSAw Oworc3RhdGljIGludCBndWVzdF9jdXJzb3IgPSAwOworc3RhdGljIGludCBndWVzdF94LCBndWVz dF95Oworc3RhdGljIFNETF9DdXJzb3IgKmd1ZXN0X3Nwcml0ZSA9IDA7CiAKIHN0YXRpYyB2b2lk IHNkbF91cGRhdGUoRGlzcGxheVN0YXRlICpkcywgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgp CiB7CkBAIC0yNDAsMTMgKzI0MywyMCBAQCBzdGF0aWMgdm9pZCBzZGxfc2hvd19jdXJzb3Iodm9p ZCkKIHsKICAgICBpZiAoIWtiZF9tb3VzZV9pc19hYnNvbHV0ZSgpKSB7CiAgICAgICAgIFNETF9T aG93Q3Vyc29yKDEpOwotICAgICAgICBTRExfU2V0Q3Vyc29yKHNkbF9jdXJzb3Jfbm9ybWFsKTsK KyAgICAgICAgaWYgKGd1ZXN0X2N1cnNvciAmJgorICAgICAgICAgICAgICAgIChndWlfZ3JhYiB8 fCBrYmRfbW91c2VfaXNfYWJzb2x1dGUoKSB8fCBhYnNvbHV0ZV9lbmFibGVkKSkKKyAgICAgICAg ICAgIFNETF9TZXRDdXJzb3IoZ3Vlc3Rfc3ByaXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg ICAgU0RMX1NldEN1cnNvcihzZGxfY3Vyc29yX25vcm1hbCk7CiAgICAgfQogfQogCiBzdGF0aWMg dm9pZCBzZGxfZ3JhYl9zdGFydCh2b2lkKQogewotICAgIHNkbF9oaWRlX2N1cnNvcigpOworICAg IGlmIChndWVzdF9jdXJzb3IpCisgICAgICAgIFNETF9TZXRDdXJzb3IoZ3Vlc3Rfc3ByaXRlKTsK KyAgICBlbHNlCisgICAgICAgIHNkbF9oaWRlX2N1cnNvcigpOwogICAgIFNETF9XTV9HcmFiSW5w dXQoU0RMX0dSQUJfT04pOwogICAgIC8qIGR1bW15IHJlYWQgdG8gYXZvaWQgbW92aW5nIHRoZSBt b3VzZSAqLwogICAgIFNETF9HZXRSZWxhdGl2ZU1vdXNlU3RhdGUoTlVMTCwgTlVMTCk7CkBAIC0y NTcsOCArMjY3LDggQEAgc3RhdGljIHZvaWQgc2RsX2dyYWJfc3RhcnQodm9pZCkKIHN0YXRpYyB2 b2lkIHNkbF9ncmFiX2VuZCh2b2lkKQogewogICAgIFNETF9XTV9HcmFiSW5wdXQoU0RMX0dSQUJf T0ZGKTsKLSAgICBzZGxfc2hvd19jdXJzb3IoKTsKICAgICBndWlfZ3JhYiA9IDA7CisgICAgc2Rs X3Nob3dfY3Vyc29yKCk7CiAgICAgc2RsX3VwZGF0ZV9jYXB0aW9uKCk7CiB9CiAKQEAgLTI4OSw2 ICsyOTksMTIgQEAgc3RhdGljIHZvaWQgc2RsX3NlbmRfbW91c2VfZXZlbnQoaW50IGR6KQogICAg IH0gZWxzZSBpZiAoYWJzb2x1dGVfZW5hYmxlZCkgewogCXNkbF9zaG93X2N1cnNvcigpOwogCWFi c29sdXRlX2VuYWJsZWQgPSAwOworICAgIH0gZWxzZSBpZiAoZ3Vlc3RfY3Vyc29yKSB7CisgICAg ICAgIFNETF9HZXRNb3VzZVN0YXRlKCZkeCwgJmR5KTsKKyAgICAgICAgZHggLT0gZ3Vlc3RfeDsK KyAgICAgICAgZHkgLT0gZ3Vlc3RfeTsKKyAgICAgICAgZ3Vlc3RfeCArPSBkeDsKKyAgICAgICAg Z3Vlc3RfeSArPSBkeTsKICAgICB9CiAKICAgICBrYmRfbW91c2VfZXZlbnQoZHgsIGR5LCBkeiwg YnV0dG9ucyk7CkBAIC00NjcsOCArNDgzLDg2IEBAIHN0YXRpYyB2b2lkIHNkbF9yZWZyZXNoKERp c3BsYXlTdGF0ZSAqZHMpCiAgICAgfQogfQogCitzdGF0aWMgdm9pZCBzZGxfY29weShEaXNwbGF5 U3RhdGUgKmRzLCBpbnQgc3JjX3gsIGludCBzcmNfeSwKKyAgICAgICAgICAgICAgICAgICAgIGlu dCBkc3RfeCwgaW50IGRzdF95LCBpbnQgdywgaW50IGgpCit7CisgICAgU0RMX1JlY3Qgc3JjID0g eyBzcmNfeCwgc3JjX3ksIHcsIGggfTsKKyAgICBTRExfUmVjdCBkc3QgPSB7IGRzdF94LCBkc3Rf eSwgdywgaCB9OworICAgIFNETF9Mb3dlckJsaXQoc2NyZWVuLCAmc3JjLCBzY3JlZW4sICZkc3Qp OworfQorCitzdGF0aWMgdm9pZCBzZGxfZmlsbChEaXNwbGF5U3RhdGUgKmRzLCBpbnQgeCwgaW50 IHksIGludCB3LCBpbnQgaCwgdWludDMyX3QgYykKK3sKKyAgICBTRExfUmVjdCBkc3QgPSB7IHgs IHksIHcsIGggfTsKKyAgICBTRExfRmlsbFJlY3Qoc2NyZWVuLCAmZHN0LCBjKTsKK30KKworc3Rh dGljIHZvaWQgc2RsX21vdXNlX3dhcnAoaW50IHgsIGludCB5LCBpbnQgb24pCit7CisgICAgZ3Vl c3RfY3Vyc29yID0gb247CisgICAgaWYgKG9uKSB7CisgICAgICAgIHNkbF9zaG93X2N1cnNvcigp OworICAgICAgICBpZiAoZ3VpX2dyYWIgfHwga2JkX21vdXNlX2lzX2Fic29sdXRlKCkgfHwgYWJz b2x1dGVfZW5hYmxlZCkgeworICAgICAgICAgICAgU0RMX1NldEN1cnNvcihndWVzdF9zcHJpdGUp OworICAgICAgICAgICAgU0RMX1dhcnBNb3VzZShndWVzdF94ID0geCwgZ3Vlc3RfeSA9IHkpOwor ICAgICAgICB9CisgICAgfSBlbHNlIGlmIChndWlfZ3JhYikKKyAgICAgICAgc2RsX2hpZGVfY3Vy c29yKCk7Cit9CisKK3N0YXRpYyB2b2lkIHNkbF9tb3VzZV9kZWZpbmUoaW50IHdpZHRoLCBpbnQg aGVpZ2h0LCBpbnQgYnBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaG90X3gs IGludCBob3RfeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqaW1hZ2Us IHVpbnQ4X3QgKm1hc2spCit7CisgICAgdWludDhfdCBzcHJpdGVbMjU2XSwgKmxpbmU7CisgICAg aW50IHgsIHksIGRzdCwgYnlwbCwgc3JjID0gMDsKKyAgICBpZiAoZ3Vlc3Rfc3ByaXRlKQorICAg ICAgICBTRExfRnJlZUN1cnNvcihndWVzdF9zcHJpdGUpOworCisgICAgbWVtc2V0KHNwcml0ZSwg MCwgMjU2KTsKKyAgICBieXBsID0gKCh3aWR0aCAqIGJwcCArIDMxKSA+PiA1KSA8PCAyOworICAg IGZvciAoeSA9IDAsIGRzdCA9IDA7IHkgPCBoZWlnaHQ7IHkgKyssIGltYWdlICs9IGJ5cGwpIHsK KyAgICAgICAgbGluZSA9IGltYWdlOworICAgICAgICBmb3IgKHggPSAwOyB4IDwgd2lkdGg7IHgg KyssIGRzdCArKykgeworICAgICAgICAgICAgc3dpdGNoIChicHApIHsKKyAgICAgICAgICAgIGNh c2UgMjQ6CisgICAgICAgICAgICAgICAgc3JjID0gKihsaW5lICsrKTsgc3JjIHw9ICoobGluZSAr Kyk7IHNyYyB8PSAqKGxpbmUgKyspOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgY2FzZSAxNjoKKyAgICAgICAgICAgIGNhc2UgMTU6CisgICAgICAgICAgICAgICAgc3JjID0g KihsaW5lICsrKTsgc3JjIHw9ICoobGluZSArKyk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICAgICAgc3JjID0gKihsaW5lICsrKTsKKyAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAg ICBzcmMgPSAweGYgJiAobGluZVt4ID4+IDFdID4+ICgoeCAmIDEpKSA8PCAyKTsKKyAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBzcmMg PSAzICYgKGxpbmVbeCA+PiAyXSA+PiAoKHggJiAzKSkgPDwgMSk7CisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgc3JjID0gMSAmIChs aW5lW3ggPj4gM10gPj4gKHggJiA3KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICBpZiAoIXNyYykKKyAgICAgICAgICAgICAgICBzcHJpdGVbZHN0 ID4+IDNdIHw9ICgxIDw8ICh+ZHN0ICYgNykpICYgbWFza1tkc3QgPj4gM107CisgICAgICAgIH0K KyAgICB9CisgICAgZ3Vlc3Rfc3ByaXRlID0gU0RMX0NyZWF0ZUN1cnNvcihzcHJpdGUsIG1hc2ss IHdpZHRoLCBoZWlnaHQsIGhvdF94LCBob3RfeSk7CisKKyAgICBpZiAoZ3Vlc3RfY3Vyc29yICYm CisgICAgICAgICAgICAoZ3VpX2dyYWIgfHwga2JkX21vdXNlX2lzX2Fic29sdXRlKCkgfHwgYWJz b2x1dGVfZW5hYmxlZCkpCisgICAgICAgIFNETF9TZXRDdXJzb3IoZ3Vlc3Rfc3ByaXRlKTsKK30K Kwogc3RhdGljIHZvaWQgc2RsX2NsZWFudXAodm9pZCkgCiB7CisgICAga2JkX21vdXNlX3NldCA9 IDA7CisgICAga2JkX2N1cnNvcl9kZWZpbmUgPSAwOworCisgICAgaWYgKGd1ZXN0X3Nwcml0ZSkK KyAgICAgICAgU0RMX0ZyZWVDdXJzb3IoZ3Vlc3Rfc3ByaXRlKTsKICAgICBTRExfUXVpdCgpOwog fQogCkBAIC01MDUsNiArNTk5LDggQEAgdm9pZCBzZGxfZGlzcGxheV9pbml0KERpc3BsYXlTdGF0 ZSAqZHMsIGludCBmdWxsX3NjcmVlbiwgaW50IG5vX2ZyYW1lKQogICAgIGRzLT5kcHlfdXBkYXRl ID0gc2RsX3VwZGF0ZTsKICAgICBkcy0+ZHB5X3Jlc2l6ZSA9IHNkbF9yZXNpemU7CiAgICAgZHMt PmRweV9yZWZyZXNoID0gc2RsX3JlZnJlc2g7CisgICAgZHMtPmRweV9jb3B5ID0gc2RsX2NvcHk7 CisgICAgZHMtPmRweV9maWxsID0gc2RsX2ZpbGw7CiAKICAgICBzZGxfcmVzaXplKGRzLCA2NDAs IDQwMCk7CiAgICAgc2RsX3VwZGF0ZV9jYXB0aW9uKCk7CkBAIC01MTUsNiArNjExLDkgQEAgdm9p ZCBzZGxfZGlzcGxheV9pbml0KERpc3BsYXlTdGF0ZSAqZHMsIGludCBmdWxsX3NjcmVlbiwgaW50 IG5vX2ZyYW1lKQogICAgIHNkbF9jdXJzb3JfaGlkZGVuID0gU0RMX0NyZWF0ZUN1cnNvcigmZGF0 YSwgJmRhdGEsIDgsIDEsIDAsIDApOwogICAgIHNkbF9jdXJzb3Jfbm9ybWFsID0gU0RMX0dldEN1 cnNvcigpOwogCisgICAga2JkX21vdXNlX3NldCA9IHNkbF9tb3VzZV93YXJwOworICAgIGtiZF9j dXJzb3JfZGVmaW5lID0gc2RsX21vdXNlX2RlZmluZTsKKwogICAgIGF0ZXhpdChzZGxfY2xlYW51 cCk7CiAgICAgaWYgKGZ1bGxfc2NyZWVuKSB7CiAgICAgICAgIGd1aV9mdWxsc2NyZWVuID0gMTsK ZGlmZiAtLWdpdCBhL3ZsLmMgYi92bC5jCmluZGV4IGU4NzFjOGMuLjk4ZmVmOWQgMTAwNjQ0Ci0t LSBhL3ZsLmMKKysrIGIvdmwuYwpAQCAtNTQyLDYgKzU0MiwxMCBAQCBpbnQga2JkX21vdXNlX2lz X2Fic29sdXRlKHZvaWQpCiAgICAgcmV0dXJuIHFlbXVfcHV0X21vdXNlX2V2ZW50X2N1cnJlbnQt PnFlbXVfcHV0X21vdXNlX2V2ZW50X2Fic29sdXRlOwogfQogCit2b2lkICgqa2JkX21vdXNlX3Nl dCkoaW50IHgsIGludCB5LCBpbnQgb24pID0gTlVMTDsKK3ZvaWQgKCprYmRfY3Vyc29yX2RlZmlu ZSkoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwLCBpbnQgaG90X3gsIGludCBob3RfeSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqaW1hZ2UsIHVpbnQ4X3QgKm1hc2sp ID0gTlVMTDsKKwogdm9pZCBkb19pbmZvX21pY2Uodm9pZCkKIHsKICAgICBRRU1VUHV0TW91c2VF bnRyeSAqY3Vyc29yOwpkaWZmIC0tZ2l0IGEvdmwuaCBiL3ZsLmgKaW5kZXggYzdjN2Q3My4uMDRm ZTNjYyAxMDA2NDQKLS0tIGEvdmwuaAorKysgYi92bC5oCkBAIC0yMDEsNiArMjAxLDEwIEBAIHZv aWQgcWVtdV9yZW1vdmVfbW91c2VfZXZlbnRfaGFuZGxlcihRRU1VUHV0TW91c2VFbnRyeSAqZW50 cnkpOwogdm9pZCBrYmRfcHV0X2tleWNvZGUoaW50IGtleWNvZGUpOwogdm9pZCBrYmRfbW91c2Vf ZXZlbnQoaW50IGR4LCBpbnQgZHksIGludCBkeiwgaW50IGJ1dHRvbnNfc3RhdGUpOwogaW50IGti ZF9tb3VzZV9pc19hYnNvbHV0ZSh2b2lkKTsKK2V4dGVybiB2b2lkICgqa2JkX21vdXNlX3NldCko aW50IHgsIGludCB5LCBpbnQgb24pOworZXh0ZXJuIHZvaWQgKCprYmRfY3Vyc29yX2RlZmluZSko aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGhvdF94LCBpbnQgaG90X3ksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50OF90ICppbWFnZSwgdWludDhfdCAqbWFzayk7CiAKIHZvaWQgZG9faW5mb19t aWNlKHZvaWQpOwogdm9pZCBkb19tb3VzZV9zZXQoaW50IGluZGV4KTsKQEAgLTg5MCw3ICs4OTQs MTAgQEAgc3RydWN0IERpc3BsYXlTdGF0ZSB7CiAgICAgdm9pZCAoKmRweV91cGRhdGUpKHN0cnVj dCBEaXNwbGF5U3RhdGUgKnMsIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKTsKICAgICB2b2lk ICgqZHB5X3Jlc2l6ZSkoc3RydWN0IERpc3BsYXlTdGF0ZSAqcywgaW50IHcsIGludCBoKTsKICAg ICB2b2lkICgqZHB5X3JlZnJlc2gpKHN0cnVjdCBEaXNwbGF5U3RhdGUgKnMpOwotICAgIHZvaWQg KCpkcHlfY29weSkoc3RydWN0IERpc3BsYXlTdGF0ZSAqcywgaW50IHNyY194LCBpbnQgc3JjX3ks IGludCBkc3RfeCwgaW50IGRzdF95LCBpbnQgdywgaW50IGgpOworICAgIHZvaWQgKCpkcHlfY29w eSkoc3RydWN0IERpc3BsYXlTdGF0ZSAqcywgaW50IHNyY194LCBpbnQgc3JjX3ksCisgICAgICAg ICAgICAgICAgICAgICBpbnQgZHN0X3gsIGludCBkc3RfeSwgaW50IHcsIGludCBoKTsKKyAgICB2 b2lkICgqZHB5X2ZpbGwpKHN0cnVjdCBEaXNwbGF5U3RhdGUgKnMsIGludCB4LCBpbnQgeSwKKyAg ICAgICAgICAgICAgICAgICAgIGludCB3LCBpbnQgaCwgdWludDMyX3QgYyk7CiB9OwogCiBzdGF0 aWMgaW5saW5lIHZvaWQgZHB5X3VwZGF0ZShEaXNwbGF5U3RhdGUgKnMsIGludCB4LCBpbnQgeSwg aW50IHcsIGludCBoKQotLSAKMS40LjQuMwoK ------=_Part_22250_7685598.1173622768431--