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); }
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); }
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); }
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; }