Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jangernert/FeedReader.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamey Sharp <jamey@minilop.net>2019-11-13 23:05:54 +0300
committerJamey Sharp <jamey@minilop.net>2019-11-13 23:05:54 +0300
commit4b386a010465ad6f3c43bd03dedc83846c5b2429 (patch)
treed519ac6f23e368baa1c754d71050d26af8403a50
parentda6f6d3a74081891288af69ab0701cde0735c9a3 (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.vala22
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)