Revert "Make sure that LOCK is released after adding one element"

This reverts commit c05b772e90.
- Should fix a racing condition if the playlist is cleared (picked up by both kodimonitor and playqueue monitor)
This commit is contained in:
croneter 2018-06-02 17:31:57 +02:00
parent 48810a227f
commit 87b22f1588

View file

@ -179,14 +179,12 @@ class PlayqueueMonitor(Thread):
elif identical: elif identical:
LOG.debug('Detected playqueue item %s moved to position %s', LOG.debug('Detected playqueue item %s moved to position %s',
i + j, i) i + j, i)
with LOCK:
PL.move_playlist_item(playqueue, i + j, i) PL.move_playlist_item(playqueue, i + j, i)
del old[j], index[j] del old[j], index[j]
break break
else: else:
LOG.debug('Detected new Kodi element at position %s: %s ', LOG.debug('Detected new Kodi element at position %s: %s ',
i, new_item) i, new_item)
with LOCK:
try: try:
if playqueue.id is None: if playqueue.id is None:
PL.init_Plex_playlist(playqueue, kodi_item=new_item) PL.init_Plex_playlist(playqueue, kodi_item=new_item)
@ -199,10 +197,10 @@ class PlayqueueMonitor(Thread):
pass pass
except IndexError: except IndexError:
# This is really a hack - happens when using Addon Paths # This is really a hack - happens when using Addon Paths
# and repeatedly starting the same element. Kodi will # and repeatedly starting the same element. Kodi will then
# then not pass kodi id nor file path AND will also not # not pass kodi id nor file path AND will also not
# start-up playback. Hence kodimonitor kicks off # start-up playback. Hence kodimonitor kicks off playback.
# playback. Also see kodimonitor.py - _playlist_onadd() # Also see kodimonitor.py - _playlist_onadd()
pass pass
else: else:
for j in range(i, len(index)): for j in range(i, len(index)):
@ -213,7 +211,6 @@ class PlayqueueMonitor(Thread):
# Kodi exit # Kodi exit
return return
LOG.debug('Detected deletion of playqueue element at pos %s', i) LOG.debug('Detected deletion of playqueue element at pos %s', i)
with LOCK:
PL.delete_playlist_item_from_PMS(playqueue, i) PL.delete_playlist_item_from_PMS(playqueue, i)
LOG.debug('Done comparing playqueues') LOG.debug('Done comparing playqueues')
@ -226,6 +223,7 @@ class PlayqueueMonitor(Thread):
if stopped(): if stopped():
break break
sleep(1000) sleep(1000)
with LOCK:
for playqueue in PLAYQUEUES: for playqueue in PLAYQUEUES:
kodi_pl = js.playlist_get_items(playqueue.playlistid) kodi_pl = js.playlist_get_items(playqueue.playlistid)
if playqueue.old_kodi_pl != kodi_pl: if playqueue.old_kodi_pl != kodi_pl:
@ -234,9 +232,6 @@ class PlayqueueMonitor(Thread):
# Only initialize if directly fired up using direct # Only initialize if directly fired up using direct
# paths. Otherwise let default.py do its magic # paths. Otherwise let default.py do its magic
LOG.debug('Not yet initiating playback') LOG.debug('Not yet initiating playback')
elif playqueue.pkc_edit:
playqueue.pkc_edit = False
LOG.debug('PKC just edited the playqueue - skipping')
else: else:
# compare old and new playqueue # compare old and new playqueue
self._compare_playqueues(playqueue, kodi_pl) self._compare_playqueues(playqueue, kodi_pl)