[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34732] trunk/blender/release/bin/ blender-thumbnailer.py: patch [#25972] blender-thumbnailer.py: GVFS support

Tom Edwards contact at steamreview.org
Fri Feb 11 22:26:24 CET 2011


Patch is up: 
http://projects.blender.org/tracker/index.php?func=detail&aid=26044&group_id=9&atid=127

On 10/02/2011 10:59, Tom Edwards wrote:
> 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<contact at steamreview.org>    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<ideasman42 at gmail.com>
>>>>>
>>>>>> 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 at x-blender/enable true
>>>>>> -   gconftool --type string --set
>>>>>> /desktop/gnome/thumbnailers/application at x-blender/command
>>>>>> "blender-thumbnailer.py %i %o"
>>>>>> +   gconftool --type string --set
>>>>>> /desktop/gnome/thumbnailers/application at 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
>>>>>> Bf-blender-cvs at blender.org
>>>>>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>>>>>>
>>>>> _______________________________________________
>>>>> Bf-committers mailing list
>>>>> Bf-committers at blender.org
>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>>>>
>>>> _______________________________________________
>>>> Bf-committers mailing list
>>>> Bf-committers at blender.org
>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>>>
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>


More information about the Bf-committers mailing list