Remove Gee.TreeSet workaround: Closes #7304

Now require Gee 0.8.5 or better.
This commit is contained in:
Jim Nelson 2013-09-25 12:28:00 -07:00
parent ca71a64447
commit cb1421a52b
8 changed files with 13 additions and 28 deletions

4
debian/control vendored
View file

@ -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),

View file

@ -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

View file

@ -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) {

View file

@ -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;

View file

@ -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; }

View file

@ -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

View file

@ -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;

View file

@ -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();
}
}
} }