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

Reply via email to