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 | 9312805d33e8b106bae356d13a8071fb37d75554 (patch) | |
| tree | 557cb02fdb8e8ff07c75e3b4d5a91f07cd6e5598 /input.c | |
| parent | 462a8bc6468912b79629f20f18798558342ce315 (diff) | |
| download | focaccia-qemu-9312805d33e8b106bae356d13a8071fb37d75554.tar.gz focaccia-qemu-9312805d33e8b106bae356d13a8071fb37d75554.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
diff --git a/input.c b/input.c index 5664d3a1e3..f0a02e783d 100644 --- a/input.c +++ b/input.c @@ -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; } } } |