* Don't bother checking embedded art if the last hash matches, and it was invalid.
This commit is contained in:
		
							
								
								
									
										10
									
								
								albumart.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								albumart.c
									
									
									
									
									
								
							@@ -102,6 +102,7 @@ check_embedded_art(const char * path, const char * image_data, int image_size)
 | 
				
			|||||||
	size_t nwritten;
 | 
						size_t nwritten;
 | 
				
			||||||
	static char last_path[PATH_MAX];
 | 
						static char last_path[PATH_MAX];
 | 
				
			||||||
	static unsigned int last_hash = 0;
 | 
						static unsigned int last_hash = 0;
 | 
				
			||||||
 | 
						static int last_success = 0;
 | 
				
			||||||
	unsigned int hash;
 | 
						unsigned int hash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if( !image_data || !image_size || !path )
 | 
						if( !image_data || !image_size || !path )
 | 
				
			||||||
@@ -113,6 +114,8 @@ check_embedded_art(const char * path, const char * image_data, int image_size)
 | 
				
			|||||||
	hash = DJBHash(image_data, image_size);
 | 
						hash = DJBHash(image_data, image_size);
 | 
				
			||||||
	if( hash == last_hash )
 | 
						if( hash == last_hash )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
							if( !last_success )
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
		asprintf(&art_path, DB_PATH "/art_cache%s", path);
 | 
							asprintf(&art_path, DB_PATH "/art_cache%s", path);
 | 
				
			||||||
		if( link(last_path, art_path) == 0 )
 | 
							if( link(last_path, art_path) == 0 )
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -133,10 +136,14 @@ check_embedded_art(const char * path, const char * image_data, int image_size)
 | 
				
			|||||||
			art_path = NULL;
 | 
								art_path = NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						last_hash = hash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	imsrc = image_new_from_jpeg(NULL, 0, image_data, image_size);
 | 
						imsrc = image_new_from_jpeg(NULL, 0, image_data, image_size);
 | 
				
			||||||
	if( !imsrc )
 | 
						if( !imsrc )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							last_success = 0;
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	width = imsrc->width;
 | 
						width = imsrc->width;
 | 
				
			||||||
	height = imsrc->height;
 | 
						height = imsrc->height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -174,10 +181,11 @@ end_art:
 | 
				
			|||||||
	if( !art_path )
 | 
						if( !art_path )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		DPRINTF(E_WARN, L_METADATA, "Invalid embedded album art in %s\n", basename((char *)path));
 | 
							DPRINTF(E_WARN, L_METADATA, "Invalid embedded album art in %s\n", basename((char *)path));
 | 
				
			||||||
 | 
							last_success = 0;
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	DPRINTF(E_DEBUG, L_METADATA, "Found new embedded album art in %s\n", basename((char *)path));
 | 
						DPRINTF(E_DEBUG, L_METADATA, "Found new embedded album art in %s\n", basename((char *)path));
 | 
				
			||||||
	last_hash = hash;
 | 
						last_success = 1;
 | 
				
			||||||
	strcpy(last_path, art_path);
 | 
						strcpy(last_path, art_path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return(art_path);
 | 
						return(art_path);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user