forked from bartvdbraak/blender
fix for 2 bugs in animation playback
- reading bmp images was failing (needed to increase the size of the header to 64 bytes) - the dnd image was being incorrectly checked (was always returning true even when none was used).
This commit is contained in:
parent
fe76c4ec8e
commit
0ea078ad03
@ -158,9 +158,13 @@ const char *imb_ext_audio[] = {
|
||||
|
||||
static int IMB_ispic_name(const char *name)
|
||||
{
|
||||
/* increased from 32 to 64 because of the bitmaps header size */
|
||||
#define HEADER_SIZE 64
|
||||
|
||||
unsigned char buf[HEADER_SIZE];
|
||||
ImFileType *type;
|
||||
struct stat st;
|
||||
int fp, buf[10];
|
||||
int fp;
|
||||
|
||||
if (UTIL_DEBUG) printf("IMB_ispic_name: loading %s\n", name);
|
||||
|
||||
@ -172,7 +176,8 @@ static int IMB_ispic_name(const char *name)
|
||||
if ((fp = BLI_open(name, O_BINARY | O_RDONLY, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
if (read(fp, buf, 32) != 32) {
|
||||
memset(buf, 0, sizeof(buf));
|
||||
if (read(fp, buf, HEADER_SIZE) <= 0) {
|
||||
close(fp);
|
||||
return FALSE;
|
||||
}
|
||||
@ -180,14 +185,18 @@ static int IMB_ispic_name(const char *name)
|
||||
close(fp);
|
||||
|
||||
/* XXX move this exception */
|
||||
if ((BIG_LONG(buf[0]) & 0xfffffff0) == 0xffd8ffe0)
|
||||
if ((BIG_LONG(((int *)buf)[0]) & 0xfffffff0) == 0xffd8ffe0)
|
||||
return JPG;
|
||||
|
||||
for (type = IMB_FILE_TYPES; type->is_a; type++)
|
||||
if (type->is_a((uchar *)buf))
|
||||
for (type = IMB_FILE_TYPES; type->is_a; type++) {
|
||||
if (type->is_a(buf)) {
|
||||
return type->filetype;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
||||
#undef HEADER_SIZE
|
||||
}
|
||||
|
||||
int IMB_ispic(const char *filename)
|
||||
|
@ -940,6 +940,7 @@ static char *wm_main_playanim_intern(int argc, const char **argv)
|
||||
}
|
||||
}
|
||||
else if (!IMB_ispic(filepath)) {
|
||||
printf("%s: '%s' not an image file\n", __func__, filepath);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -949,7 +950,7 @@ static char *wm_main_playanim_intern(int argc, const char **argv)
|
||||
}
|
||||
|
||||
if (ibuf == NULL) {
|
||||
printf("couldn't open %s\n", filepath);
|
||||
printf("%s: '%s' couldn't open\n", __func__, filepath);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -1190,7 +1191,7 @@ static char *wm_main_playanim_intern(int argc, const char **argv)
|
||||
GHOST_DisposeWindow(g_WS.ghost_system, g_WS.ghost_window);
|
||||
|
||||
/* early exit, IMB and BKE should be exited only in end */
|
||||
if (ps.dropped_file) {
|
||||
if (ps.dropped_file[0]) {
|
||||
BLI_strncpy(filepath, ps.dropped_file, sizeof(filepath));
|
||||
return filepath;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user