Geary window does not open due to race condition: Bug #737811

Although prior fix for bug #737811 solved problem for some users,
apparently Geary still had an issue when upgrading a database with
new GLib Mutex implementation, which uses Linux's futexes whenever
available.  This solution gives the notifying thread a chance to
signal the waiter that its work is completed.
This commit is contained in:
Mark Pariente 2014-12-02 14:14:52 -08:00 committed by Jim Nelson
parent ced85aaa8e
commit b22682d2a2
2 changed files with 5 additions and 0 deletions

1
THANKS
View file

@ -34,6 +34,7 @@ Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
Philipp Nordhus <philipp@nhus.de>
Andreas Obergrusberger <tradiaz@yahoo.de>
Martin Olsson <martin@minimum.se>
Mark Pariente <markpariente@gmail.com>
Robert Park <rbpark@exolucere.ca>
Mario Sanchez Prada <msanchez@igalia.com>
Tiago Quelhas <tiagoq@gmail.com>

View file

@ -64,10 +64,14 @@ public class SpinWaiter : BaseObject {
int64 end_time = get_monotonic_time() + (actual_poll_msec * TimeSpan.MILLISECOND);
if (!cond.wait_until(mutex, end_time)) {
// timeout passed, allow the callback to run
mutex.unlock();
if (!cb()) {
// PollService returned false, abort
mutex.lock();
break;
}
mutex.lock();
}
}