rendered paste bodystruct ImBuf *IMB_loadifffile(int file, int flags) {
struct ImBuf *ibuf;
int size, *mem;
double time_start, time_file, time_mem, time_all;
if (file == -1) return (0);
time_start= PIL_check_seconds_timer();
size = BLI_filesize(file);
#if defined(AMIGA) || defined(__BeOS) || defined(WIN32)
mem= (int *)malloc(size);
if (mem==0) {
printf("Out of mem\n");
return (0);
}
if (read(file, mem, size)!=size){
printf("Read Error\n");
free(mem);
return (0);
}
time_file= PIL_check_seconds_timer();
ibuf = IMB_ibImageFromMemory(mem, size, flags);
time_mem= PIL_check_seconds_timer();
free(mem);
/* for jpeg read */
lseek(file, 0L, SEEK_SET);
time_all= PIL_check_seconds_timer();
printf("readimage: %f %f %f\n", time_all-time_start, time_file-time_start, time_mem-time_file);
#else
mem= (int *)mmap(0,size,PROT_READ,MAP_SHARED,file,0);
if (mem==(int *)-1){
printf("Couldn't get mapping\n");
return (0);
}
ibuf = IMB_ibImageFromMemory(mem, size, flags);
if (munmap( (void *) mem, size)){
printf("Couldn't unmap file.\n");
}
#endif
return(ibuf);
}