[tracker-miners/wip/carlosg/fanotify-fallback: 1/2] libtracker-miner: Convert some properties into vmethods




commit c163c28f55196df7e995ea3f220eb01d5254554c
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Feb 14 00:34:18 2022 +0100

    libtracker-miner: Convert some properties into vmethods
    
    These will be necessary to stack one subclass into the other, so
    it can work as a fallback.

 src/libtracker-miner/tracker-monitor-fanotify.c | 24 +++++++++++++++++-----
 src/libtracker-miner/tracker-monitor-glib.c     | 27 ++++++++++++++++++-------
 src/libtracker-miner/tracker-monitor.c          |  8 ++------
 src/libtracker-miner/tracker-monitor.h          |  3 +++
 4 files changed, 44 insertions(+), 18 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-monitor-fanotify.c b/src/libtracker-miner/tracker-monitor-fanotify.c
index 682265538..9ccd7379e 100644
--- a/src/libtracker-miner/tracker-monitor-fanotify.c
+++ b/src/libtracker-miner/tracker-monitor-fanotify.c
@@ -450,9 +450,10 @@ tracker_monitor_fanotify_initable_init (GInitable     *initable,
 }
 
 static void
-tracker_monitor_fanotify_set_enabled (TrackerMonitorFanotify *monitor,
-                                      gboolean                enabled)
+tracker_monitor_fanotify_set_enabled (TrackerMonitor *object,
+                                      gboolean        enabled)
 {
+       TrackerMonitorFanotify *monitor = TRACKER_MONITOR_FANOTIFY (object);
        GList *files = NULL;
 
        g_return_if_fail (TRACKER_IS_MONITOR (monitor));
@@ -513,8 +514,8 @@ tracker_monitor_fanotify_set_property (GObject      *object,
 {
        switch (prop_id) {
        case PROP_ENABLED:
-               tracker_monitor_fanotify_set_enabled (TRACKER_MONITOR_FANOTIFY (object),
-                                                     g_value_get_boolean (value));
+               tracker_monitor_set_enabled (TRACKER_MONITOR (object),
+                                            g_value_get_boolean (value));
                break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -537,7 +538,7 @@ tracker_monitor_fanotify_get_property (GObject      *object,
                g_value_set_uint (value, monitor->limit);
                break;
        case PROP_COUNT:
-               g_value_set_uint (value, g_hash_table_size (monitor->monitored_dirs));
+               g_value_set_uint (value, tracker_monitor_get_count (TRACKER_MONITOR (object)));
                break;
        case PROP_IGNORED:
                g_value_set_uint (value, monitor->ignored);
@@ -837,6 +838,17 @@ tracker_monitor_fanotify_is_watched (TrackerMonitor *object,
        return g_hash_table_contains (monitor->monitored_dirs, file);
 }
 
+static guint
+tracker_monitor_fanotify_get_count (TrackerMonitor *object)
+{
+       TrackerMonitorFanotify *monitor = TRACKER_MONITOR_FANOTIFY (object);
+       guint count;
+
+       count = g_hash_table_size (monitor->monitored_dirs);
+
+       return count;
+}
+
 static void
 tracker_monitor_fanotify_class_init (TrackerMonitorFanotifyClass *klass)
 {
@@ -855,6 +867,8 @@ tracker_monitor_fanotify_class_init (TrackerMonitorFanotifyClass *klass)
        monitor_class->remove_recursively = tracker_monitor_fanotify_remove_recursively;
        monitor_class->move = tracker_monitor_fanotify_move;
        monitor_class->is_watched = tracker_monitor_fanotify_is_watched;
+       monitor_class->set_enabled = tracker_monitor_fanotify_set_enabled;
+       monitor_class->get_count = tracker_monitor_fanotify_get_count;
 
        g_object_class_override_property (object_class, PROP_ENABLED, "enabled");
        g_object_class_override_property (object_class, PROP_LIMIT, "limit");
diff --git a/src/libtracker-miner/tracker-monitor-glib.c b/src/libtracker-miner/tracker-monitor-glib.c
index f702ce2a9..d89eb080c 100644
--- a/src/libtracker-miner/tracker-monitor-glib.c
+++ b/src/libtracker-miner/tracker-monitor-glib.c
@@ -148,8 +148,8 @@ static gboolean tracker_monitor_glib_move (TrackerMonitor *monitor,
                                            GFile          *other_file);
 static gboolean tracker_monitor_glib_is_watched (TrackerMonitor *monitor,
                                                  GFile          *file);
-static void tracker_monitor_glib_set_enabled (TrackerMonitorGlib *monitor,
-                                              gboolean            enabled);
+static void tracker_monitor_glib_set_enabled (TrackerMonitor *monitor,
+                                              gboolean        enabled);
 
 G_DEFINE_TYPE_WITH_CODE (TrackerMonitorGlib, tracker_monitor_glib, TRACKER_TYPE_MONITOR,
                          G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
@@ -287,6 +287,16 @@ tracker_monitor_glib_initable_iface_init (GInitableIface *iface)
        iface->init = tracker_monitor_glib_initable_init;
 }
 
+static guint
+tracker_monitor_glib_get_count (TrackerMonitor *monitor)
+{
+       TrackerMonitorGlibPrivate *priv;
+
+       priv = tracker_monitor_glib_get_instance_private (TRACKER_MONITOR_GLIB (monitor));
+
+       return g_hash_table_size (priv->monitored_dirs);
+}
+
 static void
 tracker_monitor_glib_class_init (TrackerMonitorGlibClass *klass)
 {
@@ -305,6 +315,8 @@ tracker_monitor_glib_class_init (TrackerMonitorGlibClass *klass)
        monitor_class->remove_recursively = tracker_monitor_glib_remove_recursively;
        monitor_class->move = tracker_monitor_glib_move;
        monitor_class->is_watched = tracker_monitor_glib_is_watched;
+       monitor_class->set_enabled = tracker_monitor_glib_set_enabled;
+       monitor_class->get_count = tracker_monitor_glib_get_count;
 
        g_object_class_override_property (object_class, PROP_ENABLED, "enabled");
        g_object_class_override_property (object_class, PROP_LIMIT, "limit");
@@ -420,8 +432,8 @@ tracker_monitor_glib_set_property (GObject      *object,
 {
        switch (prop_id) {
        case PROP_ENABLED:
-               tracker_monitor_glib_set_enabled (TRACKER_MONITOR_GLIB (object),
-                                                 g_value_get_boolean (value));
+               tracker_monitor_set_enabled (TRACKER_MONITOR (object),
+                                            g_value_get_boolean (value));
                break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -446,7 +458,7 @@ tracker_monitor_glib_get_property (GObject      *object,
                g_value_set_uint (value, priv->monitor_limit);
                break;
        case PROP_COUNT:
-               g_value_set_uint (value, g_hash_table_size (priv->monitored_dirs));
+               g_value_set_uint (value, tracker_monitor_get_count (TRACKER_MONITOR (object)));
                break;
        case PROP_IGNORED:
                g_value_set_uint (value, priv->monitors_ignored);
@@ -1077,9 +1089,10 @@ directory_monitor_cancel (GFileMonitor *monitor)
 }
 
 static void
-tracker_monitor_glib_set_enabled (TrackerMonitorGlib *monitor,
-                                  gboolean            enabled)
+tracker_monitor_glib_set_enabled (TrackerMonitor *object,
+                                  gboolean        enabled)
 {
+       TrackerMonitorGlib *monitor = TRACKER_MONITOR_GLIB (object);
        TrackerMonitorGlibPrivate *priv;
        MonitorRequest *request;
 
diff --git a/src/libtracker-miner/tracker-monitor.c b/src/libtracker-miner/tracker-monitor.c
index 8f9e2e43c..304b0dfeb 100644
--- a/src/libtracker-miner/tracker-monitor.c
+++ b/src/libtracker-miner/tracker-monitor.c
@@ -229,7 +229,7 @@ tracker_monitor_set_enabled (TrackerMonitor *monitor,
 {
        g_return_if_fail (TRACKER_IS_MONITOR (monitor));
 
-       g_object_set (monitor, "enabled", !!enabled, NULL);
+       TRACKER_MONITOR_GET_CLASS (monitor)->set_enabled (monitor, !!enabled);
 }
 
 gboolean
@@ -291,13 +291,9 @@ tracker_monitor_is_watched (TrackerMonitor *monitor,
 guint
 tracker_monitor_get_count (TrackerMonitor *monitor)
 {
-       guint count;
-
        g_return_val_if_fail (TRACKER_IS_MONITOR (monitor), 0);
 
-       g_object_get (monitor, "count", &count, NULL);
-
-       return count;
+       return TRACKER_MONITOR_GET_CLASS (monitor)->get_count (monitor);
 }
 
 guint
diff --git a/src/libtracker-miner/tracker-monitor.h b/src/libtracker-miner/tracker-monitor.h
index 68ddc7500..21ffc4389 100644
--- a/src/libtracker-miner/tracker-monitor.h
+++ b/src/libtracker-miner/tracker-monitor.h
@@ -49,6 +49,9 @@ struct _TrackerMonitorClass {
                           GFile          *dst);
        gboolean (* is_watched) (TrackerMonitor *monitor,
                                 GFile          *file);
+       void (* set_enabled) (TrackerMonitor *monitor,
+                             gboolean        enabled);
+       guint (* get_count) (TrackerMonitor *monitor);
 };
 
 GType           tracker_monitor_get_type             (void);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]