65
65
G_DEFINE_TYPE (BraseroPK, brasero_pk, G_TYPE_OBJECT);
68
brasero_pk_install_missing_files_result (DBusGProxy *proxy,
68
brasero_pk_install_missing_files_result (GObject *source_object,
70
70
gpointer user_data)
72
72
GError *error = NULL;
73
73
BraseroPKPrivate *priv = BRASERO_PK_PRIVATE (user_data);
76
priv->res = dbus_g_proxy_end_call (proxy,
75
priv->proxy = G_DBUS_PROXY (source_object);
77
priv->values = g_dbus_proxy_call_finish (priv->proxy,
81
if (priv->values == NULL) {
81
82
BRASERO_UTILS_LOG ("%s", error->message);
82
83
g_error_free (error);
85
g_main_loop_quit (priv->loop);
86
if (priv->values != NULL)
87
g_variant_unref (priv->values);
88
g_object_unref (priv->proxy);
89
92
brasero_pk_cancelled (GCancellable *cancel,
90
93
BraseroPK *package)
92
96
BraseroPKPrivate *priv = BRASERO_PK_PRIVATE (package);
97
dbus_g_proxy_cancel_call (priv->proxy, priv->call);
101
g_dbus_proxy_call_finish (priv->proxy,
100
106
g_main_loop_quit (priv->loop);
139
145
priv = BRASERO_PK_PRIVATE (package);
141
147
/* check dbus connections, exit if not valid */
142
priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
148
priv->connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
143
149
if (priv->connection == NULL) {
144
150
BRASERO_UTILS_LOG ("%s", error->message);
148
154
/* get a connection */
149
priv->proxy = dbus_g_proxy_new_for_name (priv->connection,
150
"org.freedesktop.PackageKit",
151
"/org/freedesktop/PackageKit",
152
"org.freedesktop.PackageKit.Modify");
155
priv->proxy = g_dbus_proxy_new_sync (priv->connection,
156
G_DBUS_PROXY_FLAGS_NONE,
158
"org.freedesktop.PackageKit",
159
"/org/freedesktop/PackageKit",
160
"org.freedesktop.PackageKit.Modify",
153
163
if (priv->proxy == NULL) {
154
164
BRASERO_UTILS_LOG ("Cannot connect to session service");
158
168
/* don't timeout, as dbus-glib sets the timeout ~25 seconds */
159
dbus_g_proxy_set_default_timeout (priv->proxy, INT_MAX);
169
g_dbus_proxy_set_default_timeout (priv->proxy, INT_MAX);
199
209
brasero_pk_install_gstreamer_plugin (BraseroPK *package,
200
210
const gchar *element_name,
202
GCancellable *cancel)
212
GCancellable *cancel)
204
214
GstInstallPluginsContext *context;
205
215
GPtrArray *gst_plugins = NULL;
246
256
if (!brasero_pk_connect (package))
249
priv->call = dbus_g_proxy_begin_call_with_timeout (priv->proxy, "InstallProvideFiles",
250
brasero_pk_install_missing_files_result,
255
G_TYPE_STRV, missing_files->pdata,
256
G_TYPE_STRING, "hide-finished,hide-warnings",
259
g_dbus_proxy_call (priv->proxy,
260
"InstallProvideFiles",
261
g_variant_new ("(uass)",
264
"hide-confirm-search,hide-finished,hide-warning"),
265
G_DBUS_CALL_FLAGS_NONE,
268
brasero_pk_install_missing_files_result,
259
271
return brasero_pk_wait_for_call_end (package, cancel);
392
403
g_ptr_array_add (missing_files, resource);
393
404
g_ptr_array_add (missing_files, NULL);
395
res = brasero_pk_install_file_requirement (package, missing_files, xid, cancel);
406
priv->res = brasero_pk_install_file_requirement (package, missing_files, xid, cancel);
398
res = gst_update_registry ();
409
priv->res = gst_update_registry ();
400
411
g_strfreev ((gchar **) missing_files->pdata);
401
412
g_ptr_array_free (missing_files, FALSE);
411
422
brasero_pk_finalize (GObject *object)
424
GError *error = NULL;
413
425
BraseroPKPrivate *priv;
415
427
priv = BRASERO_PK_PRIVATE (object);
418
dbus_g_proxy_cancel_call (priv->proxy, priv->call);
430
g_dbus_proxy_call_finish (priv->proxy, priv->result, &error);
421
433
g_main_loop_quit (priv->loop);