diff --git a/core/__init__.py b/core/__init__.py index ccf1b26e..b232b5c2 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -27,6 +27,7 @@ class nested_dict_sqlite(defaultdict): def close(self): for key in self.keys(): self[key].close() + self.clear() db_name = filetools.join(config.get_data_path(), "db.sqlite") diff --git a/platformcode/launcher.py b/platformcode/launcher.py index 989e2d77..f3ae783f 100644 --- a/platformcode/launcher.py +++ b/platformcode/launcher.py @@ -343,9 +343,9 @@ def run(item=None): if platformtools.dialog_yesno(config.get_localized_string(60038), config.get_localized_string(60015)): run(Item(channel="setting", action="report_menu")) finally: - if not item.action.startswith('play'): - from core import db - db.close() + # db need to be closed when not used, it will cause freezes + from core import db + db.close() def new_search(item, channel=None): diff --git a/platformcode/xbmc_videolibrary.py b/platformcode/xbmc_videolibrary.py index 353d7999..f757f67e 100644 --- a/platformcode/xbmc_videolibrary.py +++ b/platformcode/xbmc_videolibrary.py @@ -102,7 +102,10 @@ def mark_auto_as_watched(item): xbmc.sleep(500) if next_episode and next_episode.next_ep: from platformcode.launcher import play_from_library - return play_from_library(next_episode) + play_from_library(next_episode) + # db need to be closed when not used, it will cause freezes + from core import db + db.close() # If it is configured to mark as seen if config.get_setting("mark_as_watched", "videolibrary"): diff --git a/service.py b/service.py index 7ea5f065..2d9ea85d 100644 --- a/service.py +++ b/service.py @@ -22,7 +22,7 @@ except: librerias = xbmc.translatePath(os.path.join(config.get_runtime_path(), 'lib')) sys.path.insert(0, librerias) -from core import videolibrarytools, filetools, channeltools, httptools, scrapertools +from core import videolibrarytools, filetools, channeltools, httptools, scrapertools, db from lib import schedule from platformcode import logger, platformtools, updater, xbmc_videolibrary from specials import videolibrary @@ -456,7 +456,6 @@ if __name__ == "__main__": if filetools.isfile(old_db_name): try: import sqlite3 - from core import db old_db_conn = sqlite3.connect(old_db_name, timeout=15) old_db = old_db_conn.cursor() @@ -522,4 +521,6 @@ if __name__ == "__main__": logger.error(traceback.format_exc()) if monitor.waitForAbort(1): # every second + # db need to be closed when not used, it will cause freezes + db.close() break