Author: bklaas
Date: Fri Apr 23 11:02:00 2010
New Revision: 8727
URL: http://svn.slimdevices.com/jive?rev=8727&view=rev
Log:
Bug: 16023
Bug: 14986
Description: checkin r8726 fixed 16023 but regressed the fix for 14986
I've adopted a new approach, which is to allow a ssName to come in with the
service method screensaverWindow(), and that name is attached to self.current
when that ss window comes to screen
Then in _activate(), the check is for whether a screensaver is active and
whether self.current == 'BlankScreen'. If those conditions are met, don't do
anything (this fixes bug 14986). If those conditions are not met, go ahead and
activate the SS (this fixes 16023).
note that in most cases, by the time _activate() is called, self.current will
have been set to nil because the ss from the previous mode (e.g., going from
when playing->when stopped) will already have been popped from the stack.
That's fine, as in this case we'd want _activate() to continue going about its
business.
Modified:
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/BlankScreen/BlankScreenApplet.lua
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/Clock/ClockApplet.lua
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua
Modified:
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/BlankScreen/BlankScreenApplet.lua
URL:
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/BlankScreen/BlankScreenApplet.lua?rev=8727&r1=8726&r2=8727&view=diff
==============================================================================
---
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/BlankScreen/BlankScreenApplet.lua
(original)
+++
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/BlankScreen/BlankScreenApplet.lua
Fri Apr 23 11:02:00 2010
@@ -78,7 +78,7 @@
-- register window as a screensaver
local manager = appletManager:getAppletInstance("ScreenSavers")
- manager:screensaverWindow(self.window)
+ manager:screensaverWindow(self.window, _, _, _, 'BlankScreen')
self.window:show(Window.transitionFadeIn)
end
Modified:
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/Clock/ClockApplet.lua
URL:
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/Clock/ClockApplet.lua?rev=8727&r1=8726&r2=8727&view=diff
==============================================================================
--- 7.5/trunk/squeezeplay/src/squeezeplay/share/applets/Clock/ClockApplet.lua
(original)
+++ 7.5/trunk/squeezeplay/src/squeezeplay/share/applets/Clock/ClockApplet.lua
Fri Apr 23 11:02:00 2010
@@ -148,7 +148,7 @@
-- register window as a screensaver
local manager = appletManager:getAppletInstance("ScreenSavers")
- manager:screensaverWindow(obj.window)
+ manager:screensaverWindow(obj.window, _, _, _, 'Clock')
return obj
end
@@ -820,7 +820,7 @@
if not self.snapshot then
self.snapshot = SnapshotWindow()
local manager = appletManager:getAppletInstance("ScreenSavers")
- manager:screensaverWindow(self.snapshot)
+ manager:screensaverWindow(self.snapshot, _, _, _, 'Clock')
else
self.snapshot:refresh()
end
Modified:
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua
URL:
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua?rev=8727&r1=8726&r2=8727&view=diff
==============================================================================
---
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua
(original)
+++
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua
Fri Apr 23 11:02:00 2010
@@ -522,7 +522,7 @@
window:setAllowScreensaver(false)
local manager = appletManager:getAppletInstance("ScreenSavers")
- manager:screensaverWindow(window, true, {"add", "go", "up", "down",
"back"})
+ manager:screensaverWindow(window, true, {"add", "go", "up", "down",
"back"}, _, 'ImageViewer')
end
Modified:
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
URL:
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua?rev=8727&r1=8726&r2=8727&view=diff
==============================================================================
---
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
(original)
+++
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
Fri Apr 23 11:02:00 2010
@@ -1626,7 +1626,7 @@
-- register window as a screensaver, unless we are explicitly not in
that mode
if self.isScreensaver then
local manager = appletManager:getAppletInstance("ScreenSavers")
- manager:screensaverWindow(window)
+ manager:screensaverWindow(window, _, _, _, 'NowPlaying')
end
-- install some listeners to the window
Modified:
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua
URL:
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua?rev=8727&r1=8726&r2=8727&view=diff
==============================================================================
---
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua
(original)
+++
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua
Fri Apr 23 11:02:00 2010
@@ -226,13 +226,20 @@
function _activate(self, the_screensaver, force)
log:debug("Screensaver activate")
- -- In some situations the timer restart below tries to activate a SS
when the same one is already running.
- -- Example: Blank SS for soft power off while in Diagnostics (i.e. an
applet not allowing SS).
+ -- what screensaver, check the playmode of the current player
+ if the_screensaver == nil then
+ the_screensaver = self:_getDefaultScreensaver()
+ end
+ local screensaver = self.screensavers[the_screensaver]
+
+ -- In some situations the timer restart below tries to activate a SS
when one is already running.
+ -- We don't want to do this for BlankScreen when BlankScreen is already
active
-- This causes the backlight to turn on again after 10 seconds. #14986
- local currentScreensaver = self.active and self.active[1]
- if self:isScreensaverActive() and the_screensaver == currentScreensaver
then
- log:warn("This screensaver is already active - ignoring
activate request.")
+ if self:isScreensaverActive() and self.current == 'BlankScreen' then
+ log:warn("BlankScreen SS is currently active and we're trying
to reactivate it. Nothing to activate then, so return")
return
+ else
+ log:debug('DEBUG: self:isScreensaverActive()',
self:isScreensaverActive(), ' self.current: ', self.current)
end
-- check if the top window will allow screensavers, if not then
@@ -248,13 +255,7 @@
return
end
- -- what screensaver, check the playmode of the current player
- if the_screensaver == nil then
- the_screensaver = self:_getDefaultScreensaver()
- end
-
local year = os.date("%Y")
- local screensaver = self.screensavers[the_screensaver]
-- the "none" choice is false:false, for which the proper course is to
do nothing
if the_screensaver == 'false:false' then
@@ -506,10 +507,15 @@
If I<ssAllowedActions> is nil, no actions will be passed on. If an empty table
is sent, all actions will be passed on.
+If I<ssName> is not nil, use the ssName to store a name for the screensaver in
self.current. If nil, it gets a default name of 'unnamedScreenSaver'
+
=cut
--]]
-function screensaverWindow(self, window, scrollAllowed, ssAllowedActions,
mouseAllowed)
-
+function screensaverWindow(self, window, scrollAllowed, ssAllowedActions,
mouseAllowed, ssName)
+
+ if not ssName then
+ ssName = 'unnamedScreenSaver'
+ end
window:setIsScreensaver(true)
self:_setSSAllowedActions(scrollAllowed, ssAllowedActions, mouseAllowed)
@@ -520,6 +526,7 @@
log:debug("screensaver opened ",
#self.active)
table.insert(self.active, window)
+ self.current = ssName
self.timer:stop()
return EVENT_UNUSED
end)
@@ -528,6 +535,7 @@
window:addListener(EVENT_WINDOW_POP,
function(event)
table.delete(self.active, window)
+ self.current = nil
if #self.active == 0 then
log:debug("screensaver inactive")
self.timer:start()
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins