static void
kms_dispatcher_finalize (GObject * object)
{
  KmsDispatcher *self = KMS_DISPATCHER (object);

  GST_DEBUG_OBJECT (self, "finalize");

  G_OBJECT_CLASS (kms_dispatcher_parent_class)->finalize (object);
  g_rec_mutex_clear (&self->priv->mutex);
}
Esempio n. 2
0
static void
kms_dispatcher_unhandle_port (KmsBaseHub * hub, gint id)
{
  KmsDispatcher *self = KMS_DISPATCHER (hub);

  KMS_DISPATCHER_LOCK (self);

  g_hash_table_remove (self->priv->ports, &id);

  KMS_DISPATCHER_UNLOCK (self);

  KMS_BASE_HUB_CLASS (kms_dispatcher_parent_class)->unhandle_port (hub, id);
}
Esempio n. 3
0
static void
kms_dispatcher_dispose (GObject * object)
{
  KmsDispatcher *self = KMS_DISPATCHER (object);

  GST_DEBUG_OBJECT (self, "dispose");

  KMS_DISPATCHER_LOCK (self);
  if (self->priv->ports != NULL) {
    g_hash_table_remove_all (self->priv->ports);
    g_hash_table_unref (self->priv->ports);
    self->priv->ports = NULL;
  }
  KMS_DISPATCHER_UNLOCK (self);

  G_OBJECT_CLASS (kms_dispatcher_parent_class)->dispose (object);
}
Esempio n. 4
0
static gint
kms_dispatcher_handle_port (KmsBaseHub * hub, GstElement * mixer_port)
{
  KmsDispatcher *self = KMS_DISPATCHER (hub);
  KmsDispatcherPortData *port_data;
  gint port_id;

  port_id = KMS_BASE_HUB_CLASS (kms_dispatcher_parent_class)->handle_port (hub,
      mixer_port);

  if (port_id < 0)
    return -1;

  port_data = kms_dispatcher_port_data_create (self, port_id);

  KMS_DISPATCHER_LOCK (self);

  g_hash_table_insert (self->priv->ports, create_gint (port_id), port_data);

  KMS_DISPATCHER_UNLOCK (self);

  return port_id;
}