diff options
author | Martyn Russell <martyn@lanedo.com> | 2010-12-27 16:33:12 +0000 |
---|---|---|
committer | Martyn Russell <martyn@lanedo.com> | 2010-12-27 19:15:15 +0000 |
commit | 8f8438c3c6d46066a56098afba82351ffc4a1e65 (patch) | |
tree | 18e713b026e0268c37d127bbf212446eb852c993 | |
parent | 4db84204f8edb033ff8a4426b0ec1c05fa0229a4 (diff) | |
download | tracker-8f8438c3c6d46066a56098afba82351ffc4a1e65.tar.gz |
libtracker-miner: Fix progress percentage duplicates in signal emissions
-rw-r--r-- | examples/libtracker-miner/Makefile.am | 12 | ||||
-rw-r--r-- | src/libtracker-miner/Makefile.am | 1 | ||||
-rw-r--r-- | src/libtracker-miner/tracker-miner-object.c | 22 |
3 files changed, 26 insertions, 9 deletions
diff --git a/examples/libtracker-miner/Makefile.am b/examples/libtracker-miner/Makefile.am index 36c430d51..0681c8a21 100644 --- a/examples/libtracker-miner/Makefile.am +++ b/examples/libtracker-miner/Makefile.am @@ -10,12 +10,12 @@ AM_CPPFLAGS = \ $(LIBTRACKER_MINER_CFLAGS) LDADD = \ - $(top_builddir)/src/libtracker-miner/libtracker-miner-@TRACKER_API_VERSION@.la \ - $(top_builddir)/src/libtracker-client/libtracker-client-@TRACKER_API_VERSION@.la \ - $(top_builddir)/src/libtracker-sparql/libtracker-sparql-@TRACKER_API_VERSION@.la \ - $(top_builddir)/src/libtracker-common/libtracker-common.la \ - $(BUILD_LIBS) \ - $(LIBTRACKER_MINER_LIBS) + $(top_builddir)/src/libtracker-miner/libtracker-miner-@TRACKER_API_VERSION@.la \ + $(top_builddir)/src/libtracker-client/libtracker-client-@TRACKER_API_VERSION@.la \ + $(top_builddir)/src/libtracker-sparql/libtracker-sparql-@TRACKER_API_VERSION@.la \ + $(top_builddir)/src/libtracker-common/libtracker-common.la \ + $(BUILD_LIBS) \ + $(LIBTRACKER_MINER_LIBS) tracker_miner_test_SOURCES = \ tracker-miner-test.c \ diff --git a/src/libtracker-miner/Makefile.am b/src/libtracker-miner/Makefile.am index 10978efb0..f429f2cef 100644 --- a/src/libtracker-miner/Makefile.am +++ b/src/libtracker-miner/Makefile.am @@ -69,6 +69,7 @@ libtracker_miner_@TRACKER_API_VERSION@_la_LDFLAGS = \ libtracker_miner_@TRACKER_API_VERSION@_la_LIBADD = \ $(top_builddir)/src/libtracker-common/libtracker-common.la \ $(top_builddir)/src/libtracker-sparql/libtracker-sparql-@TRACKER_API_VERSION@.la \ + -lm \ $(BUILD_LIBS) \ $(LIBTRACKER_MINER_LIBS) diff --git a/src/libtracker-miner/tracker-miner-object.c b/src/libtracker-miner/tracker-miner-object.c index 782b7550d..2e8a9eecb 100644 --- a/src/libtracker-miner/tracker-miner-object.c +++ b/src/libtracker-miner/tracker-miner-object.c @@ -19,6 +19,8 @@ #include "config.h" +#include <math.h> + #include <libtracker-common/tracker-dbus.h> #include <libtracker-common/tracker-type-utils.h> @@ -28,6 +30,15 @@ #include "tracker-miner-glue.h" #include "tracker-dbus.h" +/* Here we use ceil() to eliminate decimal points beyond what we're + * interested in, which is 2 decimal places for the progress. The + * ceil() call will also round up the last decimal place. + * + * The 0.49 value is used for rounding correctness, because ceil() + * rounds up if the number is > 0.0. + */ +#define PROGRESS_ROUNDED(x) (ceil (((x) * 100) - 0.49) / 100) + /** * SECTION:tracker-miner * @short_description: Abstract base class for data miners @@ -303,10 +314,15 @@ miner_set_property (GObject *object, case PROP_PROGRESS: { gdouble new_progress; - new_progress = g_value_get_double (value); + new_progress = PROGRESS_ROUNDED (g_value_get_double (value)); - /* Only notify 1% changes */ - if ((gint) (miner->private->progress * 100) == (gint) (new_progress * 100)) { + /* NOTE: We don't round the current progress before + * comparison because we use the rounded value when + * we set it last. + * + * Only notify 1% changes + */ + if (new_progress == miner->private->progress) { /* Same, do nothing */ break; } |