Actually ... while this does address the crash, it now just causes a bunch of 
our events to be ignored instead of processed.

So should that instead be a 'dev && !dev->enabled' or do we need to instead 
make a fake device for our generic darwin events like you did in test/input.c?

If the latter, ProcessInputEvents gives the implication that dev can be NULL 
whereas mieqProcessInputEvents does not handle that, so we should possibly 
assert that dev is non-null earlier and remove dead code for the NULL case.

--Jeremy

On Jul 19, 2014, at 17:12, Jeremy Huddleston Sequoia <[email protected]> wrote:

> (lldb) bt
> * thread #6: tid = 0x92d4eb, 0x00000001001dee94 
> X11.bin`mieqProcessDeviceEvent(dev=0x0000000000000000, 
> event=0x0000000100298bb0,
> screen=0x0000000000000000) + 36 at mieq.c:519, stop reason = EXC_BAD_ACCESS 
> (code=1, address=0x44)
>  * frame #0: 0x00000001001dee94 
> X11.bin`mieqProcessDeviceEvent(dev=0x0000000000000000, 
> event=0x0000000100298bb0, screen=0x0000000000000000) + 36 at
> mieq.c:519
>    frame #1: 0x00000001001df3eb X11.bin`mieqProcessInputEvents + 555 at 
> mieq.c:631
>    frame #2: 0x0000000100017674 X11.bin`ProcessInputEvents + 20 at 
> darwinEvents.c:422
>    frame #3: 0x0000000100175eaa X11.bin`Dispatch + 154 at dispatch.c:357
>    frame #4: 0x0000000100181b4a X11.bin`dix_main(argc=4, 
> argv=0x00007fff5fbff750, envp=0x00007fff5fbff650) + 1594 at main.c:296
>    frame #5: 0x000000010001ba80 X11.bin`server_thread(arg=0x0000000101208220) 
> + 64 at quartzStartup.c:66
>    frame #6: 0x00007fff89bb9899 libsystem_pthread.dylib`_pthread_body + 138
>    frame #7: 0x00007fff89bb972a libsystem_pthread.dylib`_pthread_start + 137
>    frame #8: 0x00007fff89bbdfc9 libsystem_pthread.dylib`thread_start + 13
> 
> Regression from: 9fb08310b51b46736f3ca8dbc04efdf502420403
> 
> Signed-off-by: Jeremy Huddleston Sequoia <[email protected]>
> CC: Peter Hutterer <[email protected]>
> ---
> mi/mieq.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mi/mieq.c b/mi/mieq.c
> index 872ff93..aced60d 100644
> --- a/mi/mieq.c
> +++ b/mi/mieq.c
> @@ -516,7 +516,7 @@ mieqProcessDeviceEvent(DeviceIntPtr dev, InternalEvent 
> *event, ScreenPtr screen)
>     verify_internal_event(event);
> 
>     /* refuse events from disabled devices */
> -    if (!dev->enabled)
> +    if (!dev || !dev->enabled)
>         return;
> 
>     /* Custom event handler */
> -- 
> 2.0.1
> 

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to