diff options
author | Vilém Duha <vilda.novak@gmail.com> | 2019-11-10 21:58:22 +0300 |
---|---|---|
committer | Vilém Duha <vilda.novak@gmail.com> | 2019-11-10 21:58:22 +0300 |
commit | a18b93cc7251036ff0e952c684056eccef52e04f (patch) | |
tree | 349c6436341b1fa227b0787596f465d11169c3ff | |
parent | a8f3a26c7de25c3320a93a7de7c8acc22fef8923 (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__.py | 16 | ||||
-rw-r--r-- | blenderkit/bg_blender.py | 3 | ||||
-rw-r--r-- | blenderkit/download.py | 3 | ||||
-rw-r--r-- | blenderkit/search.py | 4 | ||||
-rw-r--r-- | blenderkit/ui.py | 5 |
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" |