Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Mar 2008 14:05:32 -0400
From:      Joe Marcus Clarke <marcus@freebsd.org>
To:        Jung-uk Kim <jkim@freebsd.org>
Cc:        freebsd-x11@freebsd.org, cokane@freebsd.org
Subject:   Re: X pausing until mouse move (collecting commonalities)
Message-ID:  <47EBE1EC.90705@freebsd.org>
In-Reply-To: <200803271400.16172.jkim@FreeBSD.org>
References:  <47EA7ED2.8030406@freebsd.org> <47EBCED1.8060308@freebsd.org> <200803271315.16698.jkim@FreeBSD.org> <200803271400.16172.jkim@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Jung-uk Kim wrote:
> On Thursday 27 March 2008 01:15 pm, Jung-uk Kim wrote:
>> On Thursday 27 March 2008 12:44 pm, Joe Marcus Clarke wrote:
>>> Coleman Kane wrote:
>>>> Coleman Kane wrote:
>>>>> Joe Marcus Clarke wrote:
>>>>>> On Wed, 2008-03-26 at 16:54 -0400, Jung-uk Kim wrote:
>>>>>>> On Wednesday 26 March 2008 12:50 pm, Joe Marcus Clarke wrote:
>>>>>>>> I'm trying to get a list of commonalities to better focus
>>>>>>>> my troubleshooting.  So far, my two machines that are
>>>>>>>> affected have the following in common:
>>>>>>>>
>>>>>>>> GNOME 2.22 (with hald)
>>>>>>>> nVidia graphics card (though different drivers)
>>>>>>>> PS/2 mouse
>>>>>>>> dual core
>>>>>>>> ULE scheduler
>>>>>>>>
>>>>>>>> My one machine that is not affected differs from this in
>>>>>>>> that it has an Intel graphics card, USB mouse, and is not
>>>>>>>> dual core (but HTT).
>>>>>>>>
>>>>>>>> It looks like Coleman has a PS/2 mouse as well.  It's
>>>>>>>> starting to look like the mouse technology might have
>>>>>>>> something to do with this.  Anyone seeing this problem with
>>>>>>>> a USB mouse?
>>>>>>> I think I know why.  Build xorg-server without HAL support
>>>>>>> option and the attached patch.  With HAL support (default)
>>>>>>> and hald running, xorg-server auto-detects individual ports
>>>>>>> with input.mouse capability even without configuration lines
>>>>>>> in xorg.conf.  If moused is enabled and USB mouse is used,
>>>>>>> /dev/ums0 is directly used because there is a problem in MD
>>>>>>> code (see attached patch).  If moused is enabled and PS/2
>>>>>>> mouse is used, you end up with two input devices via
>>>>>>> /dev/sysmouse and /dev/psm0.  I couldn't find a cleaner way
>>>>>>> to fix this problem, though. :-(
>>>>>> Thanks for finding this.  Here is a patch for hal which adds
>>>>>> a mouse addon.  The mouse addon polls to find whether or not
>>>>>> moused has a given mouse device open.  If it does, it sets
>>>>>> the input device to be /dev/sysmouse instead of the actual
>>>>>> device. Hopefully it will fix the problem without needing to
>>>>>> disable hal support in X.  I have also merged your
>>>>>> gettimeofday patches, jkim.
>>>>>>
>>>>>> http://www.marcuscom.com/downloads/hal.diff
>>>>>>
>>>>>> Joe
>>>>> I had to apply the attached change to your patch in order to
>>>>> get it to work (addon/ should be addons/). Attached is the
>>>>> diff to your diff that worked for me.
>>>>>
>>>>> --
>>>>> Coleman Kane
>>>> Unfortunately, I still experience the same mouse-blocked
>>>> behavior after applying this patch, reinstalling the port, and
>>>> then restarting my machine (and setting the mouse device back
>>>> to SysMouse and /dev/sysmouse in xorg.conf, and re-enabling
>>>> moused).
>>> Yeah.  While the addon is doing its job, X now opens two
>>> instances of /dev/sysmouse :-(.  I still don't know why it does
>>> this when it doesn't open two instances of /dev/psm0.
>> /dev/sysmouse is a special case and it is done in OS-dependent
>> code. HAL support code in xorg-server is OS-independent naturally. 
>> Thus it does not care if it is pointing to the same /dev/sysmouse. 
>> Is there any way to set it disabled when moused is running instead
>> of replacing the device node with /dev/sysmouse?
> 
> I guess you can set "info.ignore"?  Or maybe you can save list of 
> devices controlled by moused, e.g., something like this in shell:
> 
> pgrep moused | xargs -L 1 ps -p | grep /dev/ | \
> sed -e 's/.*moused.*-p.*\/dev\///g' | awk '{ print $1 }'

I thought about using info.ignore, but in looking at the X code and the 
hal code, I do not think this will work.

> 
> I guess you can do better with glib's string manipulation functions.  
> Then toggle "info.ignore" depending on the owner of /dev/sysmouse.  
> Oh, the owner is Xorg, not moused, BTW. ;-)

If I check to see if the mouse is owned by Xorg, then hal will start, 
and the addon will run and see that the mouse is unowned.  Then, X will 
start, and it will grab the mouse twice still.  At least that's what 
I've gleaned from the code.  I'll have more time to test things later 
tonight.

Joe

-- 
Joe Marcus Clarke
FreeBSD GNOME Team	::	gnome@FreeBSD.org
FreeNode / #freebsd-gnome
http://www.FreeBSD.org/gnome



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47EBE1EC.90705>