diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-01-30 12:14:12 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-01-30 12:14:12 +0300 |
commit | 7d0885915b1b7724ab08a3542ba2faf5e90be705 (patch) | |
tree | abd767cc95ca647381e5400169fc309d810c30e6 | |
parent | c005d19c420e51764cc3dafac26f329e9144bb88 (diff) |
Fix #20146:
* .tif not loading on newer linux distributions, wasn't looking for
libtiff version 4.
* fix dds being too verbose when testing if it can open an image file.
-rw-r--r-- | source/blender/imbuf/intern/dds/dds_api.cpp | 4 | ||||
-rw-r--r-- | source/blender/imbuf/intern/dynlibtiff.c | 18 | ||||
-rwxr-xr-x | source/blender/imbuf/intern/gen_dynlibtiff.py | 55 |
3 files changed, 74 insertions, 3 deletions
diff --git a/source/blender/imbuf/intern/dds/dds_api.cpp b/source/blender/imbuf/intern/dds/dds_api.cpp index d7ff4761605..20b77c75841 100644 --- a/source/blender/imbuf/intern/dds/dds_api.cpp +++ b/source/blender/imbuf/intern/dds/dds_api.cpp @@ -80,6 +80,10 @@ struct ImBuf *imb_load_dds(unsigned char *mem, int size, int flags) /* check if DDS is valid and supported */ if (!dds.isValid()) { + /* no need to print error here, just testing if it is a DDS */ + if(flags & IB_test) + return (0); + printf("DDS: not valid; header follows\n"); dds.printInfo(); return(0); diff --git a/source/blender/imbuf/intern/dynlibtiff.c b/source/blender/imbuf/intern/dynlibtiff.c index 6db83b37c05..18d508b6db4 100644 --- a/source/blender/imbuf/intern/dynlibtiff.c +++ b/source/blender/imbuf/intern/dynlibtiff.c @@ -85,40 +85,58 @@ void libtiff_loadlibtiff(void) if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.4.dylib"); + if (libtiff != NULL) return; //inside the blender app package contents/resources libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.dylib"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.4.dylib"); + if (libtiff != NULL) return; //inside the blender app package contents/frameworks libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.dylib"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.4.dylib"); + if (libtiff != NULL) return; //along side the blender app package libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.dylib"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.4.dylib"); + if (libtiff != NULL) return; //inside the blender app package contents/MacOS libtiff = PIL_dynlib_open("@executable_path/libtiff.dylib"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("@executable_path/libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/libtiff.4.dylib"); + if (libtiff != NULL) return; #else libtiff = PIL_dynlib_open("libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("libtiff.so.4"); + if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.dll"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.4"); + if (libtiff != NULL) return; #ifdef __x86_64__ + libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so"); + if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.4"); + if (libtiff != NULL) return; #endif libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.so"); if (libtiff != NULL) return; diff --git a/source/blender/imbuf/intern/gen_dynlibtiff.py b/source/blender/imbuf/intern/gen_dynlibtiff.py index 4dba5b13aa0..a81ef981357 100755 --- a/source/blender/imbuf/intern/gen_dynlibtiff.py +++ b/source/blender/imbuf/intern/gen_dynlibtiff.py @@ -117,25 +117,71 @@ void libtiff_loadlibtiff(void) if (libtiff != NULL) return; /* Try to find libtiff in a couple of standard places */ +#ifdef __APPLE__ + /* OSX has version specific library */ + //standard install location + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.4.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/resources + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.4.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/frameworks + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.4.dylib"); + if (libtiff != NULL) return; + //along side the blender app package + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.4.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/MacOS + libtiff = PIL_dynlib_open("@executable_path/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/libtiff.4.dylib"); + if (libtiff != NULL) return; +#else libtiff = PIL_dynlib_open("libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("libtiff.so.4"); + if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.dll"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.3"); if (libtiff != NULL) return; - /* OSX has version specific library */ + libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.4"); + if (libtiff != NULL) return; #ifdef __x86_64__ + libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so"); + if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.4"); + if (libtiff != NULL) return; #endif libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.so"); if (libtiff != NULL) return; /* For solaris */ libtiff = PIL_dynlib_open("/usr/openwin/lib/libtiff.so"); +#endif } @@ -145,8 +191,11 @@ void *libtiff_findsymbol(char *name) assert(libtiff != NULL); symbol = PIL_dynlib_find_symbol(libtiff, name); if (symbol == NULL) { - printf("libtiff_findsymbol: error %s\\n", - PIL_dynlib_get_error_as_string(libtiff)); + char *err = PIL_dynlib_get_error_as_string(libtiff); + + if (err) printf("libtiff_findsymbol: error %s\\n",err); + else printf("libtiff_findsymbol: error Unknown.\\n"); + libtiff = NULL; G.have_libtiff = (0); return NULL; |