[tracker/libtracker-miner] Don't allow an app to pause with the same reason more than once
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/libtracker-miner] Don't allow an app to pause with the same reason more than once
- Date: Fri, 28 Aug 2009 11:45:58 +0000 (UTC)
commit 97598026da55f45ad706c6fe0d8d120049f84276
Author: Martyn Russell <martyn lanedo com>
Date: Fri Aug 28 12:28:46 2009 +0100
Don't allow an app to pause with the same reason more than once
src/libtracker-miner/tracker-miner.c | 25 +++++++++++----
src/tracker-miner-fs/tracker-miner-files.c | 45 ++++++++++++++++-----------
2 files changed, 45 insertions(+), 25 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner.c b/src/libtracker-miner/tracker-miner.c
index 6422572..3baa976 100644
--- a/src/libtracker-miner/tracker-miner.c
+++ b/src/libtracker-miner/tracker-miner.c
@@ -561,11 +561,28 @@ tracker_miner_pause (TrackerMiner *miner,
GError **error)
{
PauseData *pd;
+ GHashTableIter iter;
+ gpointer key, value;
g_return_val_if_fail (TRACKER_IS_MINER (miner), -1);
g_return_val_if_fail (application != NULL, -1);
g_return_val_if_fail (reason != NULL, -1);
+ /* Check this is not a duplicate pause */
+ g_hash_table_iter_init (&iter, miner->private->pauses);
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ PauseData *pd = value;
+
+ if (g_strcmp0 (application, pd->application) == 0 &&
+ g_strcmp0 (reason, pd->reason) == 0) {
+ /* Can't use duplicate pauses */
+ g_set_error (error, TRACKER_MINER_ERROR, 0,
+ "%s",
+ _("Pause application and reason match an already existing pause request"));
+ return -1;
+ }
+ }
+
pd = pause_data_new (application, reason);
g_hash_table_insert (miner->private->pauses,
@@ -700,14 +717,8 @@ tracker_miner_dbus_get_pause_details (TrackerMiner *miner,
g_hash_table_iter_init (&iter, miner->private->pauses);
while (g_hash_table_iter_next (&iter, &key, &value)) {
- PauseData *pd;
+ PauseData *pd = value;
- pd = value;
-
- if (!pd) {
- continue;
- }
-
applications = g_slist_prepend (applications, pd->application);
reasons = g_slist_prepend (reasons, pd->reason);
}
diff --git a/src/tracker-miner-fs/tracker-miner-files.c b/src/tracker-miner-fs/tracker-miner-files.c
index ea66463..124dbb7 100644
--- a/src/tracker-miner-fs/tracker-miner-files.c
+++ b/src/tracker-miner-fs/tracker-miner-files.c
@@ -377,29 +377,32 @@ on_low_battery_cb (GObject *object,
TrackerMinerFiles *mf = user_data;
gboolean on_low_battery;
gboolean on_battery;
+ gboolean should_pause = FALSE;
on_low_battery = tracker_power_get_on_low_battery (mf->private->power);
on_battery = tracker_power_get_on_battery (mf->private->power);
- if (on_battery) {
- if (on_low_battery) {
- /* Running on low batteries, stop indexing for now */
+ if (on_battery && on_low_battery) {
+ should_pause = TRUE;
+ }
+
+ if (should_pause) {
+ /* Don't try to pause again */
+ if (mf->private->low_battery_pause_cookie == 0) {
mf->private->low_battery_pause_cookie =
tracker_miner_pause (TRACKER_MINER (mf),
g_get_application_name (),
_("Low battery"),
NULL);
- } else {
+ }
+ } else {
+ /* Don't try to resume again */
+ if (mf->private->low_battery_pause_cookie != 0) {
tracker_miner_resume (TRACKER_MINER (mf),
mf->private->low_battery_pause_cookie,
NULL);
mf->private->low_battery_pause_cookie = 0;
}
- } else if (mf->private->low_battery_pause_cookie != 0) {
- tracker_miner_resume (TRACKER_MINER (mf),
- mf->private->low_battery_pause_cookie,
- NULL);
- mf->private->low_battery_pause_cookie = 0;
}
/* FIXME: Get this working again */
@@ -459,16 +462,22 @@ disk_space_check_cb (gpointer user_data)
TrackerMinerFiles *mf = user_data;
if (disk_space_check (mf)) {
- mf->private->disk_space_pause_cookie =
- tracker_miner_pause (TRACKER_MINER (mf),
- g_get_application_name (),
- _("Low disk space"),
- NULL);
+ /* Don't try to pause again */
+ if (mf->private->disk_space_pause_cookie == 0) {
+ mf->private->disk_space_pause_cookie =
+ tracker_miner_pause (TRACKER_MINER (mf),
+ g_get_application_name (),
+ _("Low disk space"),
+ NULL);
+ }
} else {
- tracker_miner_resume (TRACKER_MINER (mf),
- mf->private->disk_space_pause_cookie,
- NULL);
- mf->private->disk_space_pause_cookie = 0;
+ /* Don't try to resume again */
+ if (mf->private->disk_space_pause_cookie != 0) {
+ tracker_miner_resume (TRACKER_MINER (mf),
+ mf->private->disk_space_pause_cookie,
+ NULL);
+ mf->private->disk_space_pause_cookie = 0;
+ }
}
return TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]