diff --git a/src/client/application/geary-application.vala b/src/client/application/geary-application.vala index de894601..e6e078f4 100644 --- a/src/client/application/geary-application.vala +++ b/src/client/application/geary-application.vala @@ -661,6 +661,8 @@ public class GearyApplication : Gtk.Application { } quit(); + + Geary.Logging.clear(); Util.Date.terminate(); } diff --git a/src/engine/api/geary-logging.vala b/src/engine/api/geary-logging.vala index 3d95a8c7..8eec7954 100644 --- a/src/engine/api/geary-logging.vala +++ b/src/engine/api/geary-logging.vala @@ -350,6 +350,23 @@ public void init() { max_log_length = DEFAULT_MAX_LOG_BUFFER_LENGTH; } +/** + * Clears all log records. + * + * Since log records hold references to Geary engine objects, it may + * be desirable to clear the records prior to shutdown so that the + * objects can be destroyed. + */ +public void clear() { + record_lock.lock(); + + first_record = null; + last_record = null; + log_length = 0; + + record_lock.unlock(); +} + /** * Replaces the current logging flags with flags. Use Geary.Logging.Flag.NONE to clear all * logging flags.