summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/playlist.c19
-rw-r--r--apps/playlist.h2
-rw-r--r--apps/tagcache.c57
3 files changed, 27 insertions, 51 deletions
diff --git a/apps/playlist.c b/apps/playlist.c
index dcf2fe1118..ea183d7552 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -575,7 +575,7 @@ static int add_indices_to_playlist(struct playlist_info* playlist,
575 playlist->indices[ playlist->amount ] = i+count; 575 playlist->indices[ playlist->amount ] = i+count;
576#ifdef HAVE_DIRCACHE 576#ifdef HAVE_DIRCACHE
577 if (playlist->filenames) 577 if (playlist->filenames)
578 playlist->filenames[ playlist->amount ] = NULL; 578 playlist->filenames[ playlist->amount ] = -1;
579#endif 579#endif
580 playlist->amount++; 580 playlist->amount++;
581 } 581 }
@@ -816,7 +816,7 @@ static int add_track_to_playlist(struct playlist_info* playlist,
816 816
817#ifdef HAVE_DIRCACHE 817#ifdef HAVE_DIRCACHE
818 if (playlist->filenames) 818 if (playlist->filenames)
819 playlist->filenames[insert_position] = NULL; 819 playlist->filenames[insert_position] = -1;
820#endif 820#endif
821 821
822 playlist->amount++; 822 playlist->amount++;
@@ -958,9 +958,9 @@ static int randomise_playlist(struct playlist_info* playlist,
958#ifdef HAVE_DIRCACHE 958#ifdef HAVE_DIRCACHE
959 if (playlist->filenames) 959 if (playlist->filenames)
960 { 960 {
961 store = (long)playlist->filenames[candidate]; 961 store = playlist->filenames[candidate];
962 playlist->filenames[candidate] = playlist->filenames[count]; 962 playlist->filenames[candidate] = playlist->filenames[count];
963 playlist->filenames[count] = (struct dircache_entry *)store; 963 playlist->filenames[count] = store;
964 } 964 }
965#endif 965#endif
966 } 966 }
@@ -1298,7 +1298,7 @@ static void playlist_thread(void)
1298 && queue_empty(&playlist_queue); index++) 1298 && queue_empty(&playlist_queue); index++)
1299 { 1299 {
1300 /* Process only pointers that are not already loaded. */ 1300 /* Process only pointers that are not already loaded. */
1301 if (playlist->filenames[index]) 1301 if (playlist->filenames[index] >= 0)
1302 continue ; 1302 continue ;
1303 1303
1304 control_file = playlist->indices[index] & PLAYLIST_INSERT_TYPE_MASK; 1304 control_file = playlist->indices[index] & PLAYLIST_INSERT_TYPE_MASK;
@@ -1310,7 +1310,7 @@ static void playlist_thread(void)
1310 break ; 1310 break ;
1311 1311
1312 /* Set the dircache entry pointer. */ 1312 /* Set the dircache entry pointer. */
1313 playlist->filenames[index] = dircache_get_entry_ptr(tmp); 1313 playlist->filenames[index] = dircache_get_entry_id(tmp);
1314 1314
1315 /* And be on background so user doesn't notice any delays. */ 1315 /* And be on background so user doesn't notice any delays. */
1316 yield(); 1316 yield();
@@ -1351,7 +1351,7 @@ static int get_filename(struct playlist_info* playlist, int index, int seek,
1351#ifdef HAVE_DIRCACHE 1351#ifdef HAVE_DIRCACHE
1352 if (dircache_is_enabled() && playlist->filenames) 1352 if (dircache_is_enabled() && playlist->filenames)
1353 { 1353 {
1354 if (playlist->filenames[index] != NULL) 1354 if (playlist->filenames[index] >= 0)
1355 { 1355 {
1356 max = dircache_copy_path(playlist->filenames[index], 1356 max = dircache_copy_path(playlist->filenames[index],
1357 tmp_buf, sizeof(tmp_buf)-1); 1357 tmp_buf, sizeof(tmp_buf)-1);
@@ -2389,7 +2389,7 @@ int playlist_add(const char *filename)
2389 2389
2390 playlist->indices[playlist->amount] = playlist->buffer_end_pos; 2390 playlist->indices[playlist->amount] = playlist->buffer_end_pos;
2391#ifdef HAVE_DIRCACHE 2391#ifdef HAVE_DIRCACHE
2392 playlist->filenames[playlist->amount] = NULL; 2392 playlist->filenames[playlist->amount] = -1;
2393#endif 2393#endif
2394 playlist->amount++; 2394 playlist->amount++;
2395 2395
@@ -2713,8 +2713,7 @@ int playlist_create_ex(struct playlist_info* playlist,
2713 playlist->max_playlist_size = num_indices; 2713 playlist->max_playlist_size = num_indices;
2714 playlist->indices = index_buffer; 2714 playlist->indices = index_buffer;
2715#ifdef HAVE_DIRCACHE 2715#ifdef HAVE_DIRCACHE
2716 playlist->filenames = (const struct dircache_entry **) 2716 playlist->filenames = (int*)&playlist->indices[num_indices];
2717 &playlist->indices[num_indices];
2718#endif 2717#endif
2719 2718
2720 playlist->buffer_size = 0; 2719 playlist->buffer_size = 0;
diff --git a/apps/playlist.h b/apps/playlist.h
index 9c45769981..d994f6e800 100644
--- a/apps/playlist.h
+++ b/apps/playlist.h
@@ -81,7 +81,7 @@ struct playlist_info
81 bool control_created; /* has control file been created? */ 81 bool control_created; /* has control file been created? */
82 int dirlen; /* Length of the path to the playlist file */ 82 int dirlen; /* Length of the path to the playlist file */
83 unsigned long *indices; /* array of indices */ 83 unsigned long *indices; /* array of indices */
84 const struct dircache_entry **filenames; /* Entries from dircache */ 84 int *filenames; /* Array of dircache indices */
85 int max_playlist_size; /* Max number of files in playlist. Mirror of 85 int max_playlist_size; /* Max number of files in playlist. Mirror of
86 global_settings.max_files_in_playlist */ 86 global_settings.max_files_in_playlist */
87 bool in_ram; /* playlist stored in ram (dirplay) */ 87 bool in_ram; /* playlist stored in ram (dirplay) */
diff --git a/apps/tagcache.c b/apps/tagcache.c
index 080f4198c3..c5a8dcbae5 100644
--- a/apps/tagcache.c
+++ b/apps/tagcache.c
@@ -383,8 +383,9 @@ static bool do_timed_yield(void)
383#endif 383#endif
384 384
385#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) 385#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE)
386static long find_entry_ram(const char *filename, 386/* find the ramcache entry corresponding to the file indicated by
387 const struct dircache_entry *dc) 387 * filename and dc (it's corresponding dircache id). */
388static long find_entry_ram(const char *filename, int dc)
388{ 389{
389 static long last_pos = 0; 390 static long last_pos = 0;
390 int i; 391 int i;
@@ -393,10 +394,10 @@ static long find_entry_ram(const char *filename,
393 if (!tc_stat.ramcache) 394 if (!tc_stat.ramcache)
394 return -1; 395 return -1;
395 396
396 if (dc == NULL) 397 if (dc < 0)
397 dc = dircache_get_entry_ptr(filename); 398 dc = dircache_get_entry_id(filename);
398 399
399 if (dc == NULL) 400 if (dc < 0)
400 { 401 {
401 logf("tagcache: file not found."); 402 logf("tagcache: file not found.");
402 return -1; 403 return -1;
@@ -411,7 +412,7 @@ static long find_entry_ram(const char *filename,
411 412
412 for (; i < current_tcmh.tch.entry_count; i++) 413 for (; i < current_tcmh.tch.entry_count; i++)
413 { 414 {
414 if (hdr->indices[i].tag_seek[tag_filename] == (long)dc) 415 if (hdr->indices[i].tag_seek[tag_filename] == dc)
415 { 416 {
416 last_pos = MAX(0, i - 3); 417 last_pos = MAX(0, i - 3);
417 return i; 418 return i;
@@ -539,7 +540,7 @@ static int find_index(const char *filename)
539 540
540#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) 541#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE)
541 if (tc_stat.ramcache && is_dircache_intact()) 542 if (tc_stat.ramcache && is_dircache_intact())
542 idx_id = find_entry_ram(filename, NULL); 543 idx_id = find_entry_ram(filename, -1);
543#endif 544#endif
544 545
545 if (idx_id < 0) 546 if (idx_id < 0)
@@ -723,8 +724,8 @@ static bool retrieve(struct tagcache_search *tcs, struct index_entry *idx,
723 if (tag == tag_filename && (idx->flag & FLAG_DIRCACHE) 724 if (tag == tag_filename && (idx->flag & FLAG_DIRCACHE)
724 && is_dircache_intact()) 725 && is_dircache_intact())
725 { 726 {
726 dircache_copy_path((struct dircache_entry *)seek, 727 /* for tag_filename, seek is a dircache index */
727 buf, size); 728 dircache_copy_path(seek, buf, size);
728 return true; 729 return true;
729 } 730 }
730 else 731 else
@@ -1481,8 +1482,7 @@ static bool get_next(struct tagcache_search *tcs)
1481 if (tcs->type == tag_filename && (flag & FLAG_DIRCACHE) 1482 if (tcs->type == tag_filename && (flag & FLAG_DIRCACHE)
1482 && is_dircache_intact()) 1483 && is_dircache_intact())
1483 { 1484 {
1484 size_t len = dircache_copy_path((struct dircache_entry *)tcs->position, 1485 size_t len = dircache_copy_path(tcs->position, buf, sizeof buf);
1485 buf, sizeof buf);
1486 tcs->result_len = len + 1; 1486 tcs->result_len = len + 1;
1487 tcs->result = buf; 1487 tcs->result = buf;
1488 tcs->ramresult = false; 1488 tcs->ramresult = false;
@@ -1599,29 +1599,6 @@ static bool update_master_header(void)
1599 return true; 1599 return true;
1600} 1600}
1601 1601
1602#if 0
1603
1604void tagcache_modify(struct tagcache_search *tcs, int type, const char *text)
1605{
1606 struct tagentry *entry;
1607
1608 if (tcs->type != tag_title)
1609 return ;
1610
1611 /* We will need reserve buffer for this. */
1612 if (tcs->ramcache)
1613 {
1614 struct tagfile_entry *ep;
1615
1616 ep = (struct tagfile_entry *)&hdr->tags[tcs->type][tcs->result_seek];
1617 tcs->seek_list[tcs->seek_list_count];
1618 }
1619
1620 entry = find_entry_ram();
1621
1622}
1623#endif
1624
1625void tagcache_search_finish(struct tagcache_search *tcs) 1602void tagcache_search_finish(struct tagcache_search *tcs)
1626{ 1603{
1627 int i; 1604 int i;
@@ -1677,7 +1654,7 @@ bool tagcache_fill_tags(struct mp3entry *id3, const char *filename)
1677 return false; 1654 return false;
1678 1655
1679 /* Find the corresponding entry in tagcache. */ 1656 /* Find the corresponding entry in tagcache. */
1680 idx_id = find_entry_ram(filename, NULL); 1657 idx_id = find_entry_ram(filename, -1);
1681 if (idx_id < 0) 1658 if (idx_id < 0)
1682 return false; 1659 return false;
1683 1660
@@ -1761,7 +1738,7 @@ static int check_if_empty(char **tag)
1761static void __attribute__ ((noinline)) add_tagcache(char *path, 1738static void __attribute__ ((noinline)) add_tagcache(char *path,
1762 unsigned long mtime 1739 unsigned long mtime
1763#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) 1740#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE)
1764 ,const struct dircache_entry *dc 1741 ,int dc
1765#endif 1742#endif
1766 ) 1743 )
1767{ 1744{
@@ -4017,7 +3994,7 @@ static bool load_tagcache(void)
4017 if (tag == tag_filename) 3994 if (tag == tag_filename)
4018 { 3995 {
4019# ifdef HAVE_DIRCACHE 3996# ifdef HAVE_DIRCACHE
4020 const struct dircache_entry *dc; 3997 int dc;
4021# endif 3998# endif
4022 3999
4023 // FIXME: This is wrong! 4000 // FIXME: This is wrong!
@@ -4064,8 +4041,8 @@ static bool load_tagcache(void)
4064# ifdef HAVE_DIRCACHE 4041# ifdef HAVE_DIRCACHE
4065 if (dircache_is_enabled()) 4042 if (dircache_is_enabled())
4066 { 4043 {
4067 dc = dircache_get_entry_ptr(buf); 4044 dc = dircache_get_entry_id(buf);
4068 if (dc == NULL) 4045 if (dc < 0)
4069 { 4046 {
4070 logf("Entry no longer valid."); 4047 logf("Entry no longer valid.");
4071 logf("-> %s", buf); 4048 logf("-> %s", buf);
@@ -4075,7 +4052,7 @@ static bool load_tagcache(void)
4075 } 4052 }
4076 4053
4077 idx->flag |= FLAG_DIRCACHE; 4054 idx->flag |= FLAG_DIRCACHE;
4078 idx->tag_seek[tag_filename] = (long)dc; 4055 idx->tag_seek[tag_filename] = dc;
4079 } 4056 }
4080 else 4057 else
4081# endif 4058# endif