}
/** @brief Called when a namepart lookup has completed */
-static void namepart_completed(void *v, const char *error, const char *value) {
+static void namepart_completed(void *v, const char *err, const char *value) {
D(("namepart_completed"));
- if(error) {
- gtk_label_set_text(GTK_LABEL(report_label), error);
+ if(err) {
+ gtk_label_set_text(GTK_LABEL(report_label), err);
value = "?";
}
const char *key = v;
}
/** @brief Called when a length lookup has completed */
-static void length_completed(void *v, const char *error, long l) {
+static void length_completed(void *v, const char *err, long l) {
D(("length_completed"));
- if(error) {
- gtk_label_set_text(GTK_LABEL(report_label), error);
+ if(err) {
+ gtk_label_set_text(GTK_LABEL(report_label), err);
l = -1;
}
const char *key = v;
const char *part,
const char *key) {
D(("namepart_fill %s %s %s %s", track, context, part, key));
- /* We limit the total number of lookups in flight */
++namepart_lookups_outstanding;
D(("namepart_lookups_outstanding -> %d\n", namepart_lookups_outstanding));
disorder_eclient_namepart(client, namepart_completed,
return -1;
}
+/** @brief Resolve a track name
+ *
+ * Returns the supplied track name if it doesn't have the answer yet.
+ */
+char *namepart_resolve(const char *track) {
+ char *key;
+
+ byte_xasprintf(&key, "resolve track=%s", track);
+ const char *value = cache_get(&cachetype_string, key);
+ if(!value) {
+ D(("deferring..."));
+ ++namepart_lookups_outstanding;
+ D(("namepart_lookups_outstanding -> %d\n", namepart_lookups_outstanding));
+ disorder_eclient_resolve(client, namepart_completed,
+ track, (void *)key);
+ value = track;
+ }
+ return xstrdup(value);
+}
/*
Local Variables: