Remove Gee.TreeSet workaround: Closes #7304
Now require Gee 0.8.5 or better.
This commit is contained in:
parent
ca71a64447
commit
cb1421a52b
8 changed files with 13 additions and 28 deletions
4
debian/control
vendored
4
debian/control
vendored
|
|
@ -3,7 +3,7 @@ Section: gnome
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Jim Nelson <jim@yorba.org>
|
Maintainer: Jim Nelson <jim@yorba.org>
|
||||||
Build-Depends: debhelper (>= 8),
|
Build-Depends: debhelper (>= 8),
|
||||||
libgee-0.8-dev (>= 0.8.0),
|
libgee-0.8-dev (>= 0.8.5),
|
||||||
libglib2.0-dev (>= 2.32.0),
|
libglib2.0-dev (>= 2.32.0),
|
||||||
libgtk-3-dev (>= 3.6.0),
|
libgtk-3-dev (>= 3.6.0),
|
||||||
libunique-3.0-dev (>= 3.0.0),
|
libunique-3.0-dev (>= 3.0.0),
|
||||||
|
|
@ -27,7 +27,7 @@ Homepage: http://www.yorba.org
|
||||||
Package: geary
|
Package: geary
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends},
|
Depends: ${shlibs:Depends}, ${misc:Depends},
|
||||||
libgee-0.8-2 (>= 0.8.0),
|
libgee-0.8-2 (>= 0.8.5),
|
||||||
libglib2.0-0 (>= 2.32.0),
|
libglib2.0-0 (>= 2.32.0),
|
||||||
libgtk-3-0 (>= 3.6.0),
|
libgtk-3-0 (>= 3.6.0),
|
||||||
libunique-3.0-0 (>= 3.0.0),
|
libunique-3.0-0 (>= 3.0.0),
|
||||||
|
|
|
||||||
|
|
@ -441,7 +441,7 @@ pkg_check_modules(DEPS REQUIRED
|
||||||
glib-2.0>=${TARGET_GLIB}.0
|
glib-2.0>=${TARGET_GLIB}.0
|
||||||
gio-2.0>=2.28.0
|
gio-2.0>=2.28.0
|
||||||
gtk+-3.0>=3.6.0
|
gtk+-3.0>=3.6.0
|
||||||
gee-0.8>=0.8.0
|
gee-0.8>=0.8.5
|
||||||
unique-3.0>=3.0.0
|
unique-3.0>=3.0.0
|
||||||
libnotify>=0.7.5
|
libnotify>=0.7.5
|
||||||
libcanberra>=0.28
|
libcanberra>=0.28
|
||||||
|
|
|
||||||
|
|
@ -192,8 +192,7 @@ public class ConversationListStore : Gtk.ListStore {
|
||||||
|
|
||||||
// sort the conversations so the previews are fetched from the newest to the oldest, matching
|
// sort the conversations so the previews are fetched from the newest to the oldest, matching
|
||||||
// the user experience
|
// the user experience
|
||||||
Gee.TreeSet<Geary.App.Conversation> sorted_conversations
|
Gee.TreeSet<Geary.App.Conversation> sorted_conversations = new Gee.TreeSet<Geary.App.Conversation>(
|
||||||
= new Geary.Collection.FixedTreeSet<Geary.App.Conversation>(
|
|
||||||
compare_conversation_descending);
|
compare_conversation_descending);
|
||||||
sorted_conversations.add_all(conversation_monitor.get_conversations());
|
sorted_conversations.add_all(conversation_monitor.get_conversations());
|
||||||
foreach (Geary.App.Conversation conversation in sorted_conversations) {
|
foreach (Geary.App.Conversation conversation in sorted_conversations) {
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ public class Sidebar.Branch : Object {
|
||||||
child.parent = this;
|
child.parent = this;
|
||||||
|
|
||||||
if (children == null)
|
if (children == null)
|
||||||
children = new Geary.Collection.FixedTreeSet<Node>(comparator_wrapper);
|
children = new Gee.TreeSet<Node>(comparator_wrapper);
|
||||||
|
|
||||||
bool added = children.add(child);
|
bool added = children.add(child);
|
||||||
assert(added);
|
assert(added);
|
||||||
|
|
@ -74,7 +74,7 @@ public class Sidebar.Branch : Object {
|
||||||
public void remove_child(Node child) {
|
public void remove_child(Node child) {
|
||||||
assert(children != null);
|
assert(children != null);
|
||||||
|
|
||||||
Gee.SortedSet<Node> new_children = new Geary.Collection.FixedTreeSet<Node>(comparator_wrapper);
|
Gee.SortedSet<Node> new_children = new Gee.TreeSet<Node>(comparator_wrapper);
|
||||||
|
|
||||||
// For similar reasons as in reorder_child(), can't rely on TreeSet to locate this
|
// For similar reasons as in reorder_child(), can't rely on TreeSet to locate this
|
||||||
// node because we need reference equality.
|
// node because we need reference equality.
|
||||||
|
|
@ -143,7 +143,7 @@ public class Sidebar.Branch : Object {
|
||||||
// called or the set is manually iterated over and removed via the Iterator -- a
|
// called or the set is manually iterated over and removed via the Iterator -- a
|
||||||
// tree search is performed and the child will not be found. Only easy solution is
|
// tree search is performed and the child will not be found. Only easy solution is
|
||||||
// to rebuild a new SortedSet and see if the child has moved.
|
// to rebuild a new SortedSet and see if the child has moved.
|
||||||
Gee.SortedSet<Node> new_children = new Geary.Collection.FixedTreeSet<Node>(comparator_wrapper);
|
Gee.SortedSet<Node> new_children = new Gee.TreeSet<Node>(comparator_wrapper);
|
||||||
bool added = new_children.add_all(children);
|
bool added = new_children.add_all(children);
|
||||||
assert(added);
|
assert(added);
|
||||||
|
|
||||||
|
|
@ -159,7 +159,7 @@ public class Sidebar.Branch : Object {
|
||||||
if (children == null)
|
if (children == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Gee.SortedSet<Node> reordered = new Geary.Collection.FixedTreeSet<Node>(comparator_wrapper);
|
Gee.SortedSet<Node> reordered = new Gee.TreeSet<Node>(comparator_wrapper);
|
||||||
reordered.add_all(children);
|
reordered.add_all(children);
|
||||||
children = reordered;
|
children = reordered;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ public class ConversationViewer : Gtk.Box {
|
||||||
|
|
||||||
// List of emails in this view.
|
// List of emails in this view.
|
||||||
public Gee.TreeSet<Geary.Email> messages { get; private set; default =
|
public Gee.TreeSet<Geary.Email> messages { get; private set; default =
|
||||||
new Geary.Collection.FixedTreeSet<Geary.Email>(Geary.Email.compare_date_ascending); }
|
new Gee.TreeSet<Geary.Email>(Geary.Email.compare_date_ascending); }
|
||||||
|
|
||||||
// The HTML viewer to view the emails.
|
// The HTML viewer to view the emails.
|
||||||
public ConversationWebView web_view { get; private set; }
|
public ConversationWebView web_view { get; private set; }
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,9 @@ public class Geary.App.Conversation : BaseObject {
|
||||||
|
|
||||||
// this isn't ideal but the cost of adding an email to multiple sorted sets once versus
|
// this isn't ideal but the cost of adding an email to multiple sorted sets once versus
|
||||||
// the number of times they're accessed makes it worth it
|
// the number of times they're accessed makes it worth it
|
||||||
private Gee.SortedSet<Email> date_ascending = new Collection.FixedTreeSet<Email>(
|
private Gee.SortedSet<Email> date_ascending = new Gee.TreeSet<Email>(
|
||||||
Geary.Email.compare_date_ascending);
|
Geary.Email.compare_date_ascending);
|
||||||
private Gee.SortedSet<Email> date_descending = new Collection.FixedTreeSet<Email>(
|
private Gee.SortedSet<Email> date_descending = new Gee.TreeSet<Email>(
|
||||||
Geary.Email.compare_date_descending);
|
Geary.Email.compare_date_descending);
|
||||||
|
|
||||||
// by storing all paths for each EmailIdentifier, can lookup without blocking
|
// by storing all paths for each EmailIdentifier, can lookup without blocking
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ private class Geary.ImapEngine.EmailPrefetcher : Object {
|
||||||
private unowned ImapEngine.GenericFolder folder;
|
private unowned ImapEngine.GenericFolder folder;
|
||||||
private int start_delay_sec;
|
private int start_delay_sec;
|
||||||
private Nonblocking.Mutex mutex = new Nonblocking.Mutex();
|
private Nonblocking.Mutex mutex = new Nonblocking.Mutex();
|
||||||
private Gee.TreeSet<Geary.Email> prefetch_emails = new Collection.FixedTreeSet<Geary.Email>(
|
private Gee.TreeSet<Geary.Email> prefetch_emails = new Gee.TreeSet<Geary.Email>(
|
||||||
Email.compare_date_received_descending);
|
Email.compare_date_received_descending);
|
||||||
private uint schedule_id = 0;
|
private uint schedule_id = 0;
|
||||||
private Cancellable cancellable = new Cancellable();
|
private Cancellable cancellable = new Cancellable();
|
||||||
|
|
@ -169,7 +169,7 @@ private class Geary.ImapEngine.EmailPrefetcher : Object {
|
||||||
private async void do_prefetch_batch_async() throws Error {
|
private async void do_prefetch_batch_async() throws Error {
|
||||||
// snarf up all requested Emails for this round
|
// snarf up all requested Emails for this round
|
||||||
Gee.TreeSet<Geary.Email> emails = prefetch_emails;
|
Gee.TreeSet<Geary.Email> emails = prefetch_emails;
|
||||||
prefetch_emails = new Collection.FixedTreeSet<Geary.Email>(Email.compare_date_received_descending);
|
prefetch_emails = new Gee.TreeSet<Geary.Email>(Email.compare_date_received_descending);
|
||||||
|
|
||||||
if (emails.size == 0)
|
if (emails.size == 0)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -135,18 +135,4 @@ public static uint hash_memory(void *ptr, size_t bytes) {
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This *must* be used in place of Gee,TreeSet until the fix for this bug is widely distributed:
|
|
||||||
* [[https://bugzilla.gnome.org/show_bug.cgi?id=695045]]
|
|
||||||
*/
|
|
||||||
public class FixedTreeSet<G> : Gee.TreeSet<G> {
|
|
||||||
public FixedTreeSet(owned GLib.CompareDataFunc<G>? compare_func = null) {
|
|
||||||
base ( (owned) compare_func);
|
|
||||||
}
|
|
||||||
|
|
||||||
~FixedTreeSet() {
|
|
||||||
clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue