comparison src/audacious/playlist.c @ 4076:8f9966f00c98

deep copy is needed!
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Sat, 08 Dec 2007 02:14:10 +0900
parents 6f4ee8c0d0d7
children 96d8114f0b89
comparison
equal deleted inserted replaced
4075:6f4ee8c0d0d7 4076:8f9966f00c98
153 #define EXT_HAVE_SUBTUNE 2 153 #define EXT_HAVE_SUBTUNE 2
154 #define EXT_CUSTOM 3 154 #define EXT_CUSTOM 3
155 155
156 static gint filter_by_extension(const gchar *filename); 156 static gint filter_by_extension(const gchar *filename);
157 static gboolean is_http(const gchar *filename); 157 static gboolean is_http(const gchar *filename);
158 static gboolean do_precheck(Playlist *playlist, const gchar *uri, ProbeResult *pr); 158 static gboolean do_precheck(Playlist *playlist, const gchar *uri, ProbeResult **pr);
159 159
160 static mowgli_heap_t *playlist_entry_heap = NULL; 160 static mowgli_heap_t *playlist_entry_heap = NULL;
161 161
162 /* *********************** playlist entry code ********************** */ 162 /* *********************** playlist entry code ********************** */
163 163
779 playlist_load_ins(playlist, filename, pos); 779 playlist_load_ins(playlist, filename, pos);
780 playlist->loading_playlist = FALSE; 780 playlist->loading_playlist = FALSE;
781 return TRUE; 781 return TRUE;
782 } 782 }
783 783
784 if(do_precheck(playlist, filename, pr)) { 784 if(do_precheck(playlist, filename, &pr)) {
785 if(pr) { 785 if(pr) {
786 dec = pr->ip; 786 dec = pr->ip;
787 tuple = pr->tuple; 787 tuple = pr->tuple;
788 } 788 }
789 /* add filename to playlist */ 789 /* add filename to playlist */
1695 1695
1696 g_return_if_fail(uri != NULL); 1696 g_return_if_fail(uri != NULL);
1697 g_return_if_fail(playlist_name != NULL); 1697 g_return_if_fail(playlist_name != NULL);
1698 g_return_if_fail(playlist != NULL); 1698 g_return_if_fail(playlist != NULL);
1699 1699
1700 if(do_precheck(playlist, uri, pr)) { 1700 if(do_precheck(playlist, uri, &pr)) {
1701 __playlist_ins_file(playlist, uri, pos, NULL, title, len, pr ? pr->ip : NULL); 1701 __playlist_ins_file(playlist, uri, pos, NULL, title, len, pr ? pr->ip : NULL);
1702 } 1702 }
1703 g_free(pr); 1703 g_free(pr);
1704 } 1704 }
1705 1705
1714 1714
1715 g_return_if_fail(uri != NULL); 1715 g_return_if_fail(uri != NULL);
1716 g_return_if_fail(playlist_name != NULL); 1716 g_return_if_fail(playlist_name != NULL);
1717 g_return_if_fail(playlist != NULL); 1717 g_return_if_fail(playlist != NULL);
1718 1718
1719 if(do_precheck(playlist, uri, pr)) { 1719 if(do_precheck(playlist, uri, &pr)) {
1720 __playlist_ins_file(playlist, uri, pos, tuple, NULL, -1, pr ? pr->ip : NULL); 1720 __playlist_ins_file(playlist, uri, pos, tuple, NULL, -1, pr ? pr->ip : NULL);
1721 } 1721 }
1722 g_free(pr); 1722 g_free(pr);
1723 1723
1724 } 1724 }
1725 1725
1726 static gboolean 1726 static gboolean
1727 do_precheck(Playlist *playlist, const gchar *uri, ProbeResult *pr) 1727 do_precheck(Playlist *playlist, const gchar *uri, ProbeResult **pr)
1728 { 1728 {
1729 gint ext_flag = filter_by_extension(uri); 1729 gint ext_flag = filter_by_extension(uri);
1730 gboolean http_flag = is_http(uri); 1730 gboolean http_flag = is_http(uri);
1731 gboolean rv = FALSE; 1731 gboolean rv = FALSE;
1732 1732
1746 rv = TRUE; 1746 rv = TRUE;
1747 } 1747 }
1748 } 1748 }
1749 /* find decorder for local file */ 1749 /* find decorder for local file */
1750 else { 1750 else {
1751 pr = input_check_file(uri, TRUE); 1751 *pr = input_check_file(uri, TRUE);
1752 if(pr) { 1752 if(*pr) {
1753 AUDDBG("got pr\n"); 1753 AUDDBG("got pr\n");
1754 rv = TRUE; 1754 rv = TRUE;
1755 } 1755 }
1756 } 1756 }
1757 1757