void gs_plugin_initialize (GsPlugin *plugin) { GsPluginData *priv = gs_plugin_alloc_data (plugin, sizeof(GsPluginData)); priv->task = pk_task_new (); pk_client_set_background (PK_CLIENT (priv->task), FALSE); pk_client_set_interactive (PK_CLIENT (priv->task), FALSE); pk_client_set_cache_age (PK_CLIENT (priv->task), G_MAXUINT); }
void gs_plugin_initialize (GsPlugin *plugin) { GsPluginData *priv = gs_plugin_alloc_data (plugin, sizeof(GsPluginData)); g_mutex_init (&priv->client_mutex); priv->client = pk_client_new (); pk_client_set_background (priv->client, FALSE); pk_client_set_cache_age (priv->client, G_MAXUINT); }
/** * gs_plugin_refresh: */ gboolean gs_plugin_refresh (GsPlugin *plugin, guint cache_age, GsPluginRefreshFlags flags, GCancellable *cancellable, GError **error) { PkBitfield filter; PkBitfield transaction_flags; ProgressData data; g_auto(GStrv) package_ids = NULL; g_autoptr(PkPackageSack) sack = NULL; g_autoptr(PkResults) results2 = NULL; g_autoptr(PkResults) results = NULL; /* not us */ if ((flags & GS_PLUGIN_REFRESH_FLAGS_UPDATES) == 0) return TRUE; /* cache age of 0 is user-initiated */ pk_client_set_background (PK_CLIENT (plugin->priv->task), cache_age > 0); data.plugin = plugin; data.ptask = NULL; /* update UI as this might take some time */ gs_plugin_status_update (plugin, NULL, GS_PLUGIN_STATUS_WAITING); /* do sync call */ filter = pk_bitfield_value (PK_FILTER_ENUM_NONE); pk_client_set_cache_age (PK_CLIENT (plugin->priv->task), cache_age); results = pk_client_get_updates (PK_CLIENT (plugin->priv->task), filter, cancellable, gs_plugin_packagekit_progress_cb, &data, error); if (results == NULL) return FALSE; /* download all the updates */ sack = pk_results_get_package_sack (results); if (pk_package_sack_get_size (sack) == 0) return TRUE; package_ids = pk_package_sack_get_ids (sack); transaction_flags = pk_bitfield_value (PK_TRANSACTION_FLAG_ENUM_ONLY_DOWNLOAD); results2 = pk_client_update_packages (PK_CLIENT (plugin->priv->task), transaction_flags, package_ids, cancellable, gs_plugin_packagekit_progress_cb, &data, error); return results2 != NULL; }