[gnome-software] Simplify progress marshalling code



commit 0d4cbdaffd6d2c3393c5d8c22bce96ec0526ea3d
Author: Kalev Lember <klember redhat com>
Date:   Mon Aug 3 12:12:46 2015 +0200

    Simplify progress marshalling code
    
    No need to go through GsPluginLoader and GsPage any more now that we
    keep track of the associated GsApp in the packagekit plugin.

 src/gs-page.c          |   20 --------------------
 src/gs-plugin-loader.c |   29 -----------------------------
 src/gs-plugin-loader.h |    3 ---
 src/gs-plugin.c        |   15 ++++++---------
 src/gs-plugin.h        |    6 ------
 5 files changed, 6 insertions(+), 67 deletions(-)
---
diff --git a/src/gs-page.c b/src/gs-page.c
index 8f2529a..0a1917f 100644
--- a/src/gs-page.c
+++ b/src/gs-page.c
@@ -43,7 +43,6 @@ G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GsPage, gs_page, GTK_TYPE_BIN)
 typedef struct {
        GsApp           *app;
        GsPage          *page;
-       guint            progress_id;
 } InstallRemoveData;
 
 static void
@@ -68,9 +67,6 @@ gs_page_app_installed_cb (GObject *source,
        gboolean ret;
        _cleanup_error_free_ GError *error = NULL;
 
-       /* no longer update this application */
-       g_signal_handler_disconnect (plugin_loader, data->progress_id);
-
        ret = gs_plugin_loader_app_action_finish (plugin_loader,
                                                  res,
                                                  &error);
@@ -125,18 +121,6 @@ gs_page_app_removed_cb (GObject *source,
        install_remove_data_free (data);
 }
 
-static void
-gs_page_app_progress_changed_cb (GsPluginLoader *loader,
-                                GsApp *app,
-                                guint percentage,
-                                InstallRemoveData *data)
-{
-       /* some plugins can't map the progress to a specific package */
-       if (app == NULL)
-               app = data->app;
-       gs_app_set_progress (app, percentage);
-}
-
 void
 gs_page_install_app (GsPage *page, GsApp *app)
 {
@@ -154,10 +138,6 @@ gs_page_install_app (GsPage *page, GsApp *app)
        data = g_slice_new0 (InstallRemoveData);
        data->app = g_object_ref (app);
        data->page = g_object_ref (page);
-       data->progress_id =
-               g_signal_connect (priv->plugin_loader, "progress-changed",
-                                 G_CALLBACK (gs_page_app_progress_changed_cb),
-                                 data);
        gs_plugin_loader_app_action_async (priv->plugin_loader,
                                           app,
                                           GS_PLUGIN_LOADER_ACTION_INSTALL,
diff --git a/src/gs-plugin-loader.c b/src/gs-plugin-loader.c
index bd253c4..a30a199 100644
--- a/src/gs-plugin-loader.c
+++ b/src/gs-plugin-loader.c
@@ -56,7 +56,6 @@ G_DEFINE_TYPE_WITH_PRIVATE (GsPluginLoader, gs_plugin_loader, G_TYPE_OBJECT)
 
 enum {
        SIGNAL_STATUS_CHANGED,
-       SIGNAL_PROGRESS_CHANGED,
        SIGNAL_PENDING_APPS_CHANGED,
        SIGNAL_UPDATES_CHANGED,
        SIGNAL_LAST
@@ -2731,26 +2730,6 @@ gs_plugin_loader_status_update_cb (GsPlugin *plugin,
 }
 
 /**
- * gs_plugin_loader_progress_update_cb:
- */
-static void
-gs_plugin_loader_progress_update_cb (GsPlugin *plugin,
-                                    GsApp *app,
-                                    guint percentage,
-                                    gpointer user_data)
-{
-       GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (user_data);
-
-       /* new, or an app, so emit */
-       g_debug ("emitting %i%%(%s)",
-                percentage,
-                app != NULL ? gs_app_get_id (app) : "<general>");
-       g_signal_emit (plugin_loader,
-                      signals[SIGNAL_PROGRESS_CHANGED],
-                      0, app, percentage);
-}
-
-/**
  * gs_plugin_loader_updates_changed_delay_cb:
  */
 static gboolean
@@ -2841,8 +2820,6 @@ gs_plugin_loader_open_plugin (GsPluginLoader *plugin_loader,
        plugin->name = g_strdup (plugin_name ());
        plugin->status_update_fn = gs_plugin_loader_status_update_cb;
        plugin->status_update_user_data = plugin_loader;
-       plugin->progress_update_fn = gs_plugin_loader_progress_update_cb;
-       plugin->progress_update_user_data = plugin_loader;
        plugin->updates_changed_fn = gs_plugin_loader_updates_changed_cb;
        plugin->updates_changed_user_data = plugin_loader;
        plugin->profile = g_object_ref (plugin_loader->priv->profile);
@@ -3137,12 +3114,6 @@ gs_plugin_loader_class_init (GsPluginLoaderClass *klass)
                              G_STRUCT_OFFSET (GsPluginLoaderClass, status_changed),
                              NULL, NULL, g_cclosure_marshal_generic,
                              G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_UINT);
-       signals [SIGNAL_PROGRESS_CHANGED] =
-               g_signal_new ("progress-changed",
-                             G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (GsPluginLoaderClass, progress_changed),
-                             NULL, NULL, g_cclosure_marshal_generic,
-                             G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_UINT);
        signals [SIGNAL_PENDING_APPS_CHANGED] =
                g_signal_new ("pending-apps-changed",
                              G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
diff --git a/src/gs-plugin-loader.h b/src/gs-plugin-loader.h
index 3744e49..de24cda 100644
--- a/src/gs-plugin-loader.h
+++ b/src/gs-plugin-loader.h
@@ -52,9 +52,6 @@ typedef struct
        void                    (*status_changed)       (GsPluginLoader *plugin_loader,
                                                         GsApp          *app,
                                                         GsPluginStatus  status);
-       void                    (*progress_changed)     (GsPluginLoader *plugin_loader,
-                                                        GsApp          *app,
-                                                        guint           percentage);
        void                    (*pending_apps_changed) (GsPluginLoader *plugin_loader);
        void                    (*updates_changed)      (GsPluginLoader *plugin_loader);
 } GsPluginLoaderClass;
diff --git a/src/gs-plugin.c b/src/gs-plugin.c
index 0f7a17b..3361de9 100644
--- a/src/gs-plugin.c
+++ b/src/gs-plugin.c
@@ -280,13 +280,8 @@ gs_plugin_progress_update_cb (gpointer user_data)
 {
        GsPluginStatusHelper *helper = (GsPluginStatusHelper *) user_data;
 
-       /* call back into the loader */
-       helper->plugin->progress_update_fn (helper->plugin,
-                                           helper->app,
-                                           helper->percentage,
-                                           helper->plugin->progress_update_user_data);
-       if (helper->app != NULL)
-               g_object_unref (helper->app);
+       gs_app_set_progress (helper->app, helper->percentage);
+       g_object_unref (helper->app);
        g_slice_free (GsPluginStatusHelper, helper);
        return FALSE;
 }
@@ -299,11 +294,13 @@ gs_plugin_progress_update (GsPlugin *plugin, GsApp *app, guint percentage)
 {
        GsPluginStatusHelper *helper;
 
+       if (app == NULL)
+               return;
+
        helper = g_slice_new0 (GsPluginStatusHelper);
        helper->plugin = plugin;
        helper->percentage = percentage;
-       if (app != NULL)
-               helper->app = g_object_ref (app);
+       helper->app = g_object_ref (app);
        g_idle_add (gs_plugin_progress_update_cb, helper);
 }
 
diff --git a/src/gs-plugin.h b/src/gs-plugin.h
index c0bba4d..857c637 100644
--- a/src/gs-plugin.h
+++ b/src/gs-plugin.h
@@ -52,10 +52,6 @@ typedef void (*GsPluginStatusUpdate) (GsPlugin       *plugin,
                                         GsApp          *app,
                                         GsPluginStatus  status,
                                         gpointer        user_data);
-typedef void (*GsPluginProgressUpdate) (GsPlugin       *plugin,
-                                        GsApp          *app,
-                                        guint           percentage,
-                                        gpointer        user_data);
 typedef void (*GsPluginUpdatesChanged) (GsPlugin       *plugin,
                                         gpointer        user_data);
 
@@ -74,8 +70,6 @@ struct GsPlugin {
        gint                     scale;
        GsPluginStatusUpdate     status_update_fn;
        gpointer                 status_update_user_data;
-       GsPluginProgressUpdate   progress_update_fn;
-       gpointer                 progress_update_user_data;
        GsPluginUpdatesChanged   updates_changed_fn;
        gpointer                 updates_changed_user_data;
        GsProfile               *profile;



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