diff options
author | Michael Catanzaro <mcatanzaro@igalia.com> | 2015-09-15 21:03:19 -0500 |
---|---|---|
committer | Michael Catanzaro <mcatanzaro@igalia.com> | 2015-11-07 09:50:59 -0600 |
commit | ed9d9227e2560c0b4da7ffa67dc618e4e245b4ee (patch) | |
tree | b918ef04208a714ac4ab0fe624bd3999cfc10786 /embed | |
parent | a927446a859b722cedad2637c97464a5a1808c17 (diff) | |
download | epiphany-ed9d9227e2560c0b4da7ffa67dc618e4e245b4ee.tar.gz |
EphyFileMonitor: Use G_DECLARE_FINAL_TYPE
Diffstat (limited to 'embed')
-rw-r--r-- | embed/ephy-file-monitor.c | 92 | ||||
-rw-r--r-- | embed/ephy-file-monitor.h | 25 |
2 files changed, 42 insertions, 75 deletions
diff --git a/embed/ephy-file-monitor.c b/embed/ephy-file-monitor.c index 762066923..fb549bf3f 100644 --- a/embed/ephy-file-monitor.c +++ b/embed/ephy-file-monitor.c @@ -29,14 +29,19 @@ #define RELOAD_DELAY 250 /* ms */ #define RELOAD_DELAY_MAX_TICKS 40 /* RELOAD_DELAY * RELOAD_DELAY_MAX_TICKS = 10 s */ -struct _EphyFileMonitorPrivate { +struct _EphyFileMonitor +{ + GObject parent; + GFileMonitor *monitor; gboolean monitor_directory; guint reload_scheduled_id; guint reload_delay_ticks; EphyWebView *view; -}; +}; + +G_DEFINE_TYPE (EphyFileMonitor, ephy_file_monitor, G_TYPE_OBJECT) enum { PROP_0, @@ -44,61 +49,51 @@ enum { PROP_VIEW }; -#define EPHY_FILE_MONITOR_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_FILE_MONITOR, EphyFileMonitorPrivate)) - -G_DEFINE_TYPE (EphyFileMonitor, ephy_file_monitor, G_TYPE_OBJECT) - static void ephy_file_monitor_cancel (EphyFileMonitor *monitor) { - EphyFileMonitorPrivate *priv; - g_return_if_fail (EPHY_IS_FILE_MONITOR (monitor)); - priv = monitor->priv; - - if (priv->monitor != NULL) { + if (monitor->monitor != NULL) { LOG ("Cancelling file monitor"); - g_file_monitor_cancel (G_FILE_MONITOR (priv->monitor)); - g_object_unref (priv->monitor); - priv->monitor = NULL; + g_file_monitor_cancel (G_FILE_MONITOR (monitor->monitor)); + g_object_unref (monitor->monitor); + monitor->monitor = NULL; } - if (priv->reload_scheduled_id != 0) { + if (monitor->reload_scheduled_id != 0) { LOG ("Cancelling scheduled reload"); - g_source_remove (priv->reload_scheduled_id); - priv->reload_scheduled_id = 0; + g_source_remove (monitor->reload_scheduled_id); + monitor->reload_scheduled_id = 0; } - priv->reload_delay_ticks = 0; + monitor->reload_delay_ticks = 0; } static gboolean ephy_file_monitor_reload_cb (EphyFileMonitor *monitor) { - EphyFileMonitorPrivate *priv = monitor->priv; - - if (priv->reload_delay_ticks > 0) { - priv->reload_delay_ticks--; + if (monitor->reload_delay_ticks > 0) { + monitor->reload_delay_ticks--; /* Run again. */ return TRUE; } - if (ephy_web_view_is_loading (priv->view)) { + if (ephy_web_view_is_loading (monitor->view)) { /* Wait a bit to reload if we're still loading! */ - priv->reload_delay_ticks = RELOAD_DELAY_MAX_TICKS / 2; + monitor->reload_delay_ticks = RELOAD_DELAY_MAX_TICKS / 2; /* Run again. */ return TRUE; } - priv->reload_scheduled_id = 0; + monitor->reload_scheduled_id = 0; - LOG ("Reloading file '%s'", ephy_web_view_get_address (priv->view)); - webkit_web_view_reload (WEBKIT_WEB_VIEW (priv->view)); + LOG ("Reloading file '%s'", ephy_web_view_get_address (monitor->view)); + webkit_web_view_reload (WEBKIT_WEB_VIEW (monitor->view)); /* Don't run again. */ return FALSE; @@ -112,7 +107,6 @@ ephy_file_monitor_changed_cb (GFileMonitor *monitor, EphyFileMonitor *file_monitor) { gboolean should_reload; - EphyFileMonitorPrivate *priv = file_monitor->priv; switch (event_type) { /* These events will always trigger a reload: */ @@ -124,7 +118,7 @@ ephy_file_monitor_changed_cb (GFileMonitor *monitor, /* These events will only trigger a reload for directories: */ case G_FILE_MONITOR_EVENT_DELETED: case G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED: - should_reload = priv->monitor_directory; + should_reload = file_monitor->monitor_directory; break; /* These events don't trigger a reload: */ @@ -142,19 +136,19 @@ ephy_file_monitor_changed_cb (GFileMonitor *monitor, * Delay the reload a little bit so we don't endlessly * reload while a file is written. */ - if (priv->reload_delay_ticks == 0) - priv->reload_delay_ticks = 1; + if (file_monitor->reload_delay_ticks == 0) + file_monitor->reload_delay_ticks = 1; else { /* Exponential backoff. */ - priv->reload_delay_ticks = MIN (priv->reload_delay_ticks * 2, - RELOAD_DELAY_MAX_TICKS); + file_monitor->reload_delay_ticks = MIN (file_monitor->reload_delay_ticks * 2, + RELOAD_DELAY_MAX_TICKS); } - if (priv->reload_scheduled_id == 0) { - priv->reload_scheduled_id = + if (file_monitor->reload_scheduled_id == 0) { + file_monitor->reload_scheduled_id = g_timeout_add (RELOAD_DELAY, (GSourceFunc)ephy_file_monitor_reload_cb, file_monitor); - g_source_set_name_by_id (priv->reload_scheduled_id, "[epiphany] file_monitor"); + g_source_set_name_by_id (file_monitor->reload_scheduled_id, "[epiphany] file_monitor"); } } } @@ -163,7 +157,6 @@ void ephy_file_monitor_update_location (EphyFileMonitor *file_monitor, const char *address) { - EphyFileMonitorPrivate *priv; gboolean local; char *anchor; char *url; @@ -174,8 +167,6 @@ ephy_file_monitor_update_location (EphyFileMonitor *file_monitor, g_return_if_fail (EPHY_IS_FILE_MONITOR (file_monitor)); g_return_if_fail (address != NULL); - priv = file_monitor->priv; - ephy_file_monitor_cancel (file_monitor); local = g_str_has_prefix (address, "file://"); @@ -203,19 +194,19 @@ ephy_file_monitor_update_location (EphyFileMonitor *file_monitor, g_object_unref (file_info); if (file_type == G_FILE_TYPE_DIRECTORY) { - priv->monitor = g_file_monitor_directory (file, 0, NULL, NULL); - g_signal_connect (priv->monitor, "changed", + file_monitor->monitor = g_file_monitor_directory (file, 0, NULL, NULL); + g_signal_connect (file_monitor->monitor, "changed", G_CALLBACK (ephy_file_monitor_changed_cb), file_monitor); - priv->monitor_directory = TRUE; + file_monitor->monitor_directory = TRUE; LOG ("Installed monitor for directory '%s'", url); } else if (file_type == G_FILE_TYPE_REGULAR) { - priv->monitor = g_file_monitor_file (file, 0, NULL, NULL); - g_signal_connect (priv->monitor, "changed", + file_monitor->monitor = g_file_monitor_file (file, 0, NULL, NULL); + g_signal_connect (file_monitor->monitor, "changed", G_CALLBACK (ephy_file_monitor_changed_cb), file_monitor); - priv->monitor_directory = FALSE; + file_monitor->monitor_directory = FALSE; LOG ("Installed monitor for file '%s'", url); } @@ -237,11 +228,11 @@ ephy_file_monitor_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - EphyFileMonitorPrivate *priv = EPHY_FILE_MONITOR (object)->priv; + EphyFileMonitor *monitor = EPHY_FILE_MONITOR (object); switch (prop_id) { case PROP_VIEW: - g_value_set_object (value, priv->view); + g_value_set_object (value, monitor->view); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -255,11 +246,11 @@ ephy_file_monitor_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - EphyFileMonitorPrivate *priv = EPHY_FILE_MONITOR (object)->priv; + EphyFileMonitor *monitor = EPHY_FILE_MONITOR (object); switch (prop_id) { case PROP_VIEW: - priv->view = g_value_get_object (value); + monitor->view = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -283,14 +274,11 @@ ephy_file_monitor_class_init (EphyFileMonitorClass *klass) "The file monitor's associated view", EPHY_TYPE_WEB_VIEW, G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_CONSTRUCT_ONLY)); - - g_type_class_add_private (gobject_class, sizeof (EphyFileMonitorPrivate)); } static void ephy_file_monitor_init (EphyFileMonitor *monitor) { - monitor->priv = EPHY_FILE_MONITOR_GET_PRIVATE (monitor); } EphyFileMonitor * diff --git a/embed/ephy-file-monitor.h b/embed/ephy-file-monitor.h index 1187649bf..b6bcc7c45 100644 --- a/embed/ephy-file-monitor.h +++ b/embed/ephy-file-monitor.h @@ -30,31 +30,10 @@ G_BEGIN_DECLS -#define EPHY_TYPE_FILE_MONITOR (ephy_file_monitor_get_type ()) -#define EPHY_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EPHY_TYPE_FILE_MONITOR, EphyFileMonitor)) -#define EPHY_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EPHY_TYPE_FILE_MONITOR, EphyFileMonitorClass)) -#define EPHY_IS_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EPHY_TYPE_FILE_MONITOR)) -#define EPHY_IS_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EPHY_TYPE_FILE_MONITOR)) -#define EPHY_FILE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EPHY_TYPE_FILE_MONITOR, EphyFileMonitorClass)) +#define EPHY_TYPE_FILE_MONITOR (ephy_file_monitor_get_type ()) -typedef struct _EphyFileMonitorClass EphyFileMonitorClass; -typedef struct _EphyFileMonitor EphyFileMonitor; -typedef struct _EphyFileMonitorPrivate EphyFileMonitorPrivate; +G_DECLARE_FINAL_TYPE (EphyFileMonitor, ephy_file_monitor, EPHY, FILE_MONITOR, GObject) -struct _EphyFileMonitor -{ - GObject parent; - - /*< private >*/ - EphyFileMonitorPrivate *priv; -}; - -struct _EphyFileMonitorClass -{ - GObjectClass parent_class; -}; - -GType ephy_file_monitor_get_type (void); EphyFileMonitor * ephy_file_monitor_new (EphyWebView *view); void ephy_file_monitor_update_location (EphyFileMonitor *monitor, const char *address); |