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>
diff --git a/input.c b/input.c
index 5664d3a..f0a02e7 100644
--- a/input.c
+++ b/input.c
@@ -148,7 +148,7 @@
QEMUPutMouseEntry *entry;
QEMUPutMouseEvent *mouse_event;
void *mouse_event_opaque;
- int width;
+ int width, height;
if (QTAILQ_EMPTY(&mouse_handlers)) {
return;
@@ -160,15 +160,31 @@
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;
}
}
}