* cddax.c : CD digital audio input module for vlc using libcdio
*****************************************************************************
* Copyright (C) 2000,2003 VideoLAN
- * $Id: access.c,v 1.22 2004/01/07 07:21:31 rocky Exp $
+ * $Id: access.c,v 1.23 2004/01/29 17:51:07 zorglub Exp $
*
* Authors: Rocky Bernstein <rocky@panix.com>
* Laurent Aimar <fenrir@via.ecp.fr>
if ( str ) { \
dbg_print( INPUT_DBG_META, "field %s: %s\n", title, str); \
input_AddInfo( p_cat, _(title), "%s", str ); \
- playlist_AddInfo( p_playlist, -1, p_cat->psz_name, \
+ vlc_mutex_lock( &p_playlist->object_lock ); \
+ p_item = playlist_ItemGetByPos( p_playlist, -1 ); \
+ vlc_mutex_unlock( &p_playlist->object_lock ); \
+ vlc_mutex_lock( &p_item->lock ); \
+ playlist_ItemAddInfo( p_item, p_cat->psz_name, \
_(title), "%s" , str ); \
+ vlc_mutex_unlock( &p_item->lock ); \
}
playlist_t *p_playlist = vlc_object_find( p_input, VLC_OBJECT_PLAYLIST,
FIND_PARENT );
input_info_category_t *p_cat;
+ playlist_item_t *p_item;
p_cat = input_InfoCategory( p_input, "General" );
-
+
#ifdef HAVE_LIBCDDB
if (p_cdda->i_cddb_enabled) {
char *p_author;
char *p_title;
char *config_varname = MODULE_STRING "-title-format";
+ playlist_item_t *p_item;
#ifdef HAVE_LIBCDDB
if (p_cdda->i_cddb_enabled) {
dbg_print( INPUT_DBG_META, "mrl: %s, title: %s, duration, %ld, pos %d",
psz_mrl, p_title, (long int) i_duration / 1000000 , i_pos );
- playlist_AddWDuration( p_playlist, psz_mrl, p_title, playlist_operation,
- i_pos, i_duration );
+ playlist_AddExt( p_playlist, psz_mrl, p_title, playlist_operation,
+ i_pos, i_duration , NULL, 0);
if( i_pos == PLAYLIST_END ) i_pos = p_playlist->i_size - 1;
+ vlc_mutex_lock( &p_playlist->object_lock );
+ p_item = playlist_ItemGetByPos( p_playlist, i_pos );
+ vlc_mutex_unlock( &p_playlist->object_lock );
+ if( !p_item )
+ return;
+
+ vlc_mutex_lock( &p_item->lock );
+
p_author =
CDDAFormatStr( p_input, p_cdda,
config_GetPsz( p_input, MODULE_STRING "-author-format" ),
psz_mrl, i_track );
- playlist_AddInfo( p_playlist, i_pos, _("General"),_("Author"), p_author);
+ playlist_ItemAddInfo( p_item , _("General"),_("Author"), p_author);
#ifdef HAVE_LIBCDDB
if (p_cdda->i_cddb_enabled) {
const char *psz_general_cat = _("General");
- playlist_AddInfo( p_playlist, i_pos, psz_general_cat, _("Album"),
- "%s", p_cdda->cddb.disc->title);
- playlist_AddInfo( p_playlist, i_pos, psz_general_cat, _("Disc Artist(s)"),
- "%s", p_cdda->cddb.disc->artist);
- playlist_AddInfo( p_playlist, i_pos, psz_general_cat,
- _("CDDB Disc Category"),
- "%s", CDDB_CATEGORY[p_cdda->cddb.disc->category]);
- playlist_AddInfo( p_playlist, i_pos, psz_general_cat, _("Genre"),
- "%s", p_cdda->cddb.disc->genre);
+ playlist_ItemAddInfo( p_item, psz_general_cat, _("Album"),
+ "%s", p_cdda->cddb.disc->title);
+ playlist_ItemAddInfo( p_item, psz_general_cat, _("Disc Artist(s)"),
+ "%s", p_cdda->cddb.disc->artist);
+ playlist_ItemAddInfo( p_item, psz_general_cat,
+ _("CDDB Disc Category"),
+ "%s", CDDB_CATEGORY[p_cdda->cddb.disc->category]);
+ playlist_ItemAddInfo( p_item, psz_general_cat, _("Genre"),
+ "%s", p_cdda->cddb.disc->genre);
if ( p_cdda->cddb.disc->discid ) {
- playlist_AddInfo( p_playlist, i_pos, psz_general_cat, _("CDDB Disc ID"),
- "%x", p_cdda->cddb.disc->discid );
+ playlist_ItemAddInfo( p_item, psz_general_cat, _("CDDB Disc ID"),
+ "%x", p_cdda->cddb.disc->discid );
}
if (p_cdda->cddb.disc->year != 0) {
- playlist_AddInfo( p_playlist, i_pos, psz_general_cat,
- _("Year"), "%5d", p_cdda->cddb.disc->year );
+ playlist_ItemAddInfo( p_item, psz_general_cat,
+ _("Year"), "%5d", p_cdda->cddb.disc->year );
}
if (p_cdda->i_cddb_enabled) {
cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc,
- i_track-1);
+ i_track-1);
if (t != NULL && t->artist != NULL) {
- playlist_AddInfo( p_playlist, i_pos, psz_general_cat,
- _("Track Artist"), "%s", t->artist );
- playlist_AddInfo( p_playlist, i_pos, psz_general_cat,
- _("Track Title"), "%s", t->title );
+ playlist_ItemAddInfo( p_item, psz_general_cat,
+ _("Track Artist"), "%s", t->artist );
+ playlist_ItemAddInfo( p_item , psz_general_cat,
+ _("Track Title"), "%s", t->title );
}
}
}
#endif /*HAVE_LIBCDDB*/
+ vlc_mutex_unlock( &p_item->lock );
}
static int