Comment 3 for bug 936976

Revision history for this message
Mikkel Kamstrup Erlandsen (kamstrup) wrote :

Oh, now I get it. I was expecting InfoRequest() to return the same values as passed in the Changed() signal.

But basically InfoRequest() is just a dummy to DBus activate the lens I guess. We could probably just have used a standard DBus Peer.Ping() message for that in stead.

IIRC the reason we have it like this is because we didn't want to force the lenses to populate all properties right on the spot when they were activated. Unity can pre-render a dummy with the info from the .lens file. This is to relieve some IO stress on startup. By having a signal as the only mechanism for this the lenses have some wiggle room in how they start up.

AND! If we're really keen on shaving off context switches I'd rather drop the idea of subscribing to Changed() on each lens proxy, but simply have one single DBus match rule to catch them all (just like pokemon - you gotta catch them all!). Ie. AddMatch("type='signal',interface='com.canonical.Unity.Lens',member='Changed'")