Ejemplo n.º 1
0
/**
 * ide_device_provider_get_devices:
 *
 * Retrieves a list of devices currently managed by @provider.
 *
 * Returns: (transfer container) (element-type IdeDevice*): A #GPtrArray of
 *  #IdeDevice instances.
 */
GPtrArray *
ide_device_provider_get_devices (IdeDeviceProvider *provider)
{
  g_return_val_if_fail (IDE_IS_DEVICE_PROVIDER (provider), NULL);

  return IDE_DEVICE_PROVIDER_GET_IFACE (provider)->get_devices (provider);
}
Ejemplo n.º 2
0
void
ide_device_provider_emit_device_removed (IdeDeviceProvider *provider,
                                         IdeDevice         *device)
{
  g_return_if_fail (IDE_IS_DEVICE_PROVIDER (provider));
  g_return_if_fail (IDE_IS_DEVICE (device));

  g_signal_emit (provider, signals [DEVICE_REMOVED], 0, device);
}
Ejemplo n.º 3
0
/**
 * ide_device_provider_load_finish:
 * @self: an #IdeDeviceProvider
 * @result: a #GAsyncResult provided to callback
 * @error: a location for a #GError, or %NULL
 *
 * Completes an asynchronous request to load known devices via
 * ide_device_provider_load_async().
 *
 * Returns: %TRUE if successful; otherwise %FALSE and @error is set.
 *
 * Since: 3.32
 */
gboolean
ide_device_provider_load_finish (IdeDeviceProvider  *self,
                                 GAsyncResult       *result,
                                 GError            **error)
{
  g_return_val_if_fail (IDE_IS_DEVICE_PROVIDER (self), FALSE);
  g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE);

  return IDE_DEVICE_PROVIDER_GET_CLASS (self)->load_finish (self, result, error);
}
Ejemplo n.º 4
0
gboolean
ide_device_provider_get_settled (IdeDeviceProvider *provider)
{
  gboolean settled = FALSE;

  g_return_val_if_fail (IDE_IS_DEVICE_PROVIDER (provider), FALSE);

  g_object_get (provider, "settled", &settled, NULL);

  return settled;
}
Ejemplo n.º 5
0
/**
 * ide_device_provider_load_async:
 * @self: an #IdeDeviceProvider
 * @cancellable: (nullable): a #GCancellable or %NULL
 * @callback: (nullable): a #GAsyncReadyCallback to execute upon completion
 * @user_data: closure data for @callback
 *
 * Requests that the #IdeDeviceProvider asynchronously load any known devices.
 *
 * This should only be called once on an #IdeDeviceProvider. It is an error
 * to call this function more than once for a single #IdeDeviceProvider.
 *
 * #IdeDeviceProvider implementations are expected to emit the
 * #IdeDeviceProvider::device-added signal for each device they've discovered.
 * That should be done for known devices before returning from the asynchronous
 * operation so that the device manager does not need to wait for additional
 * devices to enter the "settled" state.
 *
 * Since: 3.32
 */
void
ide_device_provider_load_async (IdeDeviceProvider   *self,
                                GCancellable        *cancellable,
                                GAsyncReadyCallback  callback,
                                gpointer             user_data)
{
  g_return_if_fail (IDE_IS_DEVICE_PROVIDER (self));
  g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));

  IDE_DEVICE_PROVIDER_GET_CLASS (self)->load_async (self, cancellable, callback, user_data);
}
Ejemplo n.º 6
0
static void
ide_device_provider_real_device_added (IdeDeviceProvider *self,
                                       IdeDevice         *device)
{
  IdeDeviceProviderPrivate *priv = ide_device_provider_get_instance_private (self);

  g_assert (IDE_IS_DEVICE_PROVIDER (self));
  g_assert (IDE_IS_DEVICE (device));

  if (priv->devices == NULL)
    priv->devices = g_ptr_array_new_with_free_func (g_object_unref);
  g_ptr_array_add (priv->devices, g_object_ref (device));
}
Ejemplo n.º 7
0
static void
ide_device_provider_real_device_removed (IdeDeviceProvider *self,
                                         IdeDevice         *device)
{
  IdeDeviceProviderPrivate *priv = ide_device_provider_get_instance_private (self);

  g_assert (IDE_IS_DEVICE_PROVIDER (self));
  g_assert (IDE_IS_DEVICE (device));

  /* Maybe we just disposed */
  if (priv->devices == NULL)
    return;

  if (!g_ptr_array_remove (priv->devices, device))
    g_warning ("No such device \"%s\" found in \"%s\"",
               G_OBJECT_TYPE_NAME (device),
               G_OBJECT_TYPE_NAME (self));
}
Ejemplo n.º 8
0
/**
 * ide_device_provider_get_devices:
 * @self: an #IdeDeviceProvider
 *
 * Gets a new #GPtrArray containing a list of #IdeDevice instances that were
 * registered by the #IdeDeviceProvider
 *
 * Returns: (transfer full) (element-type Ide.Device) (not nullable):
 *   a #GPtrArray of #IdeDevice.
 *
 * Since: 3.32
 */
GPtrArray *
ide_device_provider_get_devices (IdeDeviceProvider *self)
{
  IdeDeviceProviderPrivate *priv = ide_device_provider_get_instance_private (self);
  g_autoptr(GPtrArray) devices = NULL;

  g_return_val_if_fail (IDE_IS_DEVICE_PROVIDER (self), NULL);

  devices = g_ptr_array_new ();

  if (priv->devices != NULL)
    {
      for (guint i = 0; i < priv->devices->len; i++)
        g_ptr_array_add (devices, g_object_ref (g_ptr_array_index (priv->devices, i)));
    }

  return g_steal_pointer (&devices);
}