[Bf-extensions-cvs] [2965c7af] master: BlenderKit fix bg blender crash due to new file preview code

Vilem Duha noreply at git.blender.org
Sun Oct 3 19:07:47 CEST 2021


Commit: 2965c7afc0d5e951b9bee16a1dcf182f2aec0a44
Author: Vilem Duha
Date:   Sun Oct 3 18:57:28 2021 +0200
Branches: master
https://developer.blender.org/rBA2965c7afc0d5e951b9bee16a1dcf182f2aec0a44

BlenderKit fix bg blender crash due to new file preview code

A new preview code from 6th september crashes Blender when saving files in background mode. This circumvents the bug by now.

===================================================================

M	blenderkit/append_link.py
M	blenderkit/autothumb.py
M	blenderkit/autothumb_material_bg.py
M	blenderkit/autothumb_model_bg.py
M	blenderkit/resolutions.py
M	blenderkit/upload.py
M	blenderkit/upload_bg.py

===================================================================

diff --git a/blenderkit/append_link.py b/blenderkit/append_link.py
index 21cf2ec2..481504fb 100644
--- a/blenderkit/append_link.py
+++ b/blenderkit/append_link.py
@@ -318,11 +318,11 @@ def append_objects(file_name, obnames=[], location=(0, 0, 0), link=False, **kwar
                 # check for object that should be hidden
                 if ob.users_collection[0].name == collection_name:
                     collection = ob.users_collection[0]
+                    collection['is_blenderkit_asset'] = True
+
                 else:
                     to_hidden_collection.append(ob)
 
-
-
         if kwargs.get('rotation'):
             main_object.rotation_euler = kwargs['rotation']
 
@@ -344,7 +344,6 @@ def append_objects(file_name, obnames=[], location=(0, 0, 0), link=False, **kwar
         bpy.ops.object.select_all(action='DESELECT')
         utils.selection_set(sel)
         #let collection also store info that it was created by BlenderKit, for purging reasons
-        collection['is_blenderkit_asset'] = True
 
         return main_object, return_obs
 
diff --git a/blenderkit/autothumb.py b/blenderkit/autothumb.py
index c19e4507..f5e0cd34 100644
--- a/blenderkit/autothumb.py
+++ b/blenderkit/autothumb.py
@@ -283,7 +283,10 @@ class GenerateThumbnailOperator(bpy.types.Operator):
         bkit.thumbnail = rel_thumb_path + '.jpg'
         bkit.thumbnail_generating_state = 'Saving .blend file'
 
+        # if this isn't here, blender crashes.
+        bpy.context.preferences.filepaths.file_preview_type = 'NONE'
         # save a copy of actual scene but don't interfere with the users models
+
         bpy.ops.wm.save_as_mainfile(filepath=filepath, compress=False, copy=True)
         # get all included objects
         obs = utils.get_hierarchy(asset)
@@ -471,6 +474,9 @@ class GenerateMaterialThumbnailOperator(bpy.types.Operator):
         asset = bpy.context.active_object.active_material
         tempdir = tempfile.mkdtemp()
         filepath = os.path.join(tempdir, "material_thumbnailer_cycles.blend")
+        # if this isn't here, blender crashes.
+        bpy.context.preferences.filepaths.file_preview_type = 'NONE'
+
         # save a copy of actual scene but don't interfere with the users models
         bpy.ops.wm.save_as_mainfile(filepath=filepath, compress=False, copy=True)
 
diff --git a/blenderkit/autothumb_material_bg.py b/blenderkit/autothumb_material_bg.py
index 50e8aa4b..37d7c783 100644
--- a/blenderkit/autothumb_material_bg.py
+++ b/blenderkit/autothumb_material_bg.py
@@ -50,6 +50,10 @@ if __name__ == "__main__":
         if data.get('do_download'):
             #need to save the file, so that asset doesn't get downloaded into addon directory
             temp_blend_path = os.path.join(data['tempdir'], 'temp.blend')
+
+            # if this isn't here, blender crashes.
+            bpy.context.preferences.filepaths.file_preview_type = 'NONE'
+
             bpy.ops.wm.save_as_mainfile(filepath=temp_blend_path)
 
             asset_data = data['asset_data']
diff --git a/blenderkit/autothumb_model_bg.py b/blenderkit/autothumb_model_bg.py
index df9872fa..2ce76830 100644
--- a/blenderkit/autothumb_model_bg.py
+++ b/blenderkit/autothumb_model_bg.py
@@ -84,6 +84,9 @@ if __name__ == "__main__":
 
 
         if data.get('do_download'):
+            # if this isn't here, blender crashes.
+            bpy.context.preferences.filepaths.file_preview_type = 'NONE'
+
             #need to save the file, so that asset doesn't get downloaded into addon directory
             temp_blend_path = os.path.join(data['tempdir'], 'temp.blend')
             bpy.ops.wm.save_as_mainfile(filepath = temp_blend_path)
diff --git a/blenderkit/resolutions.py b/blenderkit/resolutions.py
index 645a306d..7a3f3671 100644
--- a/blenderkit/resolutions.py
+++ b/blenderkit/resolutions.py
@@ -386,6 +386,9 @@ def generate_lower_resolutions(data):
                         i.pack()
                 # save
                 print(fpath)
+                # if this isn't here, blender crashes.
+                bpy.context.preferences.filepaths.file_preview_type = 'NONE'
+
                 # save the file
                 bpy.ops.wm.save_as_mainfile(filepath=fpath, compress=True, copy=True)
                 # compare file sizes
diff --git a/blenderkit/upload.py b/blenderkit/upload.py
index bf207293..c724dde5 100644
--- a/blenderkit/upload.py
+++ b/blenderkit/upload.py
@@ -1101,6 +1101,9 @@ def start_upload(self, context, asset_type, reupload, upload_set):
     export_data['temp_dir'] = tempfile.mkdtemp()
     export_data['source_filepath'] = os.path.join(export_data['temp_dir'], "export_blenderkit" + ext)
     if asset_type != 'HDR':
+        # if this isn't here, blender crashes.
+        bpy.context.preferences.filepaths.file_preview_type = 'NONE'
+
         bpy.ops.wm.save_as_mainfile(filepath=export_data['source_filepath'], compress=False, copy=True)
 
     export_data['binary_path'] = bpy.app.binary_path
diff --git a/blenderkit/upload_bg.py b/blenderkit/upload_bg.py
index 1b91d51b..1f29d9ff 100644
--- a/blenderkit/upload_bg.py
+++ b/blenderkit/upload_bg.py
@@ -174,6 +174,9 @@ if __name__ == "__main__":
 
         fpath = os.path.join(export_data['temp_dir'], upload_data['assetBaseId'] + '.blend')
 
+        #if this isn't here, blender crashes.
+        bpy.context.preferences.filepaths.file_preview_type = 'NONE'
+
         bpy.ops.wm.save_as_mainfile(filepath=fpath, compress=True, copy=False)
         os.remove(export_data['source_filepath'])



More information about the Bf-extensions-cvs mailing list