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