static void
photos_dlna_renderers_manager_renderer_new_cb (GObject      *source_object,
                                               GAsyncResult *res,
                                               gpointer      user_data)
{
  PhotosDlnaRenderersManager *self = PHOTOS_DLNA_RENDERERS_MANAGER (user_data);
  PhotosDlnaRenderersManagerPrivate *priv = self->priv;
  PhotosDlnaRenderer *renderer;
  const gchar *object_path;
  GError *error = NULL;

  renderer = photos_dlna_renderer_new_for_bus_finish (res, &error);
  if (error != NULL)
    {
      g_warning ("Unable to load renderer object: %s", error->message);
      g_propagate_error (&priv->error, error);
      return;
    }

  object_path = photos_dlna_renderer_get_object_path (renderer);
  g_debug ("%s '%s' %s %s", G_STRFUNC,
           photos_dlna_renderer_get_friendly_name (renderer),
           photos_dlna_renderer_get_udn (renderer),
           object_path);
  g_hash_table_insert (priv->renderers, (gpointer) object_path, renderer);
  g_signal_emit (self, signals[RENDERER_FOUND], 0, renderer);
}
static void
photos_dlna_renderers_manager_dispose (GObject *object)
{
  PhotosDlnaRenderersManager *self = PHOTOS_DLNA_RENDERERS_MANAGER (object);

  g_clear_object (&self->proxy);
  g_clear_pointer (&self->renderers, (GDestroyNotify) g_hash_table_unref);
  g_clear_error (&self->error);

  G_OBJECT_CLASS (photos_dlna_renderers_manager_parent_class)->dispose (object);
}