[geary] Remove redundant and unimplemented Folder.OpenFlags.FAST_OPEN option.
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary] Remove redundant and unimplemented Folder.OpenFlags.FAST_OPEN option.
- Date: Fri, 26 Jan 2018 06:42:45 +0000 (UTC)
commit 0c837d31014750aee14db4c35cf37042d4f3e141
Author: Michael James Gratton <mike vee net>
Date: Fri Jan 26 17:12:28 2018 +1030
Remove redundant and unimplemented Folder.OpenFlags.FAST_OPEN option.
* src/engine/api/geary-folder.vala (OpenFlags): Remove FAST_OPEN, since
it is unimplemented and redundant with NO_DELAY. Update uses to simply
use its equivalent, NONE.
* src/client/application/geary-controller.vala (do_empty_folder_async),
src/engine/imap-db/outbox/smtp-outbox-folder.vala (save_sent_mail_async),
src/engine/imap-db/search/imap-db-search-folder.vala
(remove_email_async): Ensure folders opened are always correctly closed
after being opened.
src/client/application/geary-controller.vala | 38 +++++++++++--------
src/engine/api/geary-folder.vala | 25 +++++++------
src/engine/app/app-draft-manager.vala | 6 ++--
src/engine/app/app-email-store.vala | 4 +-
src/engine/imap-db/outbox/smtp-outbox-folder.vala | 14 ++-----
.../imap-db/search/imap-db-search-folder.vala | 21 ++++-------
.../imap-engine-account-synchronizer.vala | 2 +-
7 files changed, 53 insertions(+), 57 deletions(-)
---
diff --git a/src/client/application/geary-controller.vala b/src/client/application/geary-controller.vala
index 6cd04ef..1ba87c1 100644
--- a/src/client/application/geary-controller.vala
+++ b/src/client/application/geary-controller.vala
@@ -1344,10 +1344,13 @@ public class GearyController : Geary.BaseObject {
}
update_ui();
-
- current_conversations = new Geary.App.ConversationMonitor(current_folder,
Geary.Folder.OpenFlags.NO_DELAY,
- ConversationListStore.REQUIRED_FIELDS, MIN_CONVERSATION_COUNT);
-
+
+ current_conversations = new Geary.App.ConversationMonitor(
+ current_folder,
+ Geary.Folder.OpenFlags.NO_DELAY,
+ ConversationListStore.REQUIRED_FIELDS,
+ MIN_CONVERSATION_COUNT);
+
if (inboxes.values.contains(current_folder)) {
// Inbox selected, clear new messages if visible
clear_new_messages("do_select_folder (inbox)", null);
@@ -1565,10 +1568,10 @@ public class GearyController : Geary.BaseObject {
if (!main_window.folder_list.select_inbox(select_folder.account))
main_window.folder_list.select_folder(select_folder);
}
-
+
GLib.Cancellable cancellable = inbox_cancellables.get(folder.account);
- folder.open_async.begin(Geary.Folder.OpenFlags.NONE, cancellable);
-
+ folder.open_async.begin(Geary.Folder.OpenFlags.NO_DELAY, cancellable);
+
new_messages_monitor.add_folder(folder, cancellable);
// also monitor Inbox's children for notifications
@@ -2415,23 +2418,26 @@ public class GearyController : Geary.BaseObject {
dialog.run();
}
}
-
+
private async void do_empty_folder_async(Geary.FolderSupport.Empty emptyable, Cancellable? cancellable)
throws Error {
- yield emptyable.open_async(Geary.Folder.OpenFlags.NONE, cancellable);
-
- // be sure to close in all code paths
+ bool open = false;
try {
+ yield emptyable.open_async(Geary.Folder.OpenFlags.NO_DELAY, cancellable);
+ open = true;
+ yield emptyable.wait_for_open_async(cancellable);
yield emptyable.empty_folder_async(cancellable);
} finally {
- try {
- yield emptyable.close_async(null);
- } catch (Error err) {
- // ignored
+ if (open) {
+ try {
+ yield emptyable.close_async(null);
+ } catch (Error err) {
+ // ignored
+ }
}
}
}
-
+
private bool current_folder_supports_trash() {
return (current_folder != null && current_folder.special_folder_type != Geary.SpecialFolderType.TRASH
&& !current_folder.properties.is_local_only && current_account != null
diff --git a/src/engine/api/geary-folder.vala b/src/engine/api/geary-folder.vala
index d07a400..6aad114 100644
--- a/src/engine/api/geary-folder.vala
+++ b/src/engine/api/geary-folder.vala
@@ -104,36 +104,37 @@ public abstract class Geary.Folder : BaseObject {
INSERTED,
REMOVED
}
-
+
/**
- * Flags modifying the behavior of open_async().
+ * Flags that modify the behavior of {@link open_async}.
*/
[Flags]
public enum OpenFlags {
+ /** If only //NONE// is set, the folder will be opened normally. */
NONE = 0,
- /**
- * Perform the minimal amount of activity possible to open the folder
- * and be synchronized with the server. This may mean some attributes of
- * the messages (such as their flags or other metadata) may not be up-to-date
- * when the folder opens. Not all folders will support this flag.
- */
- FAST_OPEN,
+
/**
* Do not delay opening a connection to the server.
*
+ * This has no effect for folders that are not backed by a
+ * remote server.
+ *
* @see open_async
*/
NO_DELAY;
-
+
+ /** Determines if any one of the given //flags// are set. */
public bool is_any_set(OpenFlags flags) {
return (this & flags) != 0;
}
-
+
+ /** Determines all of the given //flags// are set. */
public bool is_all_set(OpenFlags flags) {
return (this & flags) == flags;
}
+
}
-
+
/**
* Flags modifying how email is retrieved.
*/
diff --git a/src/engine/app/app-draft-manager.vala b/src/engine/app/app-draft-manager.vala
index 798e7f0..4c80e22 100644
--- a/src/engine/app/app-draft-manager.vala
+++ b/src/engine/app/app-draft-manager.vala
@@ -225,9 +225,9 @@ public class Geary.App.DraftManager : BaseObject {
}
drafts_folder.closed.connect(on_folder_closed);
-
- yield drafts_folder.open_async(Folder.OpenFlags.NONE, cancellable);
-
+
+ yield drafts_folder.open_async(Folder.OpenFlags.NO_DELAY, cancellable);
+
// if drafts folder doesn't return the identifier of newly created emails, then this object
// can't do it's work ... wait until open to check for this, to be absolutely sure
if (drafts_folder.properties.create_never_returns_id) {
diff --git a/src/engine/app/app-email-store.vala b/src/engine/app/app-email-store.vala
index e616755..db107d2 100644
--- a/src/engine/app/app-email-store.vala
+++ b/src/engine/app/app-email-store.vala
@@ -175,11 +175,11 @@ public class Geary.App.EmailStore : BaseObject {
Geary.Folder folder = folders.get(path);
Gee.Collection<Geary.EmailIdentifier> ids = folders_to_ids.get(path);
assert(ids.size > 0);
-
+
bool open = false;
Gee.Collection<Geary.EmailIdentifier>? used_ids = null;
try {
- yield folder.open_async(Geary.Folder.OpenFlags.FAST_OPEN, cancellable);
+ yield folder.open_async(Folder.OpenFlags.NONE, cancellable);
open = true;
used_ids = yield operation.execute_async(folder, ids, cancellable);
} catch (Error e) {
diff --git a/src/engine/imap-db/outbox/smtp-outbox-folder.vala
b/src/engine/imap-db/outbox/smtp-outbox-folder.vala
index 4231731..70085b9 100644
--- a/src/engine/imap-db/outbox/smtp-outbox-folder.vala
+++ b/src/engine/imap-db/outbox/smtp-outbox-folder.vala
@@ -1,6 +1,6 @@
/*
- * Copyright 2017 Michael Gratton <mike vee net>
* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017-2018 Michael Gratton <mike vee net>
*
* This software is licensed under the GNU Lesser General Public License
* (version 2.1 or later). See the COPYING file in this distribution.
@@ -726,23 +726,17 @@ private class Geary.SmtpOutboxFolder :
bool open = false;
try {
- yield create.open_async(Geary.Folder.OpenFlags.FAST_OPEN, cancellable);
+ yield create.open_async(Geary.Folder.OpenFlags.NONE, cancellable);
open = true;
-
yield create.create_email_async(rfc822, null, null, null, cancellable);
-
- yield create.close_async(cancellable);
- open = false;
- } catch (Error e) {
+ } finally {
if (open) {
try {
- yield create.close_async(cancellable);
- open = false;
+ yield create.close_async();
} catch (Error e) {
debug("Error closing folder %s: %s", create.to_string(), e.message);
}
}
- throw e;
}
}
diff --git a/src/engine/imap-db/search/imap-db-search-folder.vala
b/src/engine/imap-db/search/imap-db-search-folder.vala
index 0e5b084..b9d46f3 100644
--- a/src/engine/imap-db/search/imap-db-search-folder.vala
+++ b/src/engine/imap-db/search/imap-db-search-folder.vala
@@ -350,24 +350,19 @@ private class Geary.ImapDB.SearchFolder : Geary.SearchFolder, Geary.FolderSuppor
assert(ids.size > 0);
debug("Search folder removing %d emails from %s", ids.size, folder.to_string());
-
+
bool open = false;
try {
- yield folder.open_async(Geary.Folder.OpenFlags.FAST_OPEN, cancellable);
+ yield folder.open_async(Geary.Folder.OpenFlags.NONE, cancellable);
open = true;
-
yield remove.remove_email_async(
- Geary.Collection.to_array_list<Geary.EmailIdentifier>(ids), cancellable);
-
- yield folder.close_async(cancellable);
- open = false;
- } catch (Error e) {
- debug("Error removing messages in %s: %s", folder.to_string(), e.message);
-
+ Geary.Collection.to_array_list<Geary.EmailIdentifier>(ids),
+ cancellable
+ );
+ } finally {
if (open) {
try {
- yield folder.close_async(cancellable);
- open = false;
+ yield folder.close_async();
} catch (Error e) {
debug("Error closing folder %s: %s", folder.to_string(), e.message);
}
@@ -375,7 +370,7 @@ private class Geary.ImapDB.SearchFolder : Geary.SearchFolder, Geary.FolderSuppor
}
}
}
-
+
/**
* Given a list of mail IDs, returns a set of casefolded words that match for the current
* search query.
diff --git a/src/engine/imap-engine/imap-engine-account-synchronizer.vala
b/src/engine/imap-engine/imap-engine-account-synchronizer.vala
index a14fded..bec8eb6 100644
--- a/src/engine/imap-engine/imap-engine-account-synchronizer.vala
+++ b/src/engine/imap-engine/imap-engine-account-synchronizer.vala
@@ -104,7 +104,7 @@ private class Geary.ImapEngine.RefreshFolderSync : FolderOperation {
throws Error {
bool opened = false;
try {
- yield this.folder.open_async(Folder.OpenFlags.FAST_OPEN, cancellable);
+ yield this.folder.open_async(Folder.OpenFlags.NONE, cancellable);
opened = true;
yield this.folder.wait_for_open_async(cancellable);
yield sync_folder(cancellable);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]