summaryrefslogtreecommitdiff
path: root/plugins/housekeeping/gsd-housekeeping-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/housekeeping/gsd-housekeeping-manager.c')
-rw-r--r--plugins/housekeeping/gsd-housekeeping-manager.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/plugins/housekeeping/gsd-housekeeping-manager.c b/plugins/housekeeping/gsd-housekeeping-manager.c
index f2820fb9..748c53db 100644
--- a/plugins/housekeeping/gsd-housekeeping-manager.c
+++ b/plugins/housekeeping/gsd-housekeeping-manager.c
@@ -322,16 +322,22 @@ gsd_housekeeping_manager_stop (GsdHousekeepingManager *manager)
{
g_debug ("Stopping housekeeping manager");
- if (manager->priv->long_term_cb) {
- g_source_remove (manager->priv->long_term_cb);
- manager->priv->long_term_cb = 0;
- }
-
if (manager->priv->short_term_cb) {
g_source_remove (manager->priv->short_term_cb);
manager->priv->short_term_cb = 0;
}
+ if (manager->priv->long_term_cb) {
+ g_source_remove (manager->priv->long_term_cb);
+ manager->priv->long_term_cb = 0;
+
+ /* Do a clean-up on shutdown if and only if the size or age
+ limits have been set to paranoid levels (zero) */
+ if ((get_gconf_int_with_default (GCONF_THUMB_AGE, DEFAULT_MAX_AGE_IN_DAYS) == 0) ||
+ (get_gconf_int_with_default (GCONF_THUMB_SIZE, DEFAULT_MAX_SIZE_IN_MB) == 0)) {
+ do_cleanup (manager);
+ }
+ }
}