Tuple * xs_probe_for_tuple(const char *filename, VFSFile *fd) { Tuple *tuple; xs_tuneinfo_t *info; int tune = -1; pthread_mutex_lock(&xs_status_mutex); if (!xs_sidplayfp_probe(fd)) { pthread_mutex_unlock(&xs_status_mutex); return NULL; } pthread_mutex_unlock(&xs_status_mutex); /* Get information from URL */ tuple = tuple_new_from_filename (filename); tune = tuple_get_int (tuple, FIELD_SUBSONG_NUM); /* Get tune information from emulation engine */ pthread_mutex_lock(&xs_status_mutex); info = xs_sidplayfp_getinfo (filename); pthread_mutex_unlock(&xs_status_mutex); if (info == NULL) return tuple; xs_get_song_tuple_info(tuple, info, tune); if (xs_cfg.subAutoEnable && info->nsubTunes > 1 && ! tune) xs_fill_subtunes(tuple, info); xs_tuneinfo_free(info); return tuple; }
Tuple * xs_probe_for_tuple(const gchar *filename, xs_file_t *fd) { Tuple *tuple; xs_tuneinfo_t *info; gint tune = -1; if (xs_status.sidPlayer == NULL || filename == NULL) return NULL; XS_MUTEX_LOCK(xs_status); if (!xs_status.sidPlayer->plrProbe(fd)) { XS_MUTEX_UNLOCK(xs_status); return NULL; } XS_MUTEX_UNLOCK(xs_status); /* Get information from URL */ tuple = tuple_new_from_filename (filename); tune = tuple_get_int (tuple, FIELD_SUBSONG_NUM, NULL); /* Get tune information from emulation engine */ XS_MUTEX_LOCK(xs_status); info = xs_status.sidPlayer->plrGetSIDInfo (filename); XS_MUTEX_UNLOCK(xs_status); if (info == NULL) return tuple; xs_get_song_tuple_info(tuple, info, tune); if (xs_cfg.subAutoEnable && info->nsubTunes > 1 && ! tune) xs_fill_subtunes(tuple, info); xs_tuneinfo_free(info); return tuple; }