An update on this for the mailing list, because it's quite interesting.<div>There's a "new" pitfall in TpQt programming to watch out for.</div><div><div><br></div><div>Everyone was sort-of right.<br><div>
<br></div><div>My original comment "if you have a contact, and the connection goes down, the data stays the same and never changes" is true. You can access id(), avatar(), presence() etc.</div><div><br></div><div>
Even the targetHandle() remains the same... and this is the cause of the problem.</div><div><br></div><div>The targetHandle is an integer ID used to keep track of a contact, this is NOT persistent between connections. TargetHandle is normally completely internal to TpQt and we never use it so it's normally not a problem. account->startChat() however does use this handle. This handle now refers to a different contact, and we have the problem Aleix described.</div>
<div><br></div><div>If this code read account->ensureTextChat(contact->id()); this would actually work - and we can ship that if I don't get my new patch done in time.</div><div>This is why we don't have the same problem in the text-ui when we do a reconnection, as we happen to use the the channel->targetID(); </div>
<div><br></div><div>We still want to fix the model so that it gets the latest contact, </div><div><br></div><div>Summary: </div><div> - Sorry to Aleix and George K for not believing you :)</div><div> - Everyone should be very careful when using contacts for which the connection has dropped, especially if a new connection comes back.</div>
<div> - KTp::ContactPtr has a nice invalidated() signal which is useful.</div><div> - Using KTp::GlobalContactManager implicitly guards against this as the accountForContact() will fail if the contact's connection is gone.</div>
<div> - I'd like to change TpQt to set the handle to -1 when the connectionManager gets outdated. We already have an open bug to set the clientTypes() to empty when this happens. So this should be a trivial addition.</div>
<div><br></div><div><div class="gmail_quote">On Tue, Feb 19, 2013 at 11:31 PM, Aleix Pol <span dir="ltr"><<a href="mailto:aleixpol@kde.org" target="_blank">aleixpol@kde.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
no, I'll report it later, I'll try not to forget :)<br><br><div class="gmail_quote"><div><div class="h5">On Tue, Feb 19, 2013 at 2:40 PM, David Edmundson <span dir="ltr"><<a href="mailto:david@davidedmundson.co.uk" target="_blank">david@davidedmundson.co.uk</a>></span> wrote:<br>


</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">BTW, is there a bug report on this?<div><div><br><br><div class="gmail_quote">On Tue, Feb 19, 2013 at 1:21 PM, David Edmundson <span dir="ltr"><<a href="mailto:david@davidedmundson.co.uk" target="_blank">david@davidedmundson.co.uk</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br><br><div class="gmail_quote"><div>On Tue, Feb 19, 2013 at 12:31 PM, George Kiagiadakis <span dir="ltr"><<a href="mailto:kiagiadakis.george@gmail.com" target="_blank">kiagiadakis.george@gmail.com</a>></span> wrote:<br>




<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On Tue, Feb 19, 2013 at 2:24 PM, Aleix Pol <<a href="mailto:aleixpol@kde.org" target="_blank">aleixpol@kde.org</a>> wrote:<br>





> Hi,<br>
> I'm having a bit of a weird problem, since it's a bit long to explain, I<br>
> figured it would be better to explain it over the mailing list.<br>
><br>
> As you'll know, we have this pinned contacts in the chat plasmoid. It stores<br>
> a KTP::ContactPtr and when I click the button I start a chat with this<br>
> contact.<br>
> Now the problem that I'm having is that when using it in my system I found<br>
> out that, after putting my laptop on suspend mode, when I click the pinned<br>
> contact a chat gets started with someone else.<br>
><br>
> Do you think it could be that there's no identity integrity after an<br>
> offline/online cycle?<br>
> How do you think this should be fixed?<br>
><br>
<br>
</div></div>I think you shouldn't be storing ContactPtr. Contact objects are part<br>
of a certain Connection, so when the connection changes, weird things<br>
are likely to happen. You should store the contact id instead.<br></blockquote><div><br></div></div><div>A contact object should not be changing what it represents when a connection resets.</div><div>I don't think that is the case, otherwise we'd be getting a lot more errors elsewhere. Text-ui retains a ContactPtr after going offline. It remains valid. </div>




<div><br></div><div>Generally after a reset the original Tp::ContactPtr becomes useless; any calls to manager() return 0 and it stops getting updated but it doesn't turn into a different contact.</div><div><br></div>



<div>
I would suspect the problem is in the pinned-contacts-model/conversations-model before investigating elsewhere. That entire area has been under a lot of development on top of experimental code and needs a really good tidy up.</div>



<span><font color="#888888">
<div><br></div><div>David</div><div><br></div><div><br></div></font></span></div>
</blockquote></div><br>
</div></div><br></div></div><div class="im">_______________________________________________<br>
KDE-Telepathy mailing list<br>
<a href="mailto:KDE-Telepathy@kde.org" target="_blank">KDE-Telepathy@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/kde-telepathy" target="_blank">https://mail.kde.org/mailman/listinfo/kde-telepathy</a><br>
<br></div></blockquote></div><br>
<br>_______________________________________________<br>
KDE-Telepathy mailing list<br>
<a href="mailto:KDE-Telepathy@kde.org">KDE-Telepathy@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/kde-telepathy" target="_blank">https://mail.kde.org/mailman/listinfo/kde-telepathy</a><br>
<br></blockquote></div><br></div></div></div>