On 04/12/2012 10:38 PM, Peter Hutterer wrote:
> On Wed, Apr 04, 2012 at 01:48:09PM -0700, Chase Douglas wrote:
>> Core events aren't generated for slave devices, so this is just wrong.
>> On top of that, the mask being checked in the removed hunk is wrong as
>> well. It is dereferencing a pointer of type OtherClients as though it
>> were a pointer to type InputClients.
>>
>> Signed-off-by: Chase Douglas <[email protected]>
>> ---
>> dix/touch.c | 12 ------------
>> 1 files changed, 0 insertions(+), 12 deletions(-)
>>
>> diff --git a/dix/touch.c b/dix/touch.c
>> index 0829b65..fcec916 100644
>> --- a/dix/touch.c
>> +++ b/dix/touch.c
>> @@ -830,18 +830,6 @@ TouchAddRegularListener(DeviceIntPtr dev,
>> TouchPointInfoPtr ti,
>> win);
>> return TRUE;
>> }
>> -
>> - /* all others */
>> - nt_list_for_each_entry(iclients, (InputClients *)
>> wOtherClients(win),
>> - next) {
>> - if (!(iclients->mask[XIAllDevices] & core_filter))
>> - continue;
>> -
>> - TouchEventHistoryAllocate(ti);
>> - TouchAddListener(ti, iclients->resource, CORE,
>> - type, LISTENER_AWAITING_BEGIN, win);
>> - return TRUE;
>> - }
>> }
>>
>> return FALSE;
>> --
>> 1.7.9.1
>
> wouldn't you have to check for IsMaster() somewhere?
> iirc, this code is called for slave and master devices, but then again my
> brain is a bit mushy by now.
See the block right above the one being removed here:
if (mask & EVENT_CORE_MASK) {
int coretype = GetCoreType(TouchGetPointerEventType(ev));
Mask core_filter = event_get_filter_from_type(dev, coretype);
/* window owner */
if (IsMaster(dev) && (win->eventMask & core_filter)) {
TouchEventHistoryAllocate(ti);
TouchAddListener(ti, win->drawable.id, CORE,
LISTENER_POINTER_REGULAR, LISTENER_AWAITING_BEGIN,
win);
return TRUE;
}
It does check IsMaster(dev).
-- Chase
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel