コード例 #1
0
ファイル: lv_hashlist.c プロジェクト: Libvisual/DroidVisuals
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;
}
コード例 #2
0
/* 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;
}
コード例 #3
0
ファイル: lv_param.c プロジェクト: Starlon/StarVisuals-And
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 (&param->pal);

    visual_collection_destroy (VISUAL_COLLECTION (&param->callbacks));

    param->string = NULL;
    param->name = NULL;
    param->objdata = NULL;
    param->annotation = NULL;

    return VISUAL_OK;
}
コード例 #4
0
ファイル: lv_param.c プロジェクト: ystk/debian-libvisual
static int param_container_dtor (VisObject *object)
{
	VisParamContainer *paramcontainer = VISUAL_PARAMCONTAINER (object);

	visual_collection_destroy (VISUAL_COLLECTION (&paramcontainer->entries));

	return VISUAL_OK;
}
コード例 #5
0
ファイル: lv_collection.c プロジェクト: Denyufka/LibVisual
int visual_collection_dtor (VisObject *object)
{
	VisCollection *collection = VISUAL_COLLECTION (object);

	collection->destroyfunc (collection);

	return VISUAL_OK;
}
コード例 #6
0
ファイル: lv_param.c プロジェクト: ystk/debian-libvisual
/**
 * 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 (&paramcontainer->entries), visual_object_collection_destroyer);

	return paramcontainer;
}
コード例 #7
0
ファイル: lv_param.c プロジェクト: ystk/debian-libvisual
/**
 * 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 (&param->callbacks), visual_object_collection_destroyer);

	return param;
}
コード例 #8
0
ファイル: lv_hashlist.c プロジェクト: Libvisual/DroidVisuals
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;
}
コード例 #9
0
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");
}
コード例 #10
0
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;
}
コード例 #11
0
ファイル: lv_hashlist.c プロジェクト: Libvisual/DroidVisuals
static VisCollectionIter *hashlist_iter (VisCollection *collection)
{
	VisHashlist *hashlist = VISUAL_HASHLIST (collection);

	return visual_collection_get_iter (VISUAL_COLLECTION (hashlist->list));
}
コード例 #12
0
ファイル: lv_hashlist.c プロジェクト: Libvisual/DroidVisuals
static int hashlist_size (VisCollection *collection)
{
	VisHashlist *hashlist = VISUAL_HASHLIST (collection);

	return visual_collection_size (VISUAL_COLLECTION (hashlist->list));
}
コード例 #13
0
ファイル: lv_hashlist.c プロジェクト: Libvisual/DroidVisuals
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));
}