aboutsummaryrefslogtreecommitdiff
path: root/input.c
diff options
context:
space:
mode:
authorVasily Khoruzhick <anarsoul@gmail.com>2011-06-17 13:04:36 +0300
committerAndrzej Zaborowski <andrew.zaborowski@intel.com>2011-07-04 22:12:21 +0200
commit9312805d33e8b106bae356d13a8071fb37d75554 (patch)
tree557cb02fdb8e8ff07c75e3b4d5a91f07cd6e5598 /input.c
parent462a8bc6468912b79629f20f18798558342ce315 (diff)
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.c34
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;
}
}
}