[Bf-extensions-cvs] [d6fb9fd9] master: BlenderKit: check timers registration In some cases timers got unregistered, not sure yet why. This checks if timers are fine regularly.

Vilém Duha noreply at git.blender.org
Sat Nov 9 08:11:45 CET 2019


Commit: d6fb9fd9579299182169b54f84b96e78369a138f
Author: Vilém Duha
Date:   Sun Nov 3 10:05:15 2019 +0100
Branches: master
https://developer.blender.org/rBAd6fb9fd9579299182169b54f84b96e78369a138f

BlenderKit: check timers registration
In some cases timers got unregistered, not sure yet why.
This checks if timers are fine regularly.

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

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