diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py index 6f9a4ae605ea148b64e2a1594af4b6c61a34bd1e..5c8c8e5f29cd2bc45912eed3ab924f3dcafb4ea8 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 e2596013ada19c735a4c84c151eb6673e91876b7..9d3521e4fbb37a5759bc3f69c54d7eb81fdaa3c6 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 3e4d49d6fdbcbba6f4e74d339acff031562a8b09..6c3f8ccf2620fc73cd1bf0673d355aee561b2e52 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 3f381b929d684817bad2dc5893f253f447d9c675..414b9afcddb0289d2f7fd006112efe0ad930599d 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 7c32da317cba8324df2607f4973da507b456bd21..8aa189139b885cde100cce7ba8e06b6cbcc7b4fd 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"