add: totem_playlist_add_mrl (totem->playlist, filename, NULL);
context: totem_action_drop_files (Totem *totem, GtkSelectionData *data,		gboolean empty_pl){	GList *list, *p, *file_list;	gboolean cleared = FALSE;	list = gnome_vfs_uri_list_parse (data->data);	if (list == NULL)		return FALSE;	p = list;	file_list = NULL;	while (p != NULL)	{		file_list = g_list_prepend (file_list, 				gnome_vfs_uri_to_string				((const GnomeVFSURI*)(p->data), 0));		p = p->next;	}	gnome_vfs_uri_list_free (list);	file_list = g_list_reverse (file_list);	if (file_list == NULL)		return FALSE;	for (p = file_list; p != NULL; p = p->next)	{		char *filename;		if (p->data == NULL)			continue;		/* We can't use g_filename_from_uri, as we don't know if		 * the uri is in locale or UTF8 encoding */		filename = gnome_vfs_get_local_path_from_uri (p->data);		if (filename == NULL)			filename = g_strdup (p->data);		if (filename != NULL && 				(g_file_test (filename, G_FILE_TEST_IS_REGULAR					| G_FILE_TEST_EXISTS)				|| strstr (filename, "://") != NULL))		{			if (empty_pl != FALSE && cleared == FALSE)			{				/* The function that calls us knows better				 * if we should be doing something with the 				 * changed playlist ... */				g_signal_handlers_disconnect_by_func					(G_OBJECT (totem->playlist),					 playlist_changed_cb, totem);				totem_playlist_clear (totem->playlist);				cleared = TRUE;			}			totem_playlist_add_mrl (totem->playlist, filename, NULL); 		}		g_free (filename);		g_free (p->data);	}	g_list_free (file_list);	/* ... and reconnect because we're nice people */	if (cleared != FALSE)	{		char *mrl;		g_signal_connect (G_OBJECT (totem->playlist),				"changed", G_CALLBACK (playlist_changed_cb),				totem);		mrl = totem_playlist_get_current_mrl (totem->playlist);		totem_action_set_mrl_and_play (totem, mrl);		g_free (mrl);	}	return TRUE;}