From 37f98b5239664e9de7049268c2c36850d006f2bb Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Tue, 22 Aug 2017 10:44:54 -0700 Subject: [PATCH] service.slice: fix rew not playing --- packages/addons/service/slice/changelog.txt | 4 ++ packages/addons/service/slice/package.mk | 2 +- .../addons/service/slice/source/default.py | 42 ++++++++++++------- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/packages/addons/service/slice/changelog.txt b/packages/addons/service/slice/changelog.txt index c88e23ed43..b8fc44b6fe 100644 --- a/packages/addons/service/slice/changelog.txt +++ b/packages/addons/service/slice/changelog.txt @@ -1,3 +1,7 @@ +102 +- Fix rew pattern not working +- Change logging to use LOGDEBUG + 101 - Fix sleep.png so all LED's turn off diff --git a/packages/addons/service/slice/package.mk b/packages/addons/service/slice/package.mk index 844191aa92..0ff3cc5e25 100644 --- a/packages/addons/service/slice/package.mk +++ b/packages/addons/service/slice/package.mk @@ -18,7 +18,7 @@ PKG_NAME="slice" PKG_VERSION="0" -PKG_REV="101" +PKG_REV="102" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="" diff --git a/packages/addons/service/slice/source/default.py b/packages/addons/service/slice/source/default.py index 214b03a18a..02a55c5b93 100644 --- a/packages/addons/service/slice/source/default.py +++ b/packages/addons/service/slice/source/default.py @@ -61,10 +61,12 @@ class PNGPatternPlayer(threading.Thread): def clearPattern(self): with open('/dev/ws2812', 'wb') as f: - f.write(bytearray(25)) + 'write null multiple times as the LEDs can get locked up with fast operations' + for n in range(5): + f.write(bytearray(25)) def playPattern(self, file, delay): - xbmc.log('playing pattern: %s' % file, xbmc.LOGNOTICE) + xbmc.log('playing pattern: %s' % file, xbmc.LOGDEBUG) 'get pixel data from a cache if available, otherwise load and calculate' if file not in self.memo: @@ -108,7 +110,7 @@ class PNGPatternPlayer(threading.Thread): else: self.patterns.put((file, repeat, delay, False)) - def stop(wait=None): + def stop(self, wait=None): self.play(None, wait=wait) def run(self): @@ -138,16 +140,24 @@ class SlicePlayer(xbmc.Player): xbmc.Player.__init__(self) 'maps kodi player speed to delay in seconds' - self.speed_map = { 1: 0.060, - 2: 0.040, - 4: 0.035, - 8: 0.030, - 16: 0.025, - 32: 0.015, + self.speed_map = {-32: 0.015, + -16: 0.025, + -8: 0.030, + -4: 0.035, + -2: 0.040, + -1: 0.060, + 0: 0.000, + 1: 0.060, + 2: 0.040, + 4: 0.035, + 8: 0.030, + 16: 0.025, + 32: 0.015, } self.speed = 1 patterns.play('startup', False, 0.02) + xbmc.log('service.slice add-on started', xbmc.LOGNOTICE) def onPlayBackEnded(self): 'Will be called when Kodi stops playing a file' @@ -169,8 +179,8 @@ class SlicePlayer(xbmc.Player): # todo: not working - xbmc.log('time offset: %d' % iTime, xbmc.LOGNOTICE) - xbmc.log('seek offset: %d' % seekOffset, xbmc.LOGNOTICE) + xbmc.log('time offset: %d' % iTime, xbmc.LOGDEBUG) + xbmc.log('seek offset: %d' % seekOffset, xbmc.LOGDEBUG) if seekOffset > 0: patterns.play('skipf') @@ -184,15 +194,17 @@ class SlicePlayer(xbmc.Player): def onPlayBackSpeedChanged(self, speed): 'Will be called when players speed changes. (eg. user FF/RW)' - xbmc.log('seek speed: %d' % speed, xbmc.LOGNOTICE) + xbmc.log('seek speed: %d' % speed, xbmc.LOGDEBUG) self.speed = speed if self.speed != 1: - patterns.play('ffwd' if self.speed > 0 else 'rew', True, self.speed_map[self.speed]) + if self.speed < 0: + patterns.play('rew', True, self.speed_map[self.speed]) + elif self.speed > 0: + patterns.play('ffwd', True, self.speed_map[self.speed]) else: patterns.stop() - #OR: patterns.play('play') ??? def onPlayBackStarted(self): 'Will be called when Kodi starts playing a file' @@ -234,4 +246,4 @@ if (__name__ == "__main__"): del SliceMonitor del SlicePlayer - del PNGPatternPlayer \ No newline at end of file + del PNGPatternPlayer