All pastes #955465 Raw Edit

Untitled

public text v1 · immutable
#955465 ·published 2008-03-24 17:29 UTC
rendered paste body

static void
set_stream_held (TpMediaStreamHandler *proxy,
                    gboolean held,
                    gpointer user_data,
                    GObject *object)
{
  TpStreamEngineStream *self = TP_STREAM_ENGINE_STREAM (object);

  g_assert (self->priv->fs_stream != NULL);

  DEBUG ("parent_channel = %p. Holding : %d", self->priv->parent_channel, held);

  if (held)
    {
      /* Hold the call */
      if (farsight_stream_hold (self->priv->fs_stream)) {
        tp_stream_engine_stream_held ();
        /* Send success message */
        if (self->priv->stream_handler_proxy)
          {
            tp_cli_media_stream_handler_call_hold_state (
                self->priv->stream_handler_proxy, -1, TRUE,
                async_method_callback, "Media.StreamHandler::HoldState",
                NULL, (GObject *) self);
          }
      } else {
        stop_stream (self);
        tp_stream_engine_stream_error (self, 0, "Error holding call");
      }
    }
  else
    {
      /* Make sure we have access to the resource */
      if (tp_stream_engine_get_unheld_call () == NULL ||
          tp_stream_engine_get_unheld_call () == self->priv->parent_channel) {
        /* Unhold the call */
        if (farsight_stream_unhold (self->priv->fs_stream)) {
          tp_stream_engine_stream_unheld (self->priv->parent_channel);
          /* Send success message */
          if (self->priv->stream_handler_proxy)
            {
              tp_cli_media_stream_handler_call_hold_state (
                  self->priv->stream_handler_proxy, -1, FALSE,
                  async_method_callback, "Media.StreamHandler::HoldState",
                  NULL, (GObject *) self);
            }
        } else {
          stop_stream (self);
          tp_stream_engine_stream_error (self, 0, "Error unholding call");
        }
      } else {
        /* Send failure message */
        if (self->priv->stream_handler_proxy)
          {
            tp_cli_media_stream_handler_call_unhold_failure (
                self->priv->stream_handler_proxy, -1,
                async_method_callback, "Media.StreamHandler::UnholdFailure",
                NULL, (GObject *) self);
          }
      }
    }
}