I've decided that I'll start coding and "learn things on demand".
This week I've looking at metacity's code and tried to add the necessary infrastructure for the MPX support. Metacity now knows about our input devices, so we can start implementing the MPX calls.
The first feature that I added was the XSetClientPointer(). which allows an application to change its current "core pointer". Let me explain: when an application calls, for example, XGrabPointer(), it tells X to "grab the pointer", but it doesn't tell which pointer is going to be grabbed (because when XGrabPointer() was created, they assumed that there was going to be just one pointer). So now we can tell which pointer is going to be the client's pointer.
To implement this I had to understand metacity better, and also learn a little more about GTK. Thanks to my mentor, who answered a lot of questions!
One problem is that I couldn't test the feature because of a bug in MPX (which was already fixed but not committed), so I'm going to wait a little bit more.
There is also another problem: who is going to be metacity's pointer? When we pop a menu, the pointer that is not the client pointer has some difficulty in using the menu because the application grab "its" pointer and not the others. I'll have to study this a little bit more... We can use the Xi protocol calls here, so we won't need to set a ClientPointer for metacity, but I think I'll have to talk to someone who understands gtk implementation before... This is not a big problem, I'll probably think about this after everything else is done.
This week, I'll study the problems I reported and I'll also start studying how multiple foci works in MPX.
See you next week!
Paulo.
Monday, May 14, 2007
SoC progress report: May 14, 2007
Posted by Paulo R. Zanoni at 8:20 PM
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment