/* main thread only */ static gboolean cdaudio_init (void) { mutex = g_mutex_new (); mlp_config_set_defaults ("CDDA", cdaudio_defaults); cdng_cfg.use_cdtext = mlp_get_bool ("CDDA", "use_cdtext"); cdng_cfg.use_cddb = mlp_get_bool ("CDDA", "use_cddb"); cdng_cfg.device = mlp_get_string ("CDDA", "device"); cdng_cfg.cddb_server = mlp_get_string ("CDDA", "cddbserver"); cdng_cfg.cddb_path = mlp_get_string ("CDDA", "cddbpath"); cdng_cfg.cddb_port = mlp_get_int ("CDDA", "cddbport"); cdng_cfg.cddb_http = mlp_get_bool ("CDDA", "cddbhttp"); cdng_cfg.disc_speed = mlp_get_int ("CDDA", "disc_speed"); cdng_cfg.disc_speed = CLAMP (cdng_cfg.disc_speed, MIN_DISC_SPEED, MAX_DISC_SPEED); cdng_cfg.use_proxy = mlp_get_bool (NULL, "use_proxy"); cdng_cfg.proxy_host = mlp_get_string (NULL, "proxy_host"); cdng_cfg.proxy_port = mlp_get_int (NULL, "proxy_port"); cdng_cfg.proxy_username = mlp_get_string (NULL, "proxy_user"); cdng_cfg.proxy_password = mlp_get_string (NULL, "proxy_pass"); if (!cdio_init ()) { cdaudio_error ("Failed to initialize cdio subsystem."); return FALSE; } libcddb_init (); return TRUE; }
static void parse_cddb (cdda_t *cd) { cddb_disc_t *disc; cddb_conn_t *conn; int res; if (!cd) return; libcddb_init (); conn = cddb_new (); disc = cddb_disc_new (); cddb_disc_set_category_str (disc, "misc"); cddb_disc_set_discid (disc, cd->id); res = cddb_read (conn, disc); if (!res) goto err_cddb_read; cd_get_metadata (cd, disc); cd_get_tracks (cd, disc); err_cddb_read: cddb_disc_destroy (disc); libcddb_shutdown (); }