Turns out that Scons isn't set up for dynamic libs: it can only copy them in from the /libs folder. The thumb handler residing there is probably for the best anyway, since the Windows SDK is needed to build it.
Pre-compiling also solves the arch problem in my last message. On 10/02/2011 5:11, Tom Edwards wrote: > Thanks Campbell. There is another issue I forgot: unlike Blender itself, > an x86 thumb handler won't run on x64 Windows. Can the build systems > handle this? > > On 10/02/2011 12:57, Campbell Barton wrote: >> @Xavier, >> blender-thumbnailer.py is a standalone script and runs without blender >> in py2.x - 3.x >> its included so tools may extract thumbnails from blender without >> loading blender. >> >> blender does this internally in C, from thumbs_blend.c: loadblend_thumb. >> >> @Tom Edwards, there doesn't seem to be a good place for this to go in >> blenders source. >> For now how about: ./source/tools/windows_thumbnail/ ? >> >> On Wed, Feb 9, 2011 at 9:20 PM, Tom Edwards<[email protected]> wrote: >>> Thumbs are generated by Blender on save and stored in the file as RGBA >>> pixels. There is no risk. >>> >>> On this topic, I keep wanting to submit my Windows thumbnail handler but >>> I don't know where it should go in the source tree. It has to be a >>> dynamic lib, but it's not exactly external...any suggestions? >>> >>> On 09/02/2011 2:34, Xavier Thomas wrote: >>>> Hi Campbell, >>>> >>>> I would like to know if the Blender thumbnailer deactivate python scripts >>>> inside the blend. >>>> >>>> Thumbnailers are big security issues. A malisous .blend on a USB memory >>>> stick could serve as infection vector on all platform. Executing some of >>>> the >>>> py scripts inside would make it too easy. >>>> >>>> Xavier >>>> >>>> >>>> 2011/2/9 Campbell Barton<[email protected]> >>>> >>>>> Revision: 34732 >>>>> >>>>> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34732 >>>>> Author: campbellbarton >>>>> Date: 2011-02-09 02:09:30 +0000 (Wed, 09 Feb 2011) >>>>> Log Message: >>>>> ----------- >>>>> patch [#25972] blender-thumbnailer.py: GVFS support >>>>> from Shinsuke Irie (irie) with some minor edits. >>>>> >>>>> Shinsuke's description from the tracker: >>>>> --- >>>>> I have implemented GVFS framework support of blender-thumbnailer.py which >>>>> allows some file managers like Nautilus and Thunar to show thumbnails in >>>>> trash or network directories. If Python's gio module is available, the >>>>> thumbnailer uses it to access to filesystems mounted via GVFS. This change >>>>> shouldn't affect desktop environments other than GNOME and XFCE. >>>>> >>>>> A function gvfs_open() in this patch is defined to solve a stupid >>>>> incompatibility between Python file object and GIO Seekable object. >>>>> >>>>> On Ubuntu 10.10, I confirmed thumbnails can be generated for file://, >>>>> trash://, sftp://, and smb://. >>>>> >>>>> Modified Paths: >>>>> -------------- >>>>> trunk/blender/release/bin/blender-thumbnailer.py >>>>> >>>>> Modified: trunk/blender/release/bin/blender-thumbnailer.py >>>>> =================================================================== >>>>> --- trunk/blender/release/bin/blender-thumbnailer.py 2011-02-09 >>>>> 02:09:25 >>>>> UTC (rev 34731) >>>>> +++ trunk/blender/release/bin/blender-thumbnailer.py 2011-02-09 >>>>> 02:09:30 >>>>> UTC (rev 34732) >>>>> @@ -24,27 +24,49 @@ >>>>> Thumbnailer runs with python 2.6 and 3.x. >>>>> To run automatically with nautilus: >>>>> gconftool --type boolean --set >>>>> /desktop/gnome/thumbnailers/application@x-blender/enable true >>>>> - gconftool --type string --set >>>>> /desktop/gnome/thumbnailers/application@x-blender/command >>>>> "blender-thumbnailer.py %i %o" >>>>> + gconftool --type string --set >>>>> /desktop/gnome/thumbnailers/application@x-blender/command >>>>> "blender-thumbnailer.py %u %o" >>>>> """ >>>>> >>>>> import struct >>>>> >>>>> >>>>> +def open_wrapper_get(): >>>>> + """ wrap OS spesific read functionality here, fallback to 'open()' >>>>> + """ >>>>> + >>>>> + def open_gio(path, mode): >>>>> + g_file = gio.File(path).read() >>>>> + g_file.orig_seek = g_file.seek >>>>> + >>>>> + def new_seek(offset, whence=0): >>>>> + return g_file.orig_seek(offset, [1, 0, 2][whence]) >>>>> + >>>>> + g_file.seek = new_seek >>>>> + return g_file >>>>> + >>>>> + try: >>>>> + import gio >>>>> + return open_gio >>>>> + except ImportError: >>>>> + return open >>>>> + >>>>> + >>>>> def blend_extract_thumb(path): >>>>> import os >>>>> + open_wrapper = open_wrapper_get() >>>>> >>>>> # def MAKE_ID(tag): ord(tag[0])<<24 | ord(tag[1])<<16 | >>>>> ord(tag[2])<<8 >>>>> | ord(tag[3]) >>>>> REND = 1145980242 # MAKE_ID(b'REND') >>>>> TEST = 1414743380 # MAKE_ID(b'TEST') >>>>> >>>>> - blendfile = open(path, 'rb') >>>>> + blendfile = open_wrapper(path, 'rb') >>>>> >>>>> head = blendfile.read(12) >>>>> >>>>> if head[0:2] == b'\x1f\x8b': # gzip magic >>>>> import gzip >>>>> blendfile.close() >>>>> - blendfile = gzip.open(path, 'rb') >>>>> + blendfile = gzip.GzipFile('', 'rb', 0, open_wrapper(path, 'rb')) >>>>> head = blendfile.read(12) >>>>> >>>>> if not head.startswith(b'BLENDER'): >>>>> >>>>> _______________________________________________ >>>>> Bf-blender-cvs mailing list >>>>> [email protected] >>>>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs >>>>> >>>> _______________________________________________ >>>> Bf-committers mailing list >>>> [email protected] >>>> http://lists.blender.org/mailman/listinfo/bf-committers >>>> >>> _______________________________________________ >>> Bf-committers mailing list >>> [email protected] >>> http://lists.blender.org/mailman/listinfo/bf-committers >>> >> > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
