diff options
author | Vasily Khoruzhick <anarsoul@gmail.com> | 2011-06-17 13:04:36 +0300 |
---|---|---|
committer | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2011-07-04 22:12:21 +0200 |
commit | d25e968eb4d32c95b65ae0f066a623d3c7eb4b7e (patch) | |
tree | 557cb02fdb8e8ff07c75e3b4d5a91f07cd6e5598 /input.c | |
parent | e2da565dc545197e2a525d3a822fb3499bb99a6e (diff) | |
download | qemu-d25e968eb4d32c95b65ae0f066a623d3c7eb4b7e.tar.gz qemu-d25e968eb4d32c95b65ae0f066a623d3c7eb4b7e.tar.bz2 qemu-d25e968eb4d32c95b65ae0f066a623d3c7eb4b7e.zip |
pxa2xx_lcd: add proper rotation support
Until now, pxa2xx_lcd only supported 90deg rotation, but
some machines (for example Zipit Z2) needs 270deg rotation.
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
Diffstat (limited to 'input.c')
-rw-r--r-- | input.c | 34 |
1 files changed, 25 insertions, 9 deletions
@@ -148,7 +148,7 @@ void kbd_mouse_event(int dx, int dy, int dz, int buttons_state) QEMUPutMouseEntry *entry; QEMUPutMouseEvent *mouse_event; void *mouse_event_opaque; - int width; + int width, height; if (QTAILQ_EMPTY(&mouse_handlers)) { return; @@ -160,15 +160,31 @@ void kbd_mouse_event(int dx, int dy, int dz, int buttons_state) mouse_event_opaque = entry->qemu_put_mouse_event_opaque; if (mouse_event) { - if (graphic_rotate) { - if (entry->qemu_put_mouse_event_absolute) { - width = 0x7fff; - } else { - width = graphic_width - 1; - } - mouse_event(mouse_event_opaque, width - dy, dx, dz, buttons_state); + if (entry->qemu_put_mouse_event_absolute) { + width = 0x7fff; + height = 0x7fff; } else { - mouse_event(mouse_event_opaque, dx, dy, dz, buttons_state); + width = graphic_width - 1; + height = graphic_height - 1; + } + + switch (graphic_rotate) { + case 0: + mouse_event(mouse_event_opaque, + dx, dy, dz, buttons_state); + break; + case 90: + mouse_event(mouse_event_opaque, + width - dy, dx, dz, buttons_state); + break; + case 180: + mouse_event(mouse_event_opaque, + width - dx, height - dy, dz, buttons_state); + break; + case 270: + mouse_event(mouse_event_opaque, + dy, height - dx, dz, buttons_state); + break; } } } |