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 /blenderkit
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.
Diffstat (limited to 'blenderkit')
-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"