[gnome-software/gnome-3-20] dummy: Use the cancellable delay when checking for updates
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/gnome-3-20] dummy: Use the cancellable delay when checking for updates
- Date: Sun, 17 Apr 2016 19:16:34 +0000 (UTC)
commit 8447a2757cf64295706981424c1dedf9056e05dd
Author: Richard Hughes <richard hughsie com>
Date: Fri Apr 15 17:25:17 2016 +0100
dummy: Use the cancellable delay when checking for updates
src/plugins/gs-plugin-dummy.c | 161 +++++++++++++++++++++--------------------
1 files changed, 82 insertions(+), 79 deletions(-)
---
diff --git a/src/plugins/gs-plugin-dummy.c b/src/plugins/gs-plugin-dummy.c
index 2f883eb..f9ca513 100644
--- a/src/plugins/gs-plugin-dummy.c
+++ b/src/plugins/gs-plugin-dummy.c
@@ -52,6 +52,86 @@ gs_plugin_initialize (GsPlugin *plugin)
}
}
+typedef struct {
+ GsPlugin *plugin;
+ GsApp *app;
+ GMainLoop *loop;
+ GCancellable *cancellable;
+ GError **error;
+ guint percentage;
+} GsPluginDummyHelper;
+
+/**
+ * gs_plugin_dummy_delay_cb:
+ */
+static gboolean
+gs_plugin_dummy_delay_cb (gpointer user_data)
+{
+ GsPluginDummyHelper *helper = (GsPluginDummyHelper *) user_data;
+ helper->percentage += 10;
+ if (helper->percentage >= 100) {
+ g_main_loop_quit (helper->loop);
+ return FALSE;
+ }
+ if (helper->error != NULL && *(helper->error) != NULL) {
+ g_main_loop_quit (helper->loop);
+ return FALSE;
+ }
+ g_debug ("dummy percentage=%i%%", helper->percentage);
+ if (helper->app != NULL) {
+ gs_app_set_progress (helper->app, helper->percentage);
+ gs_plugin_status_update (helper->plugin,
+ helper->app,
+ GS_PLUGIN_STATUS_DOWNLOADING);
+ }
+ return TRUE;
+}
+
+/**
+ * gs_plugin_dummy_delay_cancel_cb:
+ */
+static void
+gs_plugin_dummy_delay_cancel_cb (GCancellable *cancellable,
+ GsPluginDummyHelper *helper)
+{
+ g_debug ("dummy delay cancelled");
+ g_cancellable_set_error_if_cancelled (cancellable, helper->error);
+}
+
+/**
+ * gs_plugin_dummy_delay:
+ */
+static gboolean
+gs_plugin_dummy_delay (GsPlugin *plugin,
+ GsApp *app,
+ guint timeout_ms,
+ GCancellable *cancellable,
+ GError **error)
+{
+ g_autofree GsPluginDummyHelper *helper = g_new0 (GsPluginDummyHelper, 1);
+ g_autoptr(GMainLoop) loop = g_main_loop_new (NULL, FALSE);
+
+ /* cancel the delay on cancellation */
+ if (cancellable != NULL) {
+ g_cancellable_connect (cancellable,
+ G_CALLBACK (gs_plugin_dummy_delay_cancel_cb),
+ helper, NULL);
+ }
+
+ /* set up callbacks */
+ helper->app = app;
+ helper->cancellable = cancellable;
+ helper->error = error;
+ helper->loop = loop;
+ helper->percentage = 0;
+ helper->plugin = plugin;
+ g_debug ("dummy waiting for %ims", timeout_ms);
+ g_timeout_add (timeout_ms / 10, gs_plugin_dummy_delay_cb, helper);
+ g_main_loop_run (loop);
+ g_debug ("dummy done");
+ return helper->error != NULL;
+}
+
/**
* gs_plugin_add_updates:
*/
@@ -67,7 +147,8 @@ gs_plugin_add_updates (GsPlugin *plugin,
gs_plugin_status_update (plugin, NULL, GS_PLUGIN_STATUS_WAITING);
/* spin */
- g_usleep (2 * G_USEC_PER_SEC);
+ if (!gs_plugin_dummy_delay (plugin, NULL, 2000, cancellable, error))
+ return FALSE;
/* add a normal application */
app = gs_app_new ("gnome-boxes");
@@ -260,84 +341,6 @@ gs_plugin_add_distro_upgrades (GsPlugin *plugin,
return TRUE;
}
-typedef struct {
- GsPlugin *plugin;
- GsApp *app;
- GMainLoop *loop;
- GCancellable *cancellable;
- GError **error;
- guint percentage;
-} GsPluginDummyHelper;
-
-/**
- * gs_plugin_dummy_delay_cb:
- */
-static gboolean
-gs_plugin_dummy_delay_cb (gpointer user_data)
-{
- GsPluginDummyHelper *helper = (GsPluginDummyHelper *) user_data;
- helper->percentage += 10;
- if (helper->percentage >= 100) {
- g_main_loop_quit (helper->loop);
- return FALSE;
- }
- if (helper->error != NULL && *(helper->error) != NULL) {
- g_main_loop_quit (helper->loop);
- return FALSE;
- }
- g_debug ("dummy percentage=%i%%", helper->percentage);
- gs_app_set_progress (helper->app, helper->percentage);
- gs_plugin_status_update (helper->plugin,
- helper->app,
- GS_PLUGIN_STATUS_DOWNLOADING);
- return TRUE;
-}
-
-/**
- * gs_plugin_dummy_delay_cancel_cb:
- */
-static void
-gs_plugin_dummy_delay_cancel_cb (GCancellable *cancellable,
- GsPluginDummyHelper *helper)
-{
- g_debug ("dummy delay cancelled");
- g_cancellable_set_error_if_cancelled (cancellable, helper->error);
-}
-
-/**
- * gs_plugin_dummy_delay:
- */
-static gboolean
-gs_plugin_dummy_delay (GsPlugin *plugin,
- GsApp *app,
- guint timeout_ms,
- GCancellable *cancellable,
- GError **error)
-{
- g_autofree GsPluginDummyHelper *helper = g_new0 (GsPluginDummyHelper, 1);
- g_autoptr(GMainLoop) loop = g_main_loop_new (NULL, FALSE);
-
- /* cancel the delay on cancellation */
- if (cancellable != NULL) {
- g_cancellable_connect (cancellable,
- G_CALLBACK (gs_plugin_dummy_delay_cancel_cb),
- helper, NULL);
- }
-
- /* set up callbacks */
- helper->app = app;
- helper->cancellable = cancellable;
- helper->error = error;
- helper->loop = loop;
- helper->percentage = 0;
- helper->plugin = plugin;
- g_debug ("dummy waiting for %ims", timeout_ms);
- g_timeout_add (timeout_ms / 10, gs_plugin_dummy_delay_cb, helper);
- g_main_loop_run (loop);
- g_debug ("dummy done");
- return helper->error != NULL;
-}
-
/**
* gs_plugin_refresh:
*/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]