Bug 32914 - Hiding the McpAccountStorageIface struct prevents subclasses chaining up.
Summary: Hiding the McpAccountStorageIface struct prevents subclasses chaining up.
Alias: None
Product: Telepathy
Classification: Unclassified
Component: mission-control (show other bugs)
Version: git master
Hardware: Other All
: medium normal
Assignee: Will Thompson
QA Contact: Telepathy bugs list
Whiteboard: review+
Keywords: patch
Depends on:
Blocks: 37106
  Show dependency treegraph
Reported: 2011-01-08 07:03 UTC by Will Thompson
Modified: 2011-05-11 08:07 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Description Will Thompson 2011-01-08 07:03:59 UTC

I am currently subclassing McdAccountManagerSso, and want to override the _get method; my new method wants to chain up to the original one, having stuffed in an extra entry into the keyfile.

But I can't chain up, because McpAccountStorageIface is hidden, and the vtable is filled in using _implement_foo functions. This seems completely pointless to me. The main rationale for this pattern in tp-glib's generated interfaces is to avoid reorderings in the spec affecting ABI; this does not apply to a hand-written interface in Mission Control.

This wouldn't take all that long, but I don't have time right now.
Comment 1 Simon McVittie 2011-01-10 04:41:10 UTC
I'm told adding pointers to the end of a GInterface (i.e. increasing the size) is considered to be a compatible change (unlike the corresponding change to a class!), so none of these GInterfaces really need to be hidden (or have ABI padding, for that matter).
Comment 2 Will Thompson 2011-01-10 11:38:32 UTC
I have started to make this change in this branch: http://git.collabora.co.uk/?p=user/wjt/telepathy-mission-control-wjt.git;a=shortlog;h=refs/heads/fd.o-32914-unhide-McpAccountStorageIface

It is on top of some other branches mainly because I am lazy.
Comment 3 Simon McVittie 2011-05-11 03:32:32 UTC
A belated r+ for your branch, except that commit 3/3 should be amended to say McpAccountStorageIface, not McpAccountManagerIface.

(For the record: it's correct that McpAccountManagerIface is in implementation.h, and likewise for DispatchOperation and Request, because they're meant to only ever be implemented by MC itself.)

I have a branch to do the same with the remaining interfaces, and also improve documentation; I'll clone a bug.
Comment 4 Vivek Dasmohapatra 2011-05-11 08:07:33 UTC
Released in 5.7.11

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.