--- a/src/conky.c 2010-10-05 23:29:36.000000000 +0200 +++ b/src/conky.c 2010-10-07 08:50:15.000000000 +0200 @@ -2028,6 +2028,27 @@ OBJ(xmms2_album) { snprintf(p, p_max_size, "%s", cur->xmms2.album); } + /* Beginning of classical music tags patch */ + /* It adds composer, conductor, opus, originaldate, part, performer */ + OBJ(xmms2_composer) { + snprintf(p, p_max_size, "%s", cur->xmms2.composer); + } + OBJ(xmms2_conductor) { + snprintf(p, p_max_size, "%s", cur->xmms2.conductor); + } + OBJ(xmms2_opus) { + snprintf(p, p_max_size, "%s", cur->xmms2.opus); + } + OBJ(xmms2_originaldate) { + snprintf(p, p_max_size, "%s", cur->xmms2.originaldate); + } + OBJ(xmms2_part) { + snprintf(p, p_max_size, "%s", cur->xmms2.part); + } + OBJ(xmms2_performer) { + snprintf(p, p_max_size, "%s", cur->xmms2.performer); + } + /* End of classical music tags patch */ OBJ(xmms2_title) { snprintf(p, p_max_size, "%s", cur->xmms2.title); } @@ -4274,6 +4295,14 @@ #ifdef XMMS2 info.xmms2.artist = NULL; info.xmms2.album = NULL; + /* Beginning of classical music tags patch */ + info.xmms2.composer = NULL; + info.xmms2.conductor = NULL; + info.xmms2.opus = NULL; + info.xmms2.originaldate = NULL; + info.xmms2.part = NULL; + info.xmms2.performer = NULL; + /* End of classical music tags patch */ info.xmms2.title = NULL; info.xmms2.genre = NULL; info.xmms2.comment = NULL; --- a/src/core.c 2010-10-05 23:29:36.000000000 +0200 +++ b/src/core.c 2010-10-07 08:55:45.000000000 +0200 @@ -954,6 +954,14 @@ #ifdef XMMS2 END OBJ(xmms2_artist, &update_xmms2) END OBJ(xmms2_album, &update_xmms2) + /* Begin classical music tags patch */ + END OBJ(xmms2_conductor, &update_xmms2) + END OBJ(xmms2_composer, &update_xmms2) + END OBJ(xmms2_opus, &update_xmms2) + END OBJ(xmms2_originaldate, &update_xmms2) + END OBJ(xmms2_part, &update_xmms2) + END OBJ(xmms2_performer, &update_xmms2) + /* End classical music tags patch */ END OBJ(xmms2_title, &update_xmms2) END OBJ(xmms2_genre, &update_xmms2) END OBJ(xmms2_comment, &update_xmms2) @@ -1534,12 +1542,50 @@ info.xmms2.album = 0; } break; - case OBJ_xmms2_title: + case OBJ_xmms2_title: if (info.xmms2.title) { free(info.xmms2.title); info.xmms2.title = 0; } break; + /* Beginning of classical music tags patch */ + case OBJ_xmms2_conductor: + if (info.xmms2.conductor) { + free(info.xmms2.conductor); + info.xmms2.conductor = 0; + } + break; + case OBJ_xmms2_composer: + if (info.xmms2.composer) { + free(info.xmms2.composer); + info.xmms2.composer = 0; + } + break; + case OBJ_xmms2_opus: + if (info.xmms2.opus) { + free(info.xmms2.opus); + info.xmms2.opus = 0; + } + break; + case OBJ_xmms2_originaldate: + if (info.xmms2.originaldate) { + free(info.xmms2.originaldate); + info.xmms2.originaldate = 0; + } + break; + case OBJ_xmms2_part: + if (info.xmms2.part) { + free(info.xmms2.part); + info.xmms2.part = 0; + } + break; + case OBJ_xmms2_performer: + if (info.xmms2.performer) { + free(info.xmms2.performer); + info.xmms2.performer = 0; + } + break; + /* End of classical music tags patch */ case OBJ_xmms2_genre: if (info.xmms2.genre) { free(info.xmms2.genre); --- a/src/text_object.h 2010-10-05 23:29:36.000000000 +0200 +++ b/src/text_object.h 2010-10-07 08:57:20.000000000 +0200 @@ -359,6 +359,14 @@ OBJ_xmms2_artist, OBJ_xmms2_album, OBJ_xmms2_title, + /* Beginning of classical music tags patch */ + OBJ_xmms2_conductor, + OBJ_xmms2_composer, + OBJ_xmms2_opus, + OBJ_xmms2_originaldate, + OBJ_xmms2_part, + OBJ_xmms2_performer, + /* End of classical music tags patch */ OBJ_xmms2_genre, OBJ_xmms2_comment, OBJ_xmms2_url, --- a/src/xmms2.c 2010-10-05 23:29:36.000000000 +0200 +++ b/src/xmms2.c 2010-10-10 22:00:32.000000000 +0200 @@ -49,7 +49,26 @@ if (ptr->xmms2.title == NULL) { ptr->xmms2.title = malloc(text_buffer_size); } - + /* Beginning of classical music tags patch */ + if (ptr->xmms2.conductor == NULL) { + ptr->xmms2.conductor = malloc(text_buffer_size); + } + if (ptr->xmms2.composer == NULL) { + ptr->xmms2.composer = malloc(text_buffer_size); + } + if (ptr->xmms2.opus == NULL) { + ptr->xmms2.opus = malloc(text_buffer_size); + } + if (ptr->xmms2.originaldate == NULL) { + ptr->xmms2.originaldate = malloc(text_buffer_size); + } + if (ptr->xmms2.part == NULL) { + ptr->xmms2.part = malloc(text_buffer_size); + } + if (ptr->xmms2.performer == NULL) { + ptr->xmms2.performer = malloc(text_buffer_size); + } + /* End of classical music tags patch */ if (ptr->xmms2.genre == NULL) { ptr->xmms2.genre = malloc(text_buffer_size); } @@ -69,6 +88,14 @@ ptr->xmms2.artist[0] = '\0'; ptr->xmms2.album[0] = '\0'; ptr->xmms2.title[0] = '\0'; + /* Beginning of classical music tags patch */ + ptr->xmms2.conductor[0] = '\0'; + ptr->xmms2.composer[0] = '\0'; + ptr->xmms2.opus[0] = '\0'; + ptr->xmms2.originaldate[0] = '\0'; + ptr->xmms2.part[0] = '\0'; + ptr->xmms2.performer[0] = '\0'; + /* End of classical music tags patch */ ptr->xmms2.genre[0] = '\0'; ptr->xmms2.comment[0] = '\0'; ptr->xmms2.url[0] = '\0'; @@ -138,7 +165,20 @@ if (xmmsv_dict_get(infos, "title", &dict_entry) && xmmsv_get_string(dict_entry, &charval)) strncpy(ptr->xmms2.title, charval, text_buffer_size - 1); - + /* Beginning of classical music tags patch */ + if (xmmsv_dict_get(infos, "conductor", &dict_entry) && xmmsv_get_string(dict_entry, &charval)) + strncpy(ptr->xmms2.conductor, charval, text_buffer_size - 1); + if (xmmsv_dict_get(infos, "composer", &dict_entry) && xmmsv_get_string(dict_entry, &charval)) + strncpy(ptr->xmms2.composer, charval, text_buffer_size - 1); + if (xmmsv_dict_get(infos, "opus", &dict_entry) && xmmsv_get_string(dict_entry, &charval)) + strncpy(ptr->xmms2.opus, charval, text_buffer_size - 1); + if (xmmsv_dict_get(infos, "originaldate", &dict_entry) && xmmsv_get_string(dict_entry, &charval)) + strncpy(ptr->xmms2.originaldate, charval, text_buffer_size - 1); + if (xmmsv_dict_get(infos, "part", &dict_entry) && xmmsv_get_string(dict_entry, &charval)) + strncpy(ptr->xmms2.part, charval, text_buffer_size - 1); + if (xmmsv_dict_get(infos, "performer", &dict_entry) && xmmsv_get_string(dict_entry, &charval)) + strncpy(ptr->xmms2.performer, charval, text_buffer_size - 1); + /* End of classical music tags patch */ if (xmmsv_dict_get(infos, "album", &dict_entry) && xmmsv_get_string(dict_entry, &charval)) strncpy(ptr->xmms2.album, charval, text_buffer_size - 1); @@ -223,7 +263,6 @@ break; case XMMS_PLAYBACK_STATUS_STOP: strncpy(ptr->xmms2.status, "Stopped", text_buffer_size - 1); - ptr->xmms2.elapsed = ptr->xmms2.progress = ptr->xmms2.percent = 0; break; default: strncpy(ptr->xmms2.status, "Unknown", text_buffer_size - 1); @@ -321,5 +360,3 @@ } return 0; } - - --- a/src/xmms2.h 2010-10-05 23:29:36.000000000 +0200 +++ b/src/xmms2.h 2010-10-10 22:06:09.000000000 +0200 @@ -35,6 +35,14 @@ char *artist; char *album; char *title; + /* Beginning of classical tags patch */ + char *conductor; + char *composer; + char *opus; + char *originaldate; + char *part; + char *performer; + /* End of classical tags patch */ char *genre; char *comment; char *url;