I am trying to capture some mouse events using CGEventTapCreate and I found out that the following causes a bus error every time:

eventMask = (1<<kCGEventMouseMoved)
eventTap = CGEventTapCreate(kCGSessionEventTap, kCGHeadInsertEventTap, 0, eventMask, myCGEventCallback)


I've traced it down to two problems, both in Quartz framework in _callbacks.m in the function m_CGEventTapCreate:

(1) the function expects 5 inputs and yet it tries to assign 6, last one being "info"... which ends up being an uninitialized pointer. That seems to cause a bus error further down when it tries to create a tuple of "callback" and "info": 
                  PyObject* real_info = Py_BuildValue("OO", callback, info);  
For my purposes, I just changed CGEventTapCreate to accept 6th input when parsing arguments ("OOOOOO"), as it does in carbon. Not sure if that's the right approach...


(2) After fixing that, I encountered the next bus error with the line further down in the same function: 
                  CFRelease(retval);
I have no idea why this is crashing but I just commented it out for now. I am assuming the worst that can happen is a memory leak and considering that I call this only once, I didn't think it was a big problem.



Also, how does one compile svn trunk properly??? "easy_install pyobjc" downloads a new version when I want it to compile my modified version. Right now I have a serious hack... the whole 2.2b2 from easy_install + Quartz compiled separately from svn (2.2b3).


Some system info:
Mac OS X 10.5.7
Apple Python 2.5
built-in PyObjC (also tried PyObjC 2.2b2)


-Ratko