Mercurial > audlegacy-plugins
changeset 1557:c8c725957643
make cuesheet plugin work again.
author | Yoshiki Yazawa <yaz@cc.rim.or.jp> |
---|---|
date | Sun, 02 Sep 2007 11:27:41 +0900 |
parents | 16b2bc9b9763 |
children | e5a0c508c025 |
files | src/cue/cuesheet.c |
diffstat | 1 files changed, 22 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cue/cuesheet.c Sun Sep 02 03:13:17 2007 +0100 +++ b/src/cue/cuesheet.c Sun Sep 02 11:27:41 2007 +0900 @@ -178,7 +178,7 @@ gint i; /* add the files, build cue urls, etc. */ - cache_cue_file(filename); + cache_cue_file(filename); //filename should be uri. for (i = 0; i < last_cue_track; i++) { @@ -203,10 +203,11 @@ static void play(InputPlayback *data) { - gchar *uri = data->filename; + gchar *uri = g_strdup(data->filename); #ifdef DEBUG g_print("play: playback = %p\n", data); + g_print("play: uri = %s\n", uri); #endif caller_ip = data; @@ -214,13 +215,13 @@ if (strncasecmp("cue://", uri, 6)) { gchar *tmp = g_strdup_printf("cue://%s?0", uri); - play_cue_uri(data, tmp); - g_free(tmp); - return; + g_free(uri); + uri = tmp; } play_thread = g_thread_self(); - data->set_pb_ready(data); + data->set_pb_ready(data); // it should be done in real input plugin? --yaz play_cue_uri(data, uri); + g_free(uri); uri = NULL; } static Tuple *get_tuple(gchar *uri) @@ -264,11 +265,13 @@ track = atoi(_path); } - cache_cue_file(path2); + cache_cue_file(path2); //path2 should be uri. if (cue_file == NULL) return NULL; - +#ifdef DEBUG + g_print("cue_file = %s\n", cue_file); +#endif pr = input_check_file(cue_file, FALSE); if (pr == NULL) return NULL; @@ -303,7 +306,8 @@ cue_tracks[track].performer : cue_performer); tuple_associate_string(out, "album", cue_title); tuple_associate_string(out, "genre", cue_genre); - tuple_associate_int(out, "year", atoi(cue_year)); + if(cue_year) + tuple_associate_int(out, "year", atoi(cue_year)); tuple_associate_int(out, "track-number", track + 1); return out; @@ -467,7 +471,7 @@ static void play_cue_uri(InputPlayback * data, gchar *uri) { - gchar *path2 = g_strdup(uri + 6); + gchar *path2 = g_strdup(uri + 6); // "cue://" is stripped. gchar *_path = strchr(path2, '?'); gint file_length = 0; gint track = 0; @@ -478,6 +482,7 @@ #ifdef DEBUG g_print("f: play_cue_uri\n"); g_print("play_cue_uri: playback = %p\n", data); + g_print("play_cue_uri: path2 = %s\n", path2); #endif /* stop watchdog thread */ @@ -493,7 +498,7 @@ track = atoi(_path); } cur_cue_track = track; - cache_cue_file(path2); + cache_cue_file(path2); //path2 should be uri. if (cue_file == NULL || !vfs_file_test(cue_file, G_FILE_TEST_EXISTS)) return; @@ -518,6 +523,12 @@ real_ip->output = data->output; real_ip->data = data->data; + /* we have to copy set_pb_ready things too. */ + real_ip->pb_ready_mutex = data->pb_ready_mutex; + real_ip->pb_ready_cond = data->pb_ready_cond; + real_ip->pb_ready_val = data->pb_ready_val; + real_ip->set_pb_ready = data->set_pb_ready; + real_play_thread = g_thread_create((GThreadFunc)(real_ip->plugin->play_file), (gpointer)real_ip, TRUE, NULL); g_usleep(50000); // wait for 50msec while real input plugin is initializing.