=== jive/JiveMain.lua ================================================================== --- jive/JiveMain.lua (revision 39693) +++ jive/JiveMain.lua (local) @@ -202,7 +202,7 @@ currentPlayer:setPower(false, nil, isServerRequest) end --todo: also pause/power off local player since local player might be playing and not be the current player - appletManager:callService("activateScreensaver") + appletManager:callService("activateScreensaver", isServerRequest) elseif _softPowerState == "on" then log:info("Turn soft power on") --todo: Define what should happen for a non-jive remote player. Currently if a server is down, locally a SS will engage, but when the server === jive/utils/datetime.lua ================================================================== --- jive/utils/datetime.lua (revision 39693) +++ jive/utils/datetime.lua (local) @@ -494,7 +494,7 @@ function getCurrentTime() -- if the time has not been set, return an empty string if not timeSet then - if tonumber(os.date("%Y")) < 2000 then + if tonumber(os.date("%Y")) < 2010 then return "" end === applets/BlankScreen/BlankScreenApplet.lua ================================================================== --- applets/BlankScreen/BlankScreenApplet.lua (revision 39693) +++ applets/BlankScreen/BlankScreenApplet.lua (local) @@ -101,6 +101,9 @@ }) self.window:addWidget(self.timeLabel) else + if self.timeLabel then + self.window:removeWidget(self.timeLabel) + end self.timeLabel = nil end === applets/ScreenSavers/ScreenSaversApplet.lua ================================================================== --- applets/ScreenSavers/ScreenSaversApplet.lua (revision 39693) +++ applets/ScreenSavers/ScreenSaversApplet.lua (local) @@ -223,14 +223,16 @@ --screensaver set for the current mode is activated. -- the force arg is set to true for preview, allowing screensavers that might be not shown in certain circumstances to still be previewed -- see ClockApplet for example -function _activate(self, the_screensaver, force) +function _activate(self, the_screensaver, force, isServerRequest) log:debug("Screensaver activate") -- what screensaver, check the playmode of the current player if the_screensaver == nil then - the_screensaver = self:_getDefaultScreensaver() + self.currentSS = self:_getDefaultScreensaver() + else + self.currentSS = the_screensaver end - local screensaver = self.screensavers[the_screensaver] + local screensaver = self.screensavers[self.currentSS] -- 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 @@ -258,18 +260,28 @@ local year = os.date("%Y") -- the "none" choice is false:false, for which the proper course is to do nothing - if the_screensaver == 'false:false' then + if self.currentSS == 'false:false' then log:warn('"none" is the configured screensaver for ', self:_getMode(), ', so do nothing') return end + -- bug 15654, don't allow false:false to be the default whenOff SS when the clock is wrong + local useBlankSS = tonumber(year) < 2010 and not force and self:_getMode() == 'whenOff' and not isServerRequest + if not screensaver or not screensaver.applet -- fallback to default if screensaver.applet doesn't exist - or ( tonumber(year) < 2009 and not force and self:_getMode() == 'whenOff' ) then -- fallback to blank screensaver on whenOff and no clock - -- no screensaver, fallback to default - log:warn('The configured screensaver method ', the_screensaver, ' is not available. Falling back to default from Meta file') - local fallbackKey = self.defaultSettings[self:_getMode()] - screensaver = self.screensavers[fallbackKey] - -- return + or useBlankSS then -- fallback to blank screensaver on whenOff and no clock + + if useBlankSS then + -- bug 16148: special case, fall back to blank SS for whenOff and the clock not set and not a server request + log:warn('Clock is not set properly, so fallback to blank screen SS') + self.currentSS = 'BlankScreen:openScreensaver' + screensaver = self.screensavers[self.currentSS] + else + -- no screensaver, fallback to default + log:warn('The configured screensaver method ', self.currentSS, ' is not available. Falling back to default from Meta file') + self.currentSS = self.defaultSettings[self:_getMode()] + screensaver = self.screensavers[self.currentSS] + end end if screensaver.applet then @@ -288,8 +300,8 @@ --service method -function activateScreensaver(self) - self:_activate(nil) +function activateScreensaver(self, isServerRequest) + self:_activate(nil, _, isServerRequest) end @@ -455,7 +467,7 @@ return EVENT_UNUSED end - local ss = self:_getOffScreensaver() + local ss = self.currentSS or self:_getOffScreensaver() if ss then local screensaver = self.screensavers[ss]