<div dir="ltr"><div><div><div><div><div>Hi,<br></div>I have construct this patch, but this seems not enough to fix all problem<br><a href="https://git.reviewboard.kde.org/r/112442/">https://git.reviewboard.kde.org/r/112442/</a><br>
<br></div><div>Now let me explain case that could reproduce this problem:<br></div><div>Close laptop lid -> launch screen locker -> set to away by kded -> suspend and network down.<br></div><div>Open laptop lid -> type password and unlock -> network is still down and no account is online -> setPresence doesn't work -> connected to network connectionStatus() == Tp::ConnectionStatusConnected , but isOnline is false, so setPresence still doesn't work.<br>
</div><div><br></div>later I found there is a problem that<br></div>connectionStatus() == Tp::ConnectionStatusConnected doesn't mean account is online, which makes sense but here comes the problem, kded want to set the presence to account regardless it is online or not, otherwise we might miss to set a presence to the account.<br>
<br></div><div>So I make a new patch: <br><a href="http://paste.kde.org/p15ed68b8">http://paste.kde.org/p15ed68b8</a><br>don't check isOnline property of account and just setRequestedPresence right away.<br></div><div>
<br>But actually I don't really want to make account online because of presence change, since an account might be offline because to network, wrong password, or whatever reason and set it online will cause a duplicate authentication and might generate yet another same error which can be annoying.<br>
<br></div>Later I found there's a property called automaticPresence which looks perfectly suitable for this requirement.<br><br><a href="http://telepathy.freedesktop.org/spec/Account.html#Property:AutomaticPresence">http://telepathy.freedesktop.org/spec/Account.html#Property:AutomaticPresence</a><br>




     
     
     



     
        <p>AutomaticPresence : The presence status that this account should have if it is brought
          online.</p><p>First I found that AutomaticPresence doesn't work if account is already online, so I change the setPresence function to use AutomaticPresence only when it's offline, so the patch looks like this:<br>
</p><a href="http://paste.kde.org/p6f4f3770/">http://paste.kde.org/p6f4f3770/</a><br><br></div><div>But as far as I test, this doesn't always work, my test case (close lid to suspend, and reopen lid) will still leave an "away" state sometime.<br>
<br></div><div>I wonder did I miss use AutomaticPresence or there is a race condition make it doesn't work?.. or we can just stick to my first patch since it doesn't really cause too much problem, or I can use connectionStatusReason to avoid make an account online if it's caused by non-user reason?<br>
<br></div><div>Regards,<br>Xuetian<br></div></div>