wait for the main addon load to finish before doing refresh

This commit is contained in:
faush01
2014-11-05 15:10:51 +11:00
parent 63f8ec5ea2
commit f445d61dc6
2 changed files with 30 additions and 16 deletions

View File

@@ -12,6 +12,11 @@ from DownloadUtils import DownloadUtils
class DataManager():
cacheDataResult = None
dataUrl = None
cacheDataPath = None
canRefreshNow = False
def getCacheValidatorFromData(self, result):
result = result.get("Items")
if(result == None):
@@ -90,8 +95,11 @@ class DataManager():
result = self.loadJasonData(jsonData)
# start a worker thread to process the cache validity
self.cacheDataResult = result
self.dataUrl = url
self.cacheDataPath = cacheDataPath
actionThread = CacheManagerThread()
actionThread.setCacheData(result, url, cacheDataPath)
actionThread.setCacheData(self)
actionThread.start()
xbmc.log("Cache_Data_Manager: Returning Cached Result")
@@ -104,40 +112,43 @@ class DataManager():
cachedfie.write(jsonData)
cachedfie.close()
result = self.loadJasonData(jsonData)
xbmc.log("Cache_Data_Manager: Returning Loaded Result")
self.cacheManagerFinished = True
xbmc.log("Cache_Data_Manager: Returning Loaded Result")
return result
class CacheManagerThread(threading.Thread):
cacheDataResult = None
dataUrl = None
cacheDataPath = None
dataManager = None
def setCacheData(self, cacheData, url, path):
self.cacheDataResult = cacheData
self.dataUrl = url
self.cacheDataPath = path
def setCacheData(self, data):
self.dataManager = data
def run(self):
dataManager = DataManager()
xbmc.log("Cache_Data_Manager: CacheManagerThread Started")
cacheValidatorString = dataManager.getCacheValidatorFromData(self.cacheDataResult)
cacheValidatorString = self.dataManager.getCacheValidatorFromData(self.dataManager.cacheDataResult)
xbmc.log("Cache_Data_Manager: Cache Validator String (" + cacheValidatorString + ")")
jsonData = DownloadUtils().downloadUrl(self.dataUrl, suppress=False, popup=1)
loadedResult = dataManager.loadJasonData(jsonData)
loadedValidatorString = dataManager.getCacheValidatorFromData(loadedResult)
jsonData = DownloadUtils().downloadUrl(self.dataManager.dataUrl, suppress=False, popup=1)
loadedResult = self.dataManager.loadJasonData(jsonData)
loadedValidatorString = self.dataManager.getCacheValidatorFromData(loadedResult)
xbmc.log("Cache_Data_Manager: loaded Validator String (" + loadedValidatorString + ")")
# if they dont match then save the data and trigger a content reload
if(cacheValidatorString != loadedValidatorString):
xbmc.log("Cache_Data_Manager: CacheManagerThread Saving new cache data and reloading container")
cachedfie = open(self.cacheDataPath, 'w')
cachedfie = open(self.dataManager.cacheDataPath, 'w')
cachedfie.write(jsonData)
cachedfie.close()
# we need to refresh but will wait until the main function has finished
while(self.dataManager.canRefreshNow == False):
xbmc.log("Cache_Data_Manager: Not finished yet")
xbmc.sleep(100)
xbmc.log("Cache_Data_Manager: Sending container refresh")
xbmc.executebuiltin("Container.Refresh")
xbmc.log("Cache_Data_Manager: CacheManagerThread Exited")

View File

@@ -152,6 +152,7 @@ except:
xbmc.log ("MBCon -> LogLevel: " + str(logLevel))
downloadUtils = DownloadUtils()
dataManager = DataManager()
def mainEntryPoint():
@@ -263,6 +264,8 @@ def mainEntryPoint():
WINDOW = xbmcgui.Window( 10000 )
#WINDOW.clearProperty("MB3.Background.Item.FanArt")
dataManager.canRefreshNow = True
if(ProfileCode):
pr.disable()
ps = pstats.Stats(pr)
@@ -935,7 +938,7 @@ def getContent(url, pluginhandle):
progress.update(0, "Retrieving Data")
# use the data manager to get the data
result = DataManager().GetContent(url)
result = dataManager.GetContent(url)
if result == None or len(result) == 0:
if(progress != None):