Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVilém Duha <vilda.novak@gmail.com>2019-11-10 21:58:22 +0300
committerVilém Duha <vilda.novak@gmail.com>2019-11-10 21:58:22 +0300
commita18b93cc7251036ff0e952c684056eccef52e04f (patch)
tree349c6436341b1fa227b0787596f465d11169c3ff
parenta8f3a26c7de25c3320a93a7de7c8acc22fef8923 (diff)
BlenderKit: Fix timers failing.
In some cases timers got unregistered, not sure yet why. This checks if timers are fine regularly. Also fixes unregistration, that sometimes did throw an error.
-rw-r--r--blenderkit/__init__.py16
-rw-r--r--blenderkit/bg_blender.py3
-rw-r--r--blenderkit/download.py3
-rw-r--r--blenderkit/search.py4
-rw-r--r--blenderkit/ui.py5
5 files changed, 26 insertions, 5 deletions
diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index 6f9a4ae6..5c8c8e5f 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -91,6 +91,17 @@ def scene_load(context):
preferences = bpy.context.preferences.addons['blenderkit'].preferences
preferences.login_attempt = False
+def check_timers_timer():
+ ''' checks if all timers are registered regularly. Prevents possible bugs from stopping the addon.'''
+ if not bpy.app.timers.is_registered(search.timer_update):
+ bpy.app.timers.register(search.timer_update)
+ if not bpy.app.timers.is_registered(download.timer_update):
+ bpy.app.timers.register(download.timer_update)
+ if not (bpy.app.timers.is_registered(tasks_queue.queue_worker)):
+ bpy.app.timers.register(tasks_queue.queue_worker)
+ if not bpy.app.timers.is_registered(bg_blender.bg_update):
+ bpy.app.timers.register(bg_blender.bg_update)
+ return 5.0
licenses = (
('royalty_free', 'Royalty Free', 'royalty free commercial license'),
@@ -1481,10 +1492,15 @@ def register():
bkit_oauth.register()
tasks_queue.register()
+ bpy.app.timers.register(check_timers_timer)
+
bpy.app.handlers.load_post.append(scene_load)
def unregister():
+
+ bpy.app.timers.unregister(check_timers_timer)
+
ui.unregister_ui()
search.unregister_search()
asset_inspector.unregister_asset_inspector()
diff --git a/blenderkit/bg_blender.py b/blenderkit/bg_blender.py
index e2596013..9d3521e4 100644
--- a/blenderkit/bg_blender.py
+++ b/blenderkit/bg_blender.py
@@ -237,5 +237,6 @@ def register():
def unregister():
bpy.utils.unregister_class(KillBgProcess)
- bpy.app.timers.unregister(bg_update)
+ if bpy.app.timers.is_registered(bg_update):
+ bpy.app.timers.unregister(bg_update)
diff --git a/blenderkit/download.py b/blenderkit/download.py
index 3e4d49d6..6c3f8ccf 100644
--- a/blenderkit/download.py
+++ b/blenderkit/download.py
@@ -928,4 +928,5 @@ def unregister_download():
bpy.utils.unregister_class(BlenderkitKillDownloadOperator)
bpy.app.handlers.load_post.remove(scene_load)
bpy.app.handlers.save_pre.remove(scene_save)
- bpy.app.timers.unregister(timer_update)
+ if bpy.app.timers.is_registered(timer_update):
+ bpy.app.timers.unregister(timer_update)
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 3f381b92..414b9afc 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -1173,6 +1173,6 @@ def unregister_search():
for c in classes:
bpy.utils.unregister_class(c)
-
- bpy.app.timers.unregister(timer_update)
+ if bpy.app.timers.is_registered(timer_update):
+ bpy.app.timers.unregister(timer_update)
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index 7c32da31..8aa18913 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -29,8 +29,9 @@ if "bpy" in locals():
download = importlib.reload(download)
bg_blender = importlib.reload(bg_blender)
colors = importlib.reload(colors)
+ tasks_queue = importlib.reload(tasks_queue)
else:
- from blenderkit import paths, ratings, utils, search, upload, ui_bgl, download, bg_blender, colors
+ from blenderkit import paths, ratings, utils, search, upload, ui_bgl, download, bg_blender, colors, tasks_queue
import bpy
@@ -1151,6 +1152,8 @@ def update_ui_size(area, region):
ui.rating_y = ui.bar_y - ui.bar_height
+
+
class AssetBarOperator(bpy.types.Operator):
'''runs search and displays the asset bar at the same time'''
bl_idname = "view3d.blenderkit_asset_bar"