Author: bklaas Date: Tue Sep 14 13:13:54 2010 New Revision: 9115 URL: http://svn.slimdevices.com/jive?rev=9115&view=rev Log: Bug: n/a Description: set ifObj before calling callback in Networking.lua to avoid race condition where applets can't query iface for correct network test result Do not push diagnostics window when getNetworkResult() is positive, indicating a non-error condition Format diagnostics window with specific text in title bar for error Split network errors from server errors in SlimBrowser and SlimMenus Fix bug in ChooseMusicSourceApplet where server switch confirmation window was being erroneously called
Modified: 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua 7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua 7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua Modified: 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua URL: http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua?rev=9115&r1=9114&r2=9115&view=diff ============================================================================== --- 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua (original) +++ 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua Tue Sep 14 13:13:54 2010 @@ -441,9 +441,9 @@ return end - --Confirmation check. Also, don't show confirmation if current player is not playing and there are tracks in the playlist. + --Confirmation check. Also, don't show confirmation if current player is not playing or there are no tracks in the playlist. if not self.confirmOnChange or not currentPlayer:getSlimServer() or currentPlayer:getSlimServer() == server - or (currentPlayer:getPlayMode() ~= "play" and (not currentPlayer:getPlaylistSize() or currentPlayer:getPlaylistSize() == 0) ) then + or (currentPlayer:getPlayMode() ~= "play" or (not currentPlayer:getPlaylistSize() or currentPlayer:getPlaylistSize() == 0) ) then self:connectPlayerToServer(currentPlayer, server) else self:_confirmServerSwitch(currentPlayer, server, serverForRetry) @@ -592,6 +592,7 @@ end function _showConnectToServer(self, player, server) + if not self.connectingPopup then self.connectingPopup = Popup("waiting_popup") local window = self.connectingPopup Modified: 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua URL: http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua?rev=9115&r1=9114&r2=9115&view=diff ============================================================================== --- 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua (original) +++ 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua Tue Sep 14 13:13:54 2010 @@ -102,8 +102,9 @@ local _player = false local _server = false -local _networkOrServerError = false -local _diagWindow = false +local _networkError = false +local _serverError = false +local _diagWindow = false -- The path of enlightenment local _stepStack = {} @@ -785,10 +786,10 @@ -- debug.dump(request) -- there's an existing network or server error, so trap this request and push to a diags troubleshooting window - if _networkOrServerError then - log:warn('_networkOrServerError is not false, therefore push on an error window for diags') + if _networkError then + log:warn('_networkError is not false, therefore push on an error window for diags') local currentStep = _getCurrentStep() - _diagWindow = appletManager:callService("networkTroubleshootingMenu", _networkOrServerError) + _diagWindow = appletManager:callService("networkTroubleshootingMenu", _networkError) -- make sure we got a window generated to confirm we can leave this method if _diagWindow then -- FIXME: this part doesn't work. Menu item on home menu shows "locked" spinny icon after hitting back arrow from diags window @@ -3059,12 +3060,20 @@ function notify_networkOrServerNotOK(self, iface) - _networkOrServerError = iface -- store the interface object in _networkOrServerError + log:warn("notify_networkOrServerNotOK()") + if iface and iface:isNetworkError() then + log:warn("this is a network error") + _networkError = iface -- store the interface object in _networkError + else + log:warn("this is a server error") + _serverError = true + end end function notify_networkAndServerOK(self, iface) - _networkOrServerError = false + _networkError = false + _serverError = false if _diagWindow then _diagWindow:hide() _diagWindow = false Modified: 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua URL: http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua?rev=9115&r1=9114&r2=9115&view=diff ============================================================================== --- 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua (original) +++ 7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua Tue Sep 14 13:13:54 2010 @@ -186,13 +186,20 @@ function notify_networkOrServerNotOK(self, iface) log:warn('notify_networkOrServerNotOK') - self.networkOrServerError = iface + if iface and iface:isNetworkError() then + self.networkError = iface + else + self.networkError = false + self.serverError = true + end end function notify_networkAndServerOK(self, iface) - self.networkOrServerError = false + self.networkError = false + self.serverError = false + if self.diagWindow then self.diagWindow:hide() self.diagWindow = nil @@ -711,9 +718,9 @@ local currentPlayer = appletManager:callService("getCurrentPlayer") -- if we know there is a network error condition, push on a diags window immediately - if self.networkOrServerError then - log:warn('Network or Server reported as not OK') - self.diagWindow = appletManager:callService("networkTroubleshootingMenu", self.networkOrServerError) + if self.networkError then + log:warn('Network reported as not OK') + self.diagWindow = appletManager:callService("networkTroubleshootingMenu", self.networkError) -- make sure we got a window generated to confirm we can leave this method if self.diagWindow then log:warn("we've pushed a diag window, so we're done here") Modified: 7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua URL: http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua?rev=9115&r1=9114&r2=9115&view=diff ============================================================================== --- 7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua (original) +++ 7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua Tue Sep 14 13:13:54 2010 @@ -700,17 +700,23 @@ end local errorCode = iface:getNetworkResult() - if not errorCode then + if type(errorCode) == 'number' and errorCode >= 0 then + log:warn('A positive number means there is no error. Do not push a diags window in this condition.') + elseif type(errorCode) == 'number' then + log:warn('Error code is listed as: ', errorCode) + else log:error('There is no network problem registered on this interface') return end - local window = Window("text_list", self:string("NETWORK_PROBLEM") ) + local titleToken = self.netResultToText[errorCode] and self.netResultToText[errorCode].text or "NETWORK_PROBLEM" + local helpTextToken = self.netResultToText[errorCode] and self.netResultToText[errorCode].help or "NETWORK_PROBLEM_HELP" + + local window = Window("text_list", self:string(titleToken) ) window:setButtonAction("rbutton", nil) local menu = SimpleMenu("menu") - local helpTextToken = self.netResultToText[errorCode] and self.netResultToText[errorCode].help or "NETWORK_PROBLEM_HELP" menu:setHeaderWidget( Textarea( "help_text", self:string(helpTextToken) ) ) self:_addDiagnosticsMenuItem(menu) Modified: 7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua URL: http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua?rev=9115&r1=9114&r2=9115&view=diff ============================================================================== --- 7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua (original) +++ 7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua Tue Sep 14 13:13:54 2010 @@ -370,6 +370,13 @@ return self.wireless end + +function isNetworkError(self) + if self.networkResult and type(self.networkResult) == 'number' and self.networkResult < 0 then + return true + end + return false +end function getNetworkResult(self) @@ -2033,15 +2040,15 @@ local percentage, quality = ifObj:getSignalStrength() if (status.wpa_state ~= "COMPLETED") or (quality == 0) then + ifObj:setNetworkResult(-5) callback(false, -5) - ifObj:setNetworkResult(-5) return end callback(true, 5) else if status.link ~= true then + ifObj:setNetworkResult(-6) callback(false, -6) - ifObj:setNetworkResult(-6) return end callback(true, 6) @@ -2052,8 +2059,8 @@ -- ------------------------------------------------------------ -- Check for valid ip address if status.ip_address == nil or string.match(status.ip_address, "^169.254.") then + ifObj:setNetworkResult(-8) callback(false, -8) - ifObj:setNetworkResult(-8) return end @@ -2063,8 +2070,8 @@ -- ------------------------------------------------------------ -- Check for valid gateway if status.ip_gateway == nil then + ifObj:setNetworkResult(-10) callback(false, -10) - ifObj:setNetworkResult(-10) return end @@ -2074,8 +2081,8 @@ -- ------------------------------------------------------------ -- Check for valid dns sever ip if status.ip_dns == nil then + ifObj:setNetworkResult(-12) callback(false, -12) - ifObj:setNetworkResult(-12) return end @@ -2085,11 +2092,11 @@ -- ------------------------------------------------------------ -- Stop here if not full check is needed if not full_check then + ifObj:setNetworkResult(12) callback(false, 12, tostring(status.ip_dns)) log:debug("checkNetworkHealth task done (part)") - ifObj:setNetworkResult(12) return end @@ -2127,8 +2134,8 @@ -- ------------------------------------------------------------ -- Check for server if not server then + ifObj:setNetworkResult(-23) callback(false, -23) - ifObj:setNetworkResult(-23) return end @@ -2147,8 +2154,8 @@ -- Check for valid SN ip address if server_ip == nil then + ifObj:setNetworkResult(-27) callback(false, -27, server_name) - ifObj:setNetworkResult(-27) return end _______________________________________________ Jive-checkins mailing list Jive-checkins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/jive-checkins