diff options
author | Jamey Sharp <jamey@minilop.net> | 2019-11-13 23:05:54 +0300 |
---|---|---|
committer | Jamey Sharp <jamey@minilop.net> | 2019-11-13 23:05:54 +0300 |
commit | 4b386a010465ad6f3c43bd03dedc83846c5b2429 (patch) | |
tree | d519ac6f23e368baa1c754d71050d26af8403a50 | |
parent | da6f6d3a74081891288af69ab0701cde0735c9a3 (diff) |
Don't add feeds on the UI thread
On at least the DecSync backend, `addFeed` involves downloading the
specified feed, and that's slow. Doing it synchronously means that the
UI hangs for a while. I've never written any Vala before but this patch
still lets me add feeds without stopping the UI, so hopefully it's good?
-rw-r--r-- | src/Backend/Backend.vala | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/Backend/Backend.vala b/src/Backend/Backend.vala index 578aae0c..c452b1cd 100644 --- a/src/Backend/Backend.vala +++ b/src/Backend/Backend.vala @@ -865,14 +865,20 @@ namespace FeedReader { } } - string errmsg; - bool success = FeedServer.get_default().addFeed(feedURL, catID, newCatName, out feedID, out errmsg); - errmsg = success ? "" : errmsg; - feedAdded(!success, errmsg); - if(success) - { - startSync(); - } + asyncPayload pl = () => { + string errmsg; + bool success = FeedServer.get_default().addFeed(feedURL, catID, newCatName, out feedID, out errmsg); + errmsg = success ? "" : errmsg; + feedAdded(!success, errmsg); + if(success) + { + m_cancellable.reset(); + sync(false, m_cancellable); + } + }; + callAsync.begin((owned)pl, (obj, res) => { + callAsync.end(res); + }); } public void removeFeed(string feedID) |