Bug 32914

Summary: Hiding the McpAccountStorageIface struct prevents subclasses chaining up.
Product: Telepathy Reporter: Will Thompson <will>
Component: mission-controlAssignee: Will Thompson <will>
Status: RESOLVED FIXED QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: normal    
Priority: medium Keywords: patch
Version: git master   
Hardware: Other   
OS: All   
Whiteboard: review+
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 37106    

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

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.