From 5da15e274b35656568f59602f2e3fd00d5718879 Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 7 Jul 2010 06:21:38 +0000 Subject: git update 7/7/2010 --- xorg-server/dix/getevents.c | 49 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) (limited to 'xorg-server/dix/getevents.c') diff --git a/xorg-server/dix/getevents.c b/xorg-server/dix/getevents.c index ea19e0cac..3885cd771 100644 --- a/xorg-server/dix/getevents.c +++ b/xorg-server/dix/getevents.c @@ -90,22 +90,53 @@ GetMotionHistorySize(void) return MOTION_HISTORY_SIZE; } +void +set_button_down(DeviceIntPtr pDev, int button, int type) +{ + if (type == BUTTON_PROCESSED) + SetBit(pDev->button->down, button); + else + SetBit(pDev->button->postdown, button); +} + +void +set_button_up(DeviceIntPtr pDev, int button, int type) +{ + if (type == BUTTON_PROCESSED) + ClearBit(pDev->button->down, button); + else + ClearBit(pDev->button->postdown, button); +} + +Bool +button_is_down(DeviceIntPtr pDev, int button, int type) +{ + int ret = 0; + + if (type & BUTTON_PROCESSED) + ret |= !!BitIsOn(pDev->button->down, button); + if (type & BUTTON_POSTED) + ret |= !!BitIsOn(pDev->button->postdown, button); + + return ret; +} + void set_key_down(DeviceIntPtr pDev, int key_code, int type) { if (type == KEY_PROCESSED) - pDev->key->down[key_code >> 3] |= (1 << (key_code & 7)); + SetBit(pDev->key->down, key_code); else - pDev->key->postdown[key_code >> 3] |= (1 << (key_code & 7)); + SetBit(pDev->key->postdown, key_code); } void set_key_up(DeviceIntPtr pDev, int key_code, int type) { if (type == KEY_PROCESSED) - pDev->key->down[key_code >> 3] &= ~(1 << (key_code & 7)); + ClearBit(pDev->key->down, key_code); else - pDev->key->postdown[key_code >> 3] &= ~(1 << (key_code & 7)); + ClearBit(pDev->key->postdown, key_code); } Bool @@ -114,9 +145,9 @@ key_is_down(DeviceIntPtr pDev, int key_code, int type) int ret = 0; if (type & KEY_PROCESSED) - ret |= !!(pDev->key->down[key_code >> 3] & (1 << (key_code & 7))); - else if (type & KEY_POSTED) - ret |= !!(pDev->key->postdown[key_code >> 3] & (1 << (key_code & 7))); + ret |= !!BitIsOn(pDev->key->down, key_code); + if (type & KEY_POSTED) + ret |= !!BitIsOn(pDev->key->postdown, key_code); return ret; } @@ -1123,11 +1154,11 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons, else { if (type == ButtonPress) { event->type = ET_ButtonPress; - pDev->button->postdown[buttons >> 3] |= (1 << (buttons & 7)); + set_button_down(pDev, buttons, BUTTON_POSTED); } else if (type == ButtonRelease) { event->type = ET_ButtonRelease; - pDev->button->postdown[buttons >> 3] &= ~(1 << (buttons & 7)); + set_button_up(pDev, buttons, BUTTON_POSTED); } event->detail.button = buttons; } -- cgit v1.2.3