~ubuntu-branches/ubuntu/intrepid/rhythmbox/intrepid

« back to all changes in this revision

Viewing changes to plugins/mtpdevice/rb-mtp-plugin.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2008-09-03 10:54:50 UTC
  • mfrom: (1.1.27 upstream)
  • Revision ID: james.westby@ubuntu.com-20080903105450-mslsln15n2ap6g7o
Tags: 0.11.6svn20080903-0ubuntu1
* New upstream snapshot:
  - doesn't crash when eject an audio player (lp: #263268)
* debian/patches/80_new_libmtp_build.patch:
  - the change is in the new version
* debian/rules:
  - don't specify a gecko variant that's not required in the new version

Show diffs side-by-side

added added

removed removed

Lines of Context:
90
90
 
91
91
static void rb_mtp_plugin_device_added (LibHalContext *context, const char *udi);
92
92
static void rb_mtp_plugin_device_removed (LibHalContext *context, const char *udi);
93
 
static void rb_mtp_plugin_setup_dbus_hal_connection (RBMtpPlugin *plugin);
 
93
static gboolean rb_mtp_plugin_setup_dbus_hal_connection (RBMtpPlugin *plugin);
94
94
 
95
95
static RBSource* create_source_cb (RBMtpPlugin *plugin, LIBMTP_mtpdevice_t *device, const char *udi);
96
96
/*static RBSource * create_source_cb (RBRemovableMediaManager *rmm,
168
168
        gtk_ui_manager_insert_action_group (uimanager, plugin->action_group, 0);
169
169
        file = rb_plugin_find_file (bplugin, "mtp-ui.xml");
170
170
        plugin->ui_merge_id = gtk_ui_manager_add_ui_from_file (uimanager, file, NULL);
171
 
 
172
 
        /*device detection*/
173
 
 
174
 
        rb_mtp_plugin_setup_dbus_hal_connection (plugin);
 
171
        g_object_unref (G_OBJECT (uimanager));
 
172
 
 
173
        /* device detection */
 
174
 
 
175
        if (rb_mtp_plugin_setup_dbus_hal_connection (plugin) == FALSE) {
 
176
                rb_debug ("not scanning for MTP devices because we couldn't get a HAL context");
 
177
                return;
 
178
        }
175
179
 
176
180
        rb_profile_start ("scanning for MTP devices");
177
181
        devices = libhal_get_all_devices (plugin->hal_context, &num, NULL);
203
207
        } else {
204
208
                rb_debug ("Couldn't list mtp devices");
205
209
        }
 
210
 
206
211
        libhal_free_string_array (devices);
207
212
        rb_profile_end ("scanning for MTP devices");
208
 
 
209
 
        g_object_unref (G_OBJECT (uimanager));
210
213
}
211
214
 
212
215
static void
214
217
{
215
218
        RBMtpPlugin *plugin = RB_MTP_PLUGIN (bplugin);
216
219
        GtkUIManager *uimanager = NULL;
217
 
        DBusError error;
218
220
 
219
221
        g_object_get (G_OBJECT (shell),
220
222
                      "ui-manager", &uimanager,
227
229
        g_list_free (plugin->mtp_sources);
228
230
        plugin->mtp_sources = NULL;
229
231
 
230
 
        dbus_error_init (&error);
231
 
        libhal_ctx_shutdown (plugin->hal_context, &error);
232
 
        libhal_ctx_free (plugin->hal_context);
233
 
        dbus_connection_unref (plugin->dbus_connection);
234
 
        dbus_error_free (&error);
 
232
        if (plugin->hal_context != NULL) {
 
233
                DBusError error;
 
234
                dbus_error_init (&error);
 
235
                libhal_ctx_shutdown (plugin->hal_context, &error);
 
236
                libhal_ctx_free (plugin->hal_context);
 
237
                dbus_error_free (&error);
 
238
 
 
239
                plugin->hal_context = NULL;
 
240
        }
 
241
 
 
242
        if (plugin->dbus_connection != NULL) {
 
243
                dbus_connection_unref (plugin->dbus_connection);
 
244
                plugin->dbus_connection = NULL;
 
245
        }
235
246
 
236
247
        g_object_unref (G_OBJECT (uimanager));
237
248
}
372
383
        }
373
384
}
374
385
 
375
 
static void
 
386
static gboolean
376
387
rb_mtp_plugin_setup_dbus_hal_connection (RBMtpPlugin *plugin)
377
388
{
378
389
        DBusError error;
381
392
        plugin->dbus_connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
382
393
        if (plugin->dbus_connection == NULL) {
383
394
                rb_debug ("error: dbus_bus_get: %s: %s\n", error.name, error.message);
384
 
                return;
 
395
                dbus_error_free (&error);
 
396
                return FALSE;
385
397
        }
386
398
 
387
399
        dbus_connection_setup_with_g_main (plugin->dbus_connection, NULL);
390
402
 
391
403
        plugin->hal_context = libhal_ctx_new ();
392
404
        if (plugin->hal_context == NULL) {
393
 
                return;
 
405
                dbus_error_free (&error);
 
406
                return FALSE;
394
407
        }
395
408
        libhal_ctx_set_dbus_connection (plugin->hal_context, plugin->dbus_connection);
396
409
 
402
415
        if (!libhal_ctx_init (plugin->hal_context, &error)) {
403
416
                rb_debug ("error: libhal_ctx_init: %s: %s\n", error.name, error.message);
404
417
                dbus_error_free (&error);
405
 
                return;
 
418
                return FALSE;
406
419
        }
407
420
 
408
421
        dbus_error_free (&error);
 
422
        return TRUE;
409
423
}
410
424