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>
This commit is contained in:
Vasily Khoruzhick 2011-06-17 13:04:36 +03:00 committed by Andrzej Zaborowski
parent 462a8bc646
commit 9312805d33
5 changed files with 144 additions and 22 deletions

34
input.c
View file

@ -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;
}
}
}