[Bf-extensions-cvs] [a18b93cc] blender-v2.81-release: 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.

Vilém Duha noreply at git.blender.org
Sun Nov 10 21:34:39 CET 2019


Commit: a18b93cc7251036ff0e952c684056eccef52e04f
Author: Vilém Duha
Date:   Sun Nov 10 19:58:22 2019 +0100
Branches: blender-v2.81-release
https://developer.blender.org/rBAa18b93cc7251036ff0e952c684056eccef52e04f

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.

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

M	blenderkit/__init__.py
M	blenderkit/bg_blender.py
M	blenderkit/download.py
M	blenderkit/search.py
M	blenderkit/ui.py

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

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"



More information about the Bf-extensions-cvs mailing list