Author: ayoung
Date: Thu Feb  4 11:10:41 2010
New Revision: 8454

URL: http://svn.slimdevices.com/jive?rev=8454&view=rev
Log:
bug 14515: Switching local player to new server (SbS or mySB) loses sync groups 
Only use direct connection to local player to change server if we do not have a 
connection to current server; otherwise use server to initiate switch.

Modified:
    7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua
    7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua

Modified: 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua?rev=8454&r1=8453&r2=8454&view=diff
==============================================================================
--- 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua 
(original)
+++ 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua Thu 
Feb  4 11:10:41 2010
@@ -184,20 +184,33 @@
 
 
 function connectToServer(self, server)
-       -- close any previous connection
-       self.slimproto:disconnect()
+
+       if not server then
+               log:error("No server passed to connectToServer() method")
+               return false
+       end
 
        -- make sure the server we are connecting to is awake
        server:wakeOnLan()
 
-       log:debug("connectToServer: ", server)
-       if server then
+       if self:needsMusicSource() then
+               log:info('connectToServer(): connecting localPlayer to server', 
server, ' via slimproto')
+
+               -- close any previous connection
+               self.slimproto:disconnect()
+
                server:addLocallyRequestedServer(server)
-       
                self.slimproto:connect(server)
-       end
-end
-
+       else
+               log:info('connectToServer(): switching localPlayer to server', 
server)
+               local ip, port = server:getIpPort()
+
+               server:addLocallyRequestedServer(server)
+               self:send({'connect', ip}, true)
+       end
+       return true
+
+end
 
 function connectIp(self, serverip, slimserverip)
        self.slimproto:disconnect()

Modified: 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua?rev=8454&r1=8453&r2=8454&view=diff
==============================================================================
--- 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua (original)
+++ 7.5/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua Thu Feb  4 
11:10:41 2010
@@ -379,6 +379,8 @@
 --]]
 function updatePlayerInfo(self, slimServer, playerInfo, useSequenceNumber, 
isSequenceNumberInSync)
 
+       log:debug(self, "@", slimServer, ":updatePlayerInfo connected=", 
playerInfo.connected);
+       
        -- ignore updates from a different server if the player
        -- is not connected to it
        if self.slimServer ~= slimServer 
@@ -427,6 +429,9 @@
                -- delete from old server
                if self.slimServer then
                        self:free(self.slimServer)
+                       
+                       -- refresh understanding of connected state because 
free() may have changed it
+                       self.info.connected = tonumber(playerInfo.connected) == 
1
                end
 
                -- modify the old state, as the player was not connected

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to