dix: Add device info to DeviceChangedEvent, and fill in CCCE.
We need to fill the info here, as the device may change until we get a chance to process it. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
b2ba77bac4
commit
0befeb36c1
|
@ -158,6 +158,7 @@ CreateClassesChangedEvent(EventList* event,
|
||||||
DeviceIntPtr master,
|
DeviceIntPtr master,
|
||||||
DeviceIntPtr slave)
|
DeviceIntPtr slave)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
DeviceChangedEvent *dce;
|
DeviceChangedEvent *dce;
|
||||||
CARD32 ms = GetTimeInMillis();
|
CARD32 ms = GetTimeInMillis();
|
||||||
|
|
||||||
|
@ -175,11 +176,30 @@ CreateClassesChangedEvent(EventList* event,
|
||||||
dce->flags |= HAS_NEW_SLAVE;
|
dce->flags |= HAS_NEW_SLAVE;
|
||||||
dce->new_slaveid = slave->id;
|
dce->new_slaveid = slave->id;
|
||||||
|
|
||||||
/* FIXME: fill in new information about the device. We need to do this
|
if (slave->button)
|
||||||
* here to avoid race conditions if the device changes while the event
|
{
|
||||||
* slumbers in the EQ.
|
dce->buttons.num_buttons = slave->button->numButtons;
|
||||||
*/
|
for (i = 0; i < dce->buttons.num_buttons; i++)
|
||||||
|
dce->buttons.names[i] = 0; /* FIXME */
|
||||||
|
}
|
||||||
|
if (slave->valuator)
|
||||||
|
{
|
||||||
|
dce->num_valuators = slave->valuator->numAxes;
|
||||||
|
for (i = 0; i < dce->num_valuators; i++)
|
||||||
|
{
|
||||||
|
dce->valuators[i].min = slave->valuator->axes[i].min_value;
|
||||||
|
dce->valuators[i].max = slave->valuator->axes[i].max_value;
|
||||||
|
dce->valuators[i].resolution = slave->valuator->axes[i].resolution;
|
||||||
|
/* This should, eventually, be a per-axis mode */
|
||||||
|
dce->valuators[i].mode = slave->valuator->mode;
|
||||||
|
dce->valuators[i].name = 0; /* FIXME: */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (slave->key)
|
||||||
|
{
|
||||||
|
dce->keys.min_keycode = slave->key->xkbInfo->desc->min_key_code;
|
||||||
|
dce->keys.max_keycode = slave->key->xkbInfo->desc->max_key_code;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -128,7 +128,26 @@ typedef struct
|
||||||
/** If flags & HAS_OLD_SLAVE is set, old_slaveid specifies device now
|
/** If flags & HAS_OLD_SLAVE is set, old_slaveid specifies device now
|
||||||
* attached to this device. */
|
* attached to this device. */
|
||||||
int new_slaveid;
|
int new_slaveid;
|
||||||
/* FIXME: add the new capabilities here */
|
|
||||||
|
struct {
|
||||||
|
int num_buttons; /**< Number of buttons */
|
||||||
|
Atom names[MAX_BUTTONS];/**< Button names */
|
||||||
|
} buttons;
|
||||||
|
|
||||||
|
int num_valuators; /**< Number of axes */
|
||||||
|
struct {
|
||||||
|
uint32_t min; /**< Minimum value */
|
||||||
|
uint32_t max; /**< Maximum value */
|
||||||
|
/* FIXME: frac parts of min/max */
|
||||||
|
uint32_t resolution; /**< Resolution counts/m */
|
||||||
|
uint8_t mode; /**< Relative or Absolute */
|
||||||
|
Atom name; /**< Axis name */
|
||||||
|
} valuators[MAX_VALUATORS];
|
||||||
|
|
||||||
|
struct {
|
||||||
|
int min_keycode;
|
||||||
|
int max_keycode;
|
||||||
|
} keys;
|
||||||
} DeviceChangedEvent;
|
} DeviceChangedEvent;
|
||||||
|
|
||||||
#if XFreeXDGA
|
#if XFreeXDGA
|
||||||
|
|
Loading…
Reference in New Issue