simplify png cleanup
This commit is contained in:
		
							
								
								
									
										24
									
								
								sent.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								sent.c
									
									
									
									
									
								
							| @ -79,6 +79,7 @@ typedef struct { | |||||||
| } Shortcut; | } Shortcut; | ||||||
|  |  | ||||||
| static Image *pngopen(char *filename); | static Image *pngopen(char *filename); | ||||||
|  | static void pngfree(Image *img); | ||||||
| static int pngread(Image *img); | static int pngread(Image *img); | ||||||
| static int pngprepare(Image *img); | static int pngprepare(Image *img); | ||||||
| static void pngscale(Image *img); | static void pngscale(Image *img); | ||||||
| @ -146,14 +147,9 @@ Image *pngopen(char *filename) | |||||||
| 		free(img); | 		free(img); | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	} | 	} | ||||||
| 	if (!(img->info_ptr = png_create_info_struct(img->png_ptr))) { | 	if (!(img->info_ptr = png_create_info_struct(img->png_ptr)) | ||||||
| 		png_destroy_read_struct(&img->png_ptr, NULL, NULL); | 		|| setjmp(png_jmpbuf(img->png_ptr))) { | ||||||
| 		free(img); | 		pngfree(img); | ||||||
| 		return NULL; |  | ||||||
| 	} |  | ||||||
| 	if (setjmp(png_jmpbuf(img->png_ptr))) { |  | ||||||
| 		png_destroy_read_struct(&img->png_ptr, &img->info_ptr, NULL); |  | ||||||
| 		free(img); |  | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @ -167,6 +163,12 @@ Image *pngopen(char *filename) | |||||||
| 	return img; | 	return img; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void pngfree(Image *img) | ||||||
|  | { | ||||||
|  | 	png_destroy_read_struct(&img->png_ptr, img->info_ptr ? &img->info_ptr : NULL, NULL); | ||||||
|  | 	free(img); | ||||||
|  | } | ||||||
|  |  | ||||||
| int pngread(Image *img) | int pngread(Image *img) | ||||||
| { | { | ||||||
| 	unsigned int y; | 	unsigned int y; | ||||||
| @ -330,6 +332,8 @@ void getfontsize(char *str, unsigned int *width, unsigned int *height) | |||||||
|  |  | ||||||
| void cleanup() | void cleanup() | ||||||
| { | { | ||||||
|  | 	unsigned int i; | ||||||
|  |  | ||||||
| 	drw_scm_free(sc); | 	drw_scm_free(sc); | ||||||
| 	drw_free(d); | 	drw_free(d); | ||||||
|  |  | ||||||
| @ -337,6 +341,10 @@ void cleanup() | |||||||
| 	XSync(xw.dpy, False); | 	XSync(xw.dpy, False); | ||||||
| 	XCloseDisplay(xw.dpy); | 	XCloseDisplay(xw.dpy); | ||||||
| 	if (slides) { | 	if (slides) { | ||||||
|  | 		for (i = 0; i < slidecount; i++) { | ||||||
|  | 			if (slides[i].img) | ||||||
|  | 				pngfree(slides[i].img); | ||||||
|  | 		} | ||||||
| 		free(slides); | 		free(slides); | ||||||
| 		slides = NULL; | 		slides = NULL; | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user