int visual_hashlist_init (VisHashlist *hashlist, VisCollectionDestroyerFunc destroyer, int size) { visual_return_val_if_fail (hashlist != NULL, -VISUAL_ERROR_HASHLIST_NULL); /* Do the VisObject initialization */ visual_object_clear (VISUAL_OBJECT (hashlist)); visual_object_set_dtor (VISUAL_OBJECT (hashlist), visual_collection_dtor); visual_object_set_allocated (VISUAL_OBJECT (hashlist), FALSE); /* Set the VisCollection data */ visual_collection_set_destroyer (VISUAL_COLLECTION (hashlist), destroyer); visual_collection_set_destroy_func (VISUAL_COLLECTION (hashlist), hashlist_destroy); visual_collection_set_size_func (VISUAL_COLLECTION (hashlist), hashlist_size); visual_collection_set_iter_func (VISUAL_COLLECTION (hashlist), hashlist_iter); /* Set the VisHashlist data */ visual_hashlist_set_size (hashlist, size); hashlist->list = visual_list_new (NULL); hashlist->index = visual_hashmap_new (NULL); /* FIXME create in set_limits, rehash if not NULL */ visual_hashmap_set_table_size (hashlist->index, size); /* <- also */ return VISUAL_OK; }
/* Object destructors */ static int avs_data_serialize_container_dtor (VisObject *object) { AVSSerializeContainer *scont = AVS_SERIALIZE_CONTAINER (object); visual_collection_set_destroyer (VISUAL_COLLECTION (&scont->layout), visual_object_collection_destroyer); visual_collection_destroy (VISUAL_COLLECTION (&scont->layout)); return TRUE; }
static int param_entry_dtor (VisObject *object) { VisParamEntry *param = VISUAL_PARAMENTRY (object); if (param->string != NULL) visual_mem_free (param->string); if (param->name != NULL) visual_mem_free (param->name); if (param->objdata != NULL) visual_object_unref (param->objdata); if (param->annotation != NULL) visual_mem_free (param->annotation); visual_palette_free_colors (¶m->pal); visual_collection_destroy (VISUAL_COLLECTION (¶m->callbacks)); param->string = NULL; param->name = NULL; param->objdata = NULL; param->annotation = NULL; return VISUAL_OK; }
static int param_container_dtor (VisObject *object) { VisParamContainer *paramcontainer = VISUAL_PARAMCONTAINER (object); visual_collection_destroy (VISUAL_COLLECTION (¶mcontainer->entries)); return VISUAL_OK; }
int visual_collection_dtor (VisObject *object) { VisCollection *collection = VISUAL_COLLECTION (object); collection->destroyfunc (collection); return VISUAL_OK; }
/** * Creates a new VisParamContainer structure. * * @return A newly allocated VisParamContainer structure. */ VisParamContainer *visual_param_container_new () { VisParamContainer *paramcontainer; paramcontainer = visual_mem_new0 (VisParamContainer, 1); /* Do the VisObject initialization */ visual_object_initialize (VISUAL_OBJECT (paramcontainer), TRUE, param_container_dtor); visual_collection_set_destroyer (VISUAL_COLLECTION (¶mcontainer->entries), visual_object_collection_destroyer); return paramcontainer; }
/** * Creates a new VisParamEntry structure. * * @param name The name that is assigned to the VisParamEntry. * * @return A newly allocated VisParamEntry structure. */ VisParamEntry *visual_param_entry_new (char *name) { VisParamEntry *param; param = visual_mem_new0 (VisParamEntry, 1); /* Do the VisObject initialization */ visual_object_initialize (VISUAL_OBJECT (param), TRUE, param_entry_dtor); visual_param_entry_set_name (param, name); visual_collection_set_destroyer (VISUAL_COLLECTION (¶m->callbacks), visual_object_collection_destroyer); return param; }
int visual_hashlist_remove_list_entry (VisHashlist *hashlist, VisListEntry *le) { VisCollectionDestroyerFunc destroyer; VisHashlistEntry *hentry; visual_return_val_if_fail (hashlist != NULL, -VISUAL_ERROR_HASHLIST_NULL); visual_return_val_if_fail (le != NULL, -VISUAL_ERROR_LIST_ENTRY_NULL); hentry = le->data; visual_hashmap_remove_string (hashlist->index, hentry->key, FALSE); destroyer = visual_collection_get_destroyer (VISUAL_COLLECTION (hashlist)); if (destroyer != NULL) destroyer (hentry->data); visual_list_destroy (hashlist->list, &le); return VISUAL_OK; }
static void show_options (AVSElement *element) { return; VisParamEntry *param; VisHashmapChainEntry *mentry; VisCollectionIter *iter; if (element == NULL) return; printf ("Element options of element type: %d\n", element->type); iter = visual_collection_get_iter (VISUAL_COLLECTION (&element->pcont->entries)); while (visual_collection_iter_has_more (iter)) { printf("Bleh\n"); mentry = visual_collection_iter_get_data (iter); param = mentry->data; switch (param->type) { case VISUAL_PARAM_ENTRY_TYPE_NULL: printf ("\t%s: Type NULL\n", visual_param_entry_get_name (param)); break; case VISUAL_PARAM_ENTRY_TYPE_STRING: printf ("\t%s: Type STRING: %s\n", visual_param_entry_get_name (param), visual_param_entry_get_string (param)); break; case VISUAL_PARAM_ENTRY_TYPE_INTEGER: printf ("\t%s: Type INTEGER: %d\n", visual_param_entry_get_name (param), visual_param_entry_get_integer (param)); break; case VISUAL_PARAM_ENTRY_TYPE_FLOAT: printf ("\t%s: Type FLOAT: %f\n", visual_param_entry_get_name (param), visual_param_entry_get_float (param)); break; case VISUAL_PARAM_ENTRY_TYPE_DOUBLE: printf ("\t%s: Type DOUBLE: %f\n", visual_param_entry_get_name (param), visual_param_entry_get_double (param)); break; case VISUAL_PARAM_ENTRY_TYPE_COLOR: printf ("\t%s: Type COLOR: %d %d %d\n", visual_param_entry_get_name (param), param->color.r, param->color.g, param->color.b); break; case VISUAL_PARAM_ENTRY_TYPE_PALETTE: { int i; printf ("\t%s: Type PALETTE:\n", visual_param_entry_get_name (param)); for (i = 0; i < param->pal.ncolors; i++) { printf ("\t\tcolor[%d] %d %d %d\n", i, param->pal.colors[i].r, param->pal.colors[i].g, param->pal.colors[i].b); } } break; default: break; } } printf ("\n"); }
static gboolean plugin_init (GstPlugin * plugin) { guint i, count; VisList *list; GST_DEBUG_CATEGORY_INIT (libvisual_debug, "libvisual", 0, "libvisual audio visualisations"); #ifdef LIBVISUAL_PLUGINSBASEDIR gst_plugin_add_dependency_simple (plugin, "HOME/.libvisual/actor", LIBVISUAL_PLUGINSBASEDIR "/actor", NULL, GST_PLUGIN_DEPENDENCY_FLAG_NONE); #endif visual_log_set_verboseness (VISUAL_LOG_VERBOSENESS_LOW); visual_log_set_info_handler (libvisual_log_handler, (void *) GST_LEVEL_INFO); visual_log_set_warning_handler (libvisual_log_handler, (void *) GST_LEVEL_WARNING); visual_log_set_critical_handler (libvisual_log_handler, (void *) GST_LEVEL_ERROR); visual_log_set_error_handler (libvisual_log_handler, (void *) GST_LEVEL_ERROR); if (!visual_is_initialized ()) if (visual_init (NULL, NULL) != 0) return FALSE; list = visual_actor_get_list (); #if !defined(VISUAL_API_VERSION) count = visual_list_count (list); #elif VISUAL_API_VERSION >= 4000 && VISUAL_API_VERSION < 5000 count = visual_collection_size (VISUAL_COLLECTION (list)); #endif for (i = 0; i < count; i++) { VisPluginRef *ref = visual_list_get (list, i); VisPluginData *visplugin = NULL; gboolean skip = FALSE; GType type; gchar *name; GTypeInfo info = { sizeof (GstVisualClass), NULL, NULL, gst_visual_class_init, NULL, ref, sizeof (GstVisual), 0, NULL }; visplugin = visual_plugin_load (ref); if (ref->info->plugname == NULL) continue; /* Blacklist some plugins */ if (strcmp (ref->info->plugname, "gstreamer") == 0 || strcmp (ref->info->plugname, "gdkpixbuf") == 0) { skip = TRUE; } else { /* Ignore plugins that only support GL output for now */ skip = gst_visual_actor_plugin_is_gl (visplugin->info->plugin, visplugin->info->plugname); } visual_plugin_unload (visplugin); if (!skip) { name = g_strdup_printf ("GstVisual%s", ref->info->plugname); make_valid_name (name); type = g_type_register_static (GST_TYPE_VISUAL, name, &info, 0); g_free (name); name = g_strdup_printf ("libvisual_%s", ref->info->plugname); make_valid_name (name); if (!gst_element_register (plugin, name, GST_RANK_NONE, type)) { g_free (name); return FALSE; } g_free (name); } } return TRUE; }
static VisCollectionIter *hashlist_iter (VisCollection *collection) { VisHashlist *hashlist = VISUAL_HASHLIST (collection); return visual_collection_get_iter (VISUAL_COLLECTION (hashlist->list)); }
static int hashlist_size (VisCollection *collection) { VisHashlist *hashlist = VISUAL_HASHLIST (collection); return visual_collection_size (VISUAL_COLLECTION (hashlist->list)); }
int visual_hashlist_get_size (VisHashlist *hashlist) { visual_return_val_if_fail (hashlist != NULL, -VISUAL_ERROR_HASHLIST_NULL); return visual_collection_size (VISUAL_COLLECTION (hashlist->list)); }