I know, I know - Clutter is dead and deprecated. I’m trying to get rid of it in my app, but until that can get done I’m trying to stabilize it.
I am seeing a strange behavior where sometimes the event.source of a ClutterEvent is completely wrong when I get it in a callback. Sometimes the event is sourced from a nearby object or a related subobject of the one that it should be coming from, sometimes it’s a completely random object from somewhere on the other side of the app. Like for example I listen for Enter events, I move the pointer over an object that should get me a callback for an Enter event, I get the callback, and the event.source is a completely different object.
This only happens when there are a decent amount of Clutter objects in the app (exactly how many I can’t tell, but let’s say a few hundred), and it’s often connected with a stream of warning messages like this:
[ 125.793 main] gui (mfpgui:139154): Clutter-WARNING **: 10:27:04.713: The required ID of 3 does not refer to an existing actor; this usually implies that the pick() of an actor is not correctly implemented or that there is an error in the glReadPixels() implementation of the GL driver.
From searching about that warning, it appears to be a problem in the GL implementation, so beyond my control. My development machine is a vanilla Intel graphics laptop from 3-4 years ago so it’s about as common as hardware can be.
I’m wondering if anyone sees this event-source error, and even better maybe has a workaround.