diff --git a/resources/lib/ArtworkLoader.py b/resources/lib/ArtworkLoader.py index 87b8d6f..65f3811 100644 --- a/resources/lib/ArtworkLoader.py +++ b/resources/lib/ArtworkLoader.py @@ -121,7 +121,10 @@ class ArtworkRotationThread(threading.Thread): itemLastRun = datetime.today() last_id = current_id - xbmc.sleep(1000) + if(xbmc.abortRequested == True): + break + + xbmc.sleep(500) try: self.saveLastBackground() diff --git a/resources/lib/MenuLoad.py b/resources/lib/MenuLoad.py index 26fdab5..b473047 100644 --- a/resources/lib/MenuLoad.py +++ b/resources/lib/MenuLoad.py @@ -10,6 +10,7 @@ import xbmcaddon import xml.etree.ElementTree as xml import os import threading +from datetime import datetime class LoadMenuOptionsThread(threading.Thread): @@ -54,21 +55,29 @@ class LoadMenuOptionsThread(threading.Thread): except: lastModLast = 0; + lastRun = datetime.today() + while (xbmc.abortRequested == False): - favourites_file = os.path.join(xbmc.translatePath('special://profile'), "favourites.xml") - try: - lastMod = os.stat(favourites_file).st_mtime - except: - lastMod = 0; + td = datetime.today() - lastRun + secTotal = td.seconds - if(lastFavPath != favourites_file or lastModLast != lastMod): - self.loadMenuOptions(favourites_file) + if(secTotal > 10): + + favourites_file = os.path.join(xbmc.translatePath('special://profile'), "favourites.xml") + try: + lastMod = os.stat(favourites_file).st_mtime + except: + lastMod = 0; - lastFavPath = favourites_file - lastModLast = lastMod + if(lastFavPath != favourites_file or lastModLast != lastMod): + self.loadMenuOptions(favourites_file) + + lastFavPath = favourites_file + lastModLast = lastMod + lastRun = datetime.today() - xbmc.sleep(3000) + xbmc.sleep(500) self.logMsg("LoadMenuOptionsThread Exited") diff --git a/resources/lib/WebSocketClient.py b/resources/lib/WebSocketClient.py index 2536395..0565ac8 100644 --- a/resources/lib/WebSocketClient.py +++ b/resources/lib/WebSocketClient.py @@ -88,7 +88,8 @@ class WebSocketThread(threading.Thread): if(self.client != None): self.logMsg("Stopping Client") self.keepRunning = False - self.client.keep_running = False + self.client.keep_running = False + self.client.close() self.logMsg("Stopping Client : KeepRunning set to False") ''' try: diff --git a/resources/lib/websocket.py b/resources/lib/websocket.py index 2dafc7d..3ed35bb 100644 --- a/resources/lib/websocket.py +++ b/resources/lib/websocket.py @@ -688,6 +688,13 @@ class WebSocket(object): reason: the reason to close. This must be string. """ + + try: + self.sock.shutdown(socket.SHUT_RDWR) + except: + pass + + ''' if self.connected: if status < 0 or status >= ABNF.LENGTH_16: raise ValueError("code is invalid range") @@ -705,9 +712,11 @@ class WebSocket(object): except: pass self.sock.settimeout(timeout) + print("SHUTDOWN ON SOCKET CALLED") self.sock.shutdown(socket.SHUT_RDWR) except: pass + ''' self._closeInternal() def _closeInternal(self): @@ -817,7 +826,8 @@ class WebSocketApp(object): close websocket connection. """ self.keep_running = False - self.sock.close() + if(self.sock != None): + self.sock.close() def _send_ping(self, interval): while True: @@ -847,7 +857,7 @@ class WebSocketApp(object): try: self.sock = WebSocket(self.get_mask_key, sockopt=sockopt, sslopt=sslopt) - self.sock.settimeout(2)#default_timeout) + self.sock.settimeout(default_timeout) self.sock.connect(self.url, header=self.header) self._callback(self.on_open)