Each time I restart gnome-shell (and I have to restart it a lot), MC calls UpdateCapabilities() on Gabble with only the Shell as client. As a result, Gabble loses track of empathy-call and creates SM channel instead of Call ones.
My understanding of this method was that it's Update() not Set(), so MC is behaving correctly.
The spec isn't clear on this point <http://telepathy.freedesktop.org/spec/Connection_Interface_Contact_Capabilities.html#Method:UpdateCapabilities>: the argument's definition suggests my reading, and the body suggests your reading. Joy.
Humm UpdateCapabilities() is an *update* and not a *set*, so I think MC fine. But then why is Gabble reseting (gabble_caps_channel_manager_reset_capabilities()) all capabilities each time UpdateCapabilities() is called on it?
I intended it to behave as the argument's description says (Update, not Set, semantics), which would mean that this is a Gabble bug (it should assume that every client not mentioned by MC is still the same as it used to be). I'm reasonably sure that I implemented it that way in Gabble, too, but perhaps the Call support detection (which was added later) doesn't follow that?
This sentence in the spec is misleading:
> Alter the connection's advertised capabilities to include the intersection
> of the given clients' capabilities with what the connection manager is able
> to implement.
Perhaps a better wording would be:
Record that the given clients have the given capabilities, then
alter the connection's advertised capabilities to be the union
of the capabilities of all clients, including any clients mentioned
in previous calls to this method, but omitting any capabilities that
the connection manager is unable to implement.
(In reply to comment #2)
> But then why is Gabble reseting
> (gabble_caps_channel_manager_reset_capabilities()) all capabilities each time
> UpdateCapabilities() is called on it?
If it iterates through all clients after doing that, including clients from previous calls, then that'd be fine.
reset (remove all) caps
add the new caps for Shell
add the old caps for empathy-call
(In reply to comment #3)
> Perhaps a better wording would be:
> Record that the given clients have the given capabilities, then
> alter the connection's advertised capabilities to be the union
> of the capabilities of all clients, including any clients mentioned
> in previous calls to this method, but omitting any capabilities that
> the connection manager is unable to implement.
Sounds good to me.
Re-assigning to Gabble then.
-- GitLab Migration Automatic Message --
This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.
You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/telepathy/telepathy-gabble/issues/165.