Author: titmuss
Date: Wed Nov  5 14:39:54 2008
New Revision: 3292

URL: http://svn.slimdevices.com?rev=3292&root=Jive&view=rev
Log:
 [EMAIL PROTECTED] (orig r3272):  bklaas | 2008-11-04 14:32:13 +0000
 Bug: n/a
 Description: add string for FULLSCREEN checkbox
 
 [EMAIL PROTECTED] (orig r3273):  bklaas | 2008-11-04 15:18:16 +0000
 Bug: 9884
 Description: make play/pause icon correct on track change
 
 [EMAIL PROTECTED] (orig r3274):  titmuss | 2008-11-04 15:26:35 +0000
 Bug: N/A
 Description:
 Added support for 'serv' and 'dsco' slimproto commands to SqueezePlay.
 Initial testing against SN. SN needs support adding for SqueezePlay, see bug 
9900.
 
 
 [EMAIL PROTECTED] (orig r3275):  titmuss | 2008-11-04 15:30:45 +0000
 Bug: 9876
 Description:
 Add support for power management on jive during audio playback.
 
 
 [EMAIL PROTECTED] (orig r3276):  titmuss | 2008-11-04 15:31:05 +0000
 Bug: 9876
 Description: 
 Add support for power management on jive during audio playback.
 
 
 [EMAIL PROTECTED] (orig r3277):  titmuss | 2008-11-04 18:15:41 +0000
 Bug: N/A
 Description:
 Turn off some debug.
 
 
 [EMAIL PROTECTED] (orig r3278):  bklaas | 2008-11-04 22:44:37 +0000
 Bug: 9821
 Description: allow optional windowStyle param to be sent to setup windows for 
setupLanguage and setupWelcome
 add setuptitle style to FullscreenSkin (not necessary for default skin, as 
squeezeplay_jive's SetupWelcome will not use setuptitle as a style)
 use setuptitle style in local setupWelcome windows
 [EMAIL PROTECTED] (orig r3280):  tom | 2008-11-04 22:48:24 +0000
 applet init work - use load+register strategy with loadPriority.lua
 [EMAIL PROTECTED] (orig r3281):  titmuss | 2008-11-05 14:58:52 +0000
 Bug: N/A
 Description:
 Fix crasher when remote host terminates streaming connection.
 
 
 [EMAIL PROTECTED] (orig r3282):  tom | 2008-11-05 17:08:22 +0000
 Bug 9823:
 Description: 
 User settings now in <user home>/.squeezeplay/userpath/ . Will check for old 
setting location if new isn't found. This directory is included at the end of 
the lua path.
 [EMAIL PROTECTED] (orig r3283):  titmuss | 2008-11-05 17:55:48 +0000
 Bug: N/A
 Description:
 Correct the elapsed track time. This sometimes could go negative at the start 
of a track.
 
 
 [EMAIL PROTECTED] (orig r3284):  tom | 2008-11-05 18:51:27 +0000
 Bug 9823:
 Description: 
 User settings now in <user home>/.squeezeplay/userpath/ . Will check for old 
setting location if new isn't found. This directory is included at the end of 
the lua path. - Move declaration to top
 [EMAIL PROTECTED] (orig r3285):  bklaas | 2008-11-05 19:25:27 +0000
 Bug: 9898
 Description: Don't just think faster...BE faster
 
 [EMAIL PROTECTED] (orig r3286):  tom | 2008-11-05 20:14:06 +0000
 fix compiler error, ssize_t doesn't exist in windows
 [EMAIL PROTECTED] (orig r3288):  titmuss | 2008-11-05 22:28:52 +0000
 Bug: N/A
 Description:
 Warn, warn, warn and warn again. And bug fixes needed due to the excessive 
warnings.
 
 

Modified:
    7.4/trunk/   (props changed)
    7.4/trunk/squeezeplay/src/squeezeplay/configure
    7.4/trunk/squeezeplay/src/squeezeplay/configure.in
    
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/Playback/PlaybackApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectPlayer/SelectPlayerApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectSkin/SelectSkinApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/Socket.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_vorbis.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h
    7.4/trunk/squeezeplay/src/squeezeplay/src/common.h
    7.4/trunk/squeezeplay/src/squeezeplay/src/jive.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive.h
    7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_event.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_font.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_label.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_textinput.c
    
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/SetupWelcome/SetupWelcomeApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua

Propchange: 7.4/trunk/
------------------------------------------------------------------------------
--- svk:merge (original)
+++ svk:merge Wed Nov  5 14:39:54 2008
@@ -2,7 +2,7 @@
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.1/branches/discovery-refactor:2596
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.1/trunk:2920
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.2/trunk:2921
-bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.3/trunk:3269
+bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.3/trunk:3288
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/7.0:2013
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/SN:1083
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/scrolling:1378

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/configure
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/configure?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/configure (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/configure Wed Nov  5 14:39:54 2008
@@ -21429,7 +21429,7 @@
 
 if test x"$GCC" = x"yes"
 then
-       CFLAGS="$CFLAGS -Wall -Werror"
+       CFLAGS="$CFLAGS -Wall -Wextra -Werror -Wdeclaration-after-statement 
-Wpointer-arith -Wcast-align -Wno-unused-parameter"
 fi
 
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/configure.in
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/configure.in?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/configure.in (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/configure.in Wed Nov  5 14:39:54 2008
@@ -129,7 +129,7 @@
 dnl Be pedantic when compiling
 if test x"$GCC" = x"yes"
 then
-       CFLAGS="$CFLAGS -Wall -Werror"
+       CFLAGS="$CFLAGS -Wall -Wextra -Werror -Wdeclaration-after-statement 
-Wpointer-arith -Wcast-align -Wno-unused-parameter"
 fi
 
 

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -255,8 +255,8 @@
        end
 
        if player:getId() ~= self.player:getId() then
-               log:warn("notification was not for this player")
-               log:warn("notification: ", player:getId(), "your player: ", 
self.player:getId())
+               log:info("notification was not for this player")
+               log:info("notification: ", player:getId(), "your player: ", 
self.player:getId())
                return false
        else
                return true
@@ -530,6 +530,16 @@
                        artwork = self[windowStyle].artwork,
        })
 
+       local playIcon = Button(Icon('play'),
+                               function() 
+                               window:dispatchNewEvent(EVENT_KEY_PRESS, 
KEY_PAUSE) 
+                               return EVENT_CONSUME 
+                       end
+                       )
+       if playerStatus and playerStatus.mode == 'play' then
+               playIcon:setStyle('pause')
+       end
+
        self[windowStyle].controlsGroup = Group(components.npcontrols, {
                        rew = Button(
                                Icon('rew'),
@@ -538,14 +548,8 @@
                                        return EVENT_CONSUME 
                                end
                        ),
-                       play = Button(
-                               Icon('play'),
-                               function() 
-                                       
window:dispatchNewEvent(EVENT_KEY_PRESS, KEY_PAUSE) 
-                                       return EVENT_CONSUME 
-                               end
-                       ),
-                       fwd = Button(
+                       play = playIcon,
+                       fwd  = Button(
                                Icon('fwd'),
                                function() 
                                        
window:dispatchNewEvent(EVENT_KEY_PRESS, KEY_FWD) 

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/Playback/PlaybackApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/applets/Playback/PlaybackApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/Playback/PlaybackApplet.lua 
(original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/Playback/PlaybackApplet.lua 
Wed Nov  5 14:39:54 2008
@@ -70,7 +70,7 @@
                                        end
 
 
-                                       
metaState.player:free(metaState.player:getSlimServer())
+                                       
metaState.player:destroy(metaState.player:getSlimServer())
                                        metaState.player = nil
 
                                        settings.serverName = nil

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectPlayer/SelectPlayerApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectPlayer/SelectPlayerApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectPlayer/SelectPlayerApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectPlayer/SelectPlayerApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -289,9 +289,13 @@
 end
 
 
-function setupShowSelectPlayer(self, setupNext)
+function setupShowSelectPlayer(self, setupNext, windowStyle)
+
+       if not windowStyle then
+               windowStyle = 'settingstitle'
+       end
        -- get list of slimservers
-       local window = Window("window", self:string("SELECT_PLAYER"), 
'settingstitle')
+       local window = Window("window", self:string("SELECT_PLAYER"), 
windowStyle)
        window:setAllowScreensaver(false)
 
         local menu = SimpleMenu("albummenu")

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectSkin/SelectSkinApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectSkin/SelectSkinApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectSkin/SelectSkinApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SelectSkin/SelectSkinApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -69,7 +69,7 @@
                })
        end
        menu:addItem({
-               text = self:string("FULLSCREEN_MODE"),
+               text = self:string("FULLSCREEN"),
                icon = Checkbox(
                        "checkbox", 
                        function(object, isSelected)

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -46,16 +46,20 @@
 oo.class(_M, Applet)
 
 
-function setupShowSetupLanguage(self, setupNext)
+function setupShowSetupLanguage(self, setupNext, windowStyle)
        local currentLocale = locale:getLocale()
        log:info("locale currently is ", currentLocale)
+
+       if not windowStyle then
+               windowStyle = 'settingstitle'
+       end
 
        -- this uses private data/methods from Applet and locale. don't do this 
elsewhere,
        -- but it's needed for speed here
        self.allStrings = locale:loadAllStrings(self._entry.stringsFilepath)
 
        -- setup menu
-       local window = Window("window", self:string("CHOOSE_LANGUAGE"), 
'settingstitle')
+       local window = Window("window", self:string("CHOOSE_LANGUAGE"), 
windowStyle)
        window:setAllowScreensaver(false)
 
        local menu = SimpleMenu("menu")

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -1248,7 +1248,7 @@
 
                if sn_hostname == "www.squeezenetwork.com" then
                        self.data2.server_address = Udap.packNumber(1, 4)
-               elseif sn_hostname == "www.beta.squeezenetwork.com" then
+               elseif sn_hostname == "www.test.squeezenetwork.com" then
                        self.data2.server_address = Udap.packNumber(1, 4)
                        -- XXX the above should be this when "serv 2" in all 
firmware:
                        -- self.data2.server_address = Udap.packNumber(2, 4)

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua Wed Nov  
5 14:39:54 2008
@@ -18,7 +18,7 @@
 --]]
 
 -- stuff we use
-local package, pairs, error, load, loadfile, io, assert = package, pairs, 
error, load, loadfile, io, assert
+local package, pairs, error, load, loadfile, io, assert, os = package, pairs, 
error, load, loadfile, io, assert, os
 local setfenv, getfenv, require, pcall, unpack = setfenv, getfenv, require, 
pcall, unpack
 local tostring, tonumber, collectgarbage = tostring, tonumber, collectgarbage
 
@@ -76,9 +76,37 @@
 -- this just for the side effect of assigning our jnt local
 function __init(self, thejnt)
        jnt = thejnt
+       _initUserpathdir()
        return oo.rawnew(self, {})
 end
 
+
+function _initUserpathdir()
+       local homedir
+       local home = os.getenv("HOME")
+       if home then
+               homedir = home
+       else
+               local homepath = os.getenv("HOMEPATH")
+               homedir = homepath
+       end
+       
+       
+       local userdir = homedir .. "/.squeezeplay"
+       _userpathdir = userdir .. "/userpath"
+       _mkdirIfMissing(userdir)
+       _mkdirIfMissing(_userpathdir)
+       
+end
+
+function _mkdirIfMissing(dir)
+       if lfs.attributes(dir) == nil then
+               local created, err = lfs.mkdir(dir)
+               if not created then
+                       error (string.format ("error creating dir '%s' (%s)", 
dir, err))
+               end     
+       end
+end
 
 -- _saveApplet
 -- creates entries for appletsDb, calculates paths and module names
@@ -98,7 +126,8 @@
                        metaFilepath = dir .. "/" .. name .. "/" .. name .. 
"Meta.lua",
                        appletFilepath = dir .. "/" .. name .. "/" .. name .. 
"Applet.lua",
                        stringsFilepath = dir .. "/" .. name .. "/" .. 
"strings.txt",
-                       settingsFilepath = dir .. "/" .. name .. "/" .. 
"settings.lua",
+                       settingsFilepath = _userpathdir .. "/" .. name .. "_" 
.. "settings.lua",
+                       settingsFilepathLegacy = dir .. "/" .. name .. "/" .. 
"settings.lua",
 
                        -- lua paths
                        appletModule = "applets." .. name .. "." .. name .. 
"Applet",
@@ -190,19 +219,6 @@
                return nil
        end
        return resOrErr
-end
-
-
--- _loadMetas
--- loads the meta-information of all applets
-local function _loadMetas()
-       log:debug("_loadMetas")
-
-       for name, entry in pairs(getSortedAppletDb(_appletsDb)) do
-               if not entry.metaLoaded then
-                       _ploadMeta(entry)
-               end
-       end
 end
 
 
@@ -282,7 +298,7 @@
 end
 
 
-local function _pevalMeta(entry)
+local function _pregisterMeta(entry)
        if entry.metaLoaded and not entry.metaRegistered then
                local ok, resOrErr = pcall(_registerMeta, entry)
                if not ok then
@@ -297,15 +313,25 @@
        return true
 end
 
-
+-- _loadAndRegisterMetas
+-- loads and registers the meta-information of all applets
+local function _loadAndRegisterMetas()
+       log:debug("_loadAndRegisterMetas")
+
+       for name, entry in pairs(getSortedAppletDb(_appletsDb)) do
+               if not entry.metaLoaded then
+                       _ploadMeta(entry)
+                       if not entry.metaRegistered then
+                               _pregisterMeta(entry)
+                       end
+               end
+       end
+
+end
 -- _evalMetas
 -- evaluates the meta-information of all applets
 local function _evalMetas()
        log:debug("_evalMetas")
-
-       for name, entry in pairs(getSortedAppletDb(_appletsDb)) do
-               _pevalMeta(entry)
-       end
 
        for name, entry in pairs(getSortedAppletDb(_appletsDb)) do
                if entry.metaLoaded and not entry.metaConfigured then
@@ -346,7 +372,7 @@
        log:debug("AppletManager:loadApplets")
 
        _findApplets()
-       _loadMetas()
+       _loadAndRegisterMetas()
        _evalMetas()
 end
 
@@ -565,8 +591,8 @@
 
        local fh = io.open(entry.settingsFilepath)
        if fh == nil then
-               -- no settings file
-               return
+               -- no settings file, look for legacy settings - remove legacy 
usage after in two public releases
+               return _loadSettingsLegacy(entry)
        end
 
        local f, err = load(function() return fh:read() end)
@@ -584,6 +610,37 @@
        end
 end
 
+-- _loadSettingsLegacy - remove legacy usage after in two public releases
+--
+function _loadSettingsLegacy(entry)
+       if entry.settings then
+               -- already loaded
+               return
+       end
+
+       log:debug("_loadSettingsLegacy: ", entry.appletName)
+
+       local fh = io.open(entry.settingsFilepathLegacy)
+       if fh == nil then
+               -- no settings file
+               return
+       end
+
+       local f, err = load(function() return fh:read() end)
+       fh:close()
+
+       if not f then
+               log:error("Error reading ", entry.appletName, " legacy 
settings: ", err)
+       else
+               -- evalulate the settings in a sandbox
+               local env = {}
+               setfenv(f, env)
+               f()
+
+               entry.settings = env.settings
+       end
+end
+
 -- _getLoadPriority
 --
 function _getLoadPriority(appletDir)

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua Wed Nov 
 5 14:39:54 2008
@@ -115,6 +115,24 @@
 function _timerCallback(self)
        local status = Decode:status()
 
+       -- cpu power saving
+       local outputFullness = status.outputFull / status.outputSize * 100
+       if status.decodeSize > 0 then
+               if outputFullness < 80 then
+                       self.jnt:cpuActive(self)
+               elseif outputFullness > 99 then
+                       self.jnt:cpuInactive(self)
+               end
+       end
+
+       -- cpu power saving
+       -- note this won't enter power save for internet streams
+       local decodeFullness = status.decodeFull / status.decodeSize * 100
+       if self.stream and decodeFullness < 80 then
+               self.jnt:networkActive(self)
+       elseif not self.stream or decodeFullness > 99 then
+               self.jnt:networkInactive(self)
+       end
 
        -- enable stream reads when decode buffer is not full
        if status.decodeFull < status.decodeSize and self.stream then
@@ -314,7 +332,7 @@
                n = self.stream:read(self)
        end
 
-       self:_streamDisconnect((n == false) and TCP_CLOSE_FIN or 
TCP_CLOSE_LOCAL_RST)
+       self:_streamDisconnect((n == false) and TCP_CLOSE_FIN or 
TCP_CLOSE_REMOTE_RST)
 end
 
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua Wed 
Nov  5 14:39:54 2008
@@ -29,7 +29,7 @@
 
 
 -- stuff we use
-local _assert, tostring, table, ipairs, pairs, pcall, select, setmetatable, 
type  = _assert, tostring, table, ipairs, pairs, pcall, select, setmetatable, 
type
+local _assert, next, tostring, table, ipairs, pairs, pcall, select, 
setmetatable, type  = _assert, next, tostring, table, ipairs, pairs, pcall, 
select, setmetatable, type
 
 local io                = require("io")
 local os                = require("os")
@@ -261,32 +261,80 @@
 
 
 -- Called by the network layer when the network is active
-function networkActive(self)
-       if self.activeCount == 0 then
-               if self.activeCallback then
-                       self.activeCallback(true)
-               end
-       end
-
-       self.activeCount = self.activeCount + 1
+function networkActive(self, obj)
+       self.networkActiveCount[obj] = 1
+
+       local isempty = next(self.networkActiveCount)
+
+       if isempty and not self.networkIsActive then
+               if self.networkActiveCallback then
+                       self.networkActiveCallback(true)
+               end
+
+               self.networkIsActive = true
+       end
 end
 
 
 -- Called by the network layer when the network is inactive
-function networkInactive(self)
-       self.activeCount = self.activeCount - 1
-
-       if self.activeCount == 0 then
-               if self.activeCallback then
-                       self.activeCallback(false)
-               end
+function networkInactive(self, obj)
+       self.networkActiveCount[obj] = nil
+
+       local isempty = next(self.networkActiveCount)
+
+       if not isempty and self.networkIsActive then
+               if self.networkActiveCallback then
+                       self.networkActiveCallback(false)
+               end
+
+               self.networkIsActive = false
        end
 end
 
 
 -- Register a network active callback for power management
 function registerNetworkActive(self, callback)
-       self.activeCallback = callback
+       self.networkActiveCallback = callback
+end
+
+
+-- Called by the network layer when the cpu is active (used for audio
+-- playback)
+function cpuActive(self, obj)
+       self.cpuActiveCount[obj] = 1
+
+       local isempty = next(self.cpuActiveCount)
+
+       if isempty and not self.cpuIsActive then
+               if self.cpuActiveCallback then
+                       self.cpuActiveCallback(true)
+               end
+
+               self.cpuIsActive = true
+       end
+end
+
+
+-- Called by the network layer when the cpu is inactive (used for audio
+-- playback)
+function cpuInactive(self, obj)
+       self.cpuActiveCount[obj] = nil
+
+       local isempty = next(self.cpuActiveCount)
+
+       if not isempty and self.cpuIsActive then
+               if self.cpuActiveCallback then
+                       self.cpuActiveCallback(false)
+               end
+
+               self.cpuIsActive = false
+       end
+end
+
+
+-- Register a cpu active callback for power management
+function registerCpuActive(self, callback)
+       self.cpuActiveCallback = callback
 end
 
 
@@ -386,7 +434,11 @@
                -- list of objects for notify
                subscribers = {},
 
-               activeCount = 0,
+               networkActiveCount = {},
+               networkIsActive = false,
+
+               cpuActiveCount = {},
+               cpuIsActive = false,
        })
 
        -- subscriptions are gc weak

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua Wed Nov  
5 14:39:54 2008
@@ -277,11 +277,6 @@
                }
        end,
 
-       body = function(self, packet)
-               -- XXXX
-               log:warn("TODO")
-       end,
-
        cont = function(self, packet)
                return {
                        icyMetaInterval = unpackNumber(packet, 5, 4),
@@ -291,16 +286,21 @@
        end,
 
        dsco = function(self, packet)
+               return { }
+       end,
+
+       serv = function(self, packet)
+               return {
+                       serverip = unpackNumber(packet, 5, 4),
+               }
+       end,
+
+       http = function(self, packet)
                -- XXXX
                log:warn("TODO")
        end,
 
-       serv = function(self, packet)
-               -- XXXX
-               log:warn("TODO")
-       end,
-
-       http = function(self, packet)
+       body = function(self, packet)
                -- XXXX
                log:warn("TODO")
        end,
@@ -335,6 +335,25 @@
        -- reconnect timer
        obj.reconnectTimer = Timer(0, function() _handleTimer(obj) end, true)
 
+       -- subscriptions
+       obj:subscribe("dsco", function(_, data)
+               log:info("server told us to disconnect")
+               obj:disconnect()
+       end)
+
+       obj:subscribe("serv", function(_, data)
+               local server = data.serverip
+
+               if server == 1 then
+                       server = "www.squeezenetwork.com"
+               else
+                       server = "www.test.squeezenetwork.com"
+               end
+
+               log:info("server told us to connect to ", server)
+               obj:connect(server)
+       end)
+
        return obj
 end
 
@@ -416,6 +435,10 @@
                self.serverip = serverip
                self.reconnect = false
        end
+
+       -- Bug 9900
+       -- Don't allow connections to SN yet
+       assert(not string.match(self.serverip, "squeezenetwork.com"))
 
        self.socket = SocketTcp(self.jnt, self.serverip, PORT, "SlimProto")
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/Socket.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/Socket.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/Socket.lua (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/net/Socket.lua Wed Nov  5 
14:39:54 2008
@@ -116,7 +116,7 @@
 function socketActive(self)
        if not self.active then
                self.active = true
-               self.jnt:networkActive()
+               self.jnt:networkActive(self)
        end
 end
 
@@ -124,7 +124,7 @@
 function socketInactive(self)
        if self.active then
                self.active = false
-               self.jnt:networkInactive()
+               self.jnt:networkInactive(self)
        end
 end
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/LocalPlayer.lua Wed 
Nov  5 14:39:54 2008
@@ -56,7 +56,7 @@
 end
 
 
-function free(self, server)
+function destroy(self, server)
        -- close any previous connection
        if self.slimproto then
                self.slimproto:disconnect()
@@ -69,7 +69,6 @@
        end
 
        Player.free(self, server)
-
 end
 
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua Wed Nov  5 
14:39:54 2008
@@ -1234,7 +1234,7 @@
 
                if sn_hostname == "www.squeezenetwork.com" then
                        data.server_address = Udap.packNumber(1, 4)
-               elseif sn_hostname == "www.beta.squeezenetwork.com" then
+               elseif sn_hostname == "www.test.squeezenetwork.com" then
                        data.server_address = Udap.packNumber(1, 4)
                        -- XXX the above should be this when "serv 2" in all 
firmware:
                        -- data.server_address = Udap.packNumber(2, 4)

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c Wed Nov  5 
14:39:54 2008
@@ -510,7 +510,8 @@
 static int decode_status(lua_State *L) {
        size_t size, usedbytes;
        u32_t bytesL, bytesH;
-       
+       u64_t elapsed, delay;
+
        lua_newtable(L);
 
        fifo_lock(&decode_fifo);
@@ -521,8 +522,15 @@
        lua_pushinteger(L, decode_fifo.size);
        lua_setfield(L, -2, "outputSize");
        
-       lua_pushinteger(L, (u32_t)(((u64_t)(decode_elapsed_samples - 
-                       (decode_audio->delay ? decode_audio->delay() : 0)) * 
1000) / current_sample_rate));
+
+       elapsed = decode_elapsed_samples;
+       delay = decode_audio->delay ? decode_audio->delay() : 0;
+       if (elapsed > delay) {
+               elapsed -= delay;
+       }
+       elapsed = (elapsed * 1000) / current_sample_rate;
+
+       lua_pushinteger(L, (u32_t)elapsed);
        lua_setfield(L, -2, "elapsed");
        
        /* get jiffies here so they correlate with "elapsed" as closely as 
possible */

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c Wed 
Nov  5 14:39:54 2008
@@ -376,7 +376,7 @@
 
                        fifo_lock(&decode_fifo);
 
-                       buf = areas[0].addr + (areas[0].first + offset * 
areas[0].step) / 8;
+                       buf = ((u8_t *)areas[0].addr) + (areas[0].first + 
offset * areas[0].step) / 8;
                        callback(buf, frames);
 
                        fifo_unlock(&decode_fifo);

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c Wed 
Nov  5 14:39:54 2008
@@ -70,7 +70,7 @@
        struct decode_flac *self = (struct decode_flac *) data;
        const FLAC__int32 *lptr, *rptr;
        sample_t *sbuf, *sptr;
-       int i;
+       unsigned int i;
 
        if (self->error_occurred) {
                return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c Wed Nov 
 5 14:39:54 2008
@@ -45,7 +45,7 @@
                MAD_STATE_ERROR,
        } state;
 
-       int sample_rate;
+       u32_t sample_rate;
 };
 
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c Wed 
Nov  5 14:39:54 2008
@@ -73,6 +73,10 @@
        output_started = FALSE;
 
        decode_audio->stop();
+
+       crossfade_started = FALSE;
+       transition_gain_step = 0;
+       decode_elapsed_samples = 0;
 }
 
 
@@ -237,9 +241,8 @@
        transition_samples_in_step = 0;
 
        while (decode_fifo.wptr != ptr) {
-               size_t bytes_read, samples_read, wrap, bytes_remaining;
+               size_t s, bytes_read, samples_read, wrap, bytes_remaining;
                sample_t *sptr;
-               int s;
 
                bytes_read = SAMPLES_TO_BYTES(transition_sample_step - 
transition_samples_in_step);
                wrap = fifo_bytes_until_wptr_wrap(&decode_fifo);
@@ -278,7 +281,7 @@
  * a transition - crossfade or fade in. This method applies gain
  * to both the new signal and the one that's already in the fifo.
  */
-static void decode_transition_copy_bytes(sample_t *buffer, int nbytes) {
+static void decode_transition_copy_bytes(sample_t *buffer, size_t nbytes) {
        sample_t sample, *sptr;
        int nsamples, s;
        size_t bytes_read;

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c Wed 
Nov  5 14:39:54 2008
@@ -49,8 +49,7 @@
        /* fixme: this crudely mixes the samples onto the buffer */
        for (i=0; i<MAX_SAMPLES; i++) {
                Sint32 *s, *d;
-               size_t len;
-               int j;
+               size_t j, len;
 
                if (!sample[i]) {
                        continue;

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_vorbis.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_vorbis.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_vorbis.c 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_vorbis.c Wed 
Nov  5 14:39:54 2008
@@ -90,8 +90,8 @@
 static bool_t decode_vorbis_callback(void *data) {
        struct decode_vorbis *self = (struct decode_vorbis *) data;
        vorbis_info *vi;
-       size_t nsamples;
-       int i, r, buffer_size;
+       size_t i, nsamples;
+       int r, buffer_size;
        long bytes;
        s16_t *rptr;
        sample_t *wptr;

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c Wed Nov  5 
14:39:54 2008
@@ -175,8 +175,8 @@
 }
 
 
-size_t streambuf_feed_fd(int fd) {
-       size_t n, size;
+ssize_t streambuf_feed_fd(int fd) {
+       ssize_t n, size;
 
        fifo_lock(&streambuf_fifo);
 
@@ -484,7 +484,7 @@
        u8_t buf[1024];
        u8_t *buf_ptr, *body_ptr;
        size_t header_len;
-       int n;
+       ssize_t n;
 
        /*
         * 1: Stream (self)
@@ -521,10 +521,9 @@
                return 1;
        }
 
-
        /* read buffer, but we must not overflow the stream fifo */
        n = streambuf_get_freebytes();
-       if (n > sizeof(buf)) {
+       if (n > (ssize_t)sizeof(buf)) {
                n = sizeof(buf);
        }
 
@@ -603,7 +602,8 @@
 static int stream_writeL(lua_State *L) {
        struct stream *stream;
        const char *header;
-       int n, len;
+       ssize_t n;
+       size_t len;
 
        /*
         * 1: Stream (self)

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h Wed Nov  5 
14:39:54 2008
@@ -38,7 +38,7 @@
 
 extern void streambuf_feed(u8_t *buf, size_t size);
 
-extern size_t streambuf_feed_fd(int fd);
+extern ssize_t streambuf_feed_fd(int fd);
 
 extern int streambuf_readL(lua_State *L);
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/common.h
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/common.h?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/common.h (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/common.h Wed Nov  5 14:39:54 2008
@@ -72,6 +72,7 @@
 #define PATH_SEPARATOR_CHAR    ';'
 #define PATH_SEPARATOR_STR     ";"
 #define LIBRARY_EXT            "dll"
+typedef _W64 int   ssize_t;
 #endif /* WIN32 */
 
 #ifndef DIR_SEPARATOR_CHAR

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/jive.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/jive.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/jive.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/jive.c Wed Nov  5 14:39:54 2008
@@ -167,8 +167,9 @@
 ** relative to this executable.
 */
 static void paths_setup(lua_State *L, char *app) {
-       char *temp, *binpath, *path;
-
+       char *temp, *binpath, *path, *userpath;
+       const char *home;
+       
        DEBUG_TRACE("Setting up paths");
 
        temp = malloc(PATH_MAX+1);
@@ -184,6 +185,11 @@
        path = malloc(PATH_MAX+1);
        if (!path) {
                l_message("Error", "malloc failure for path");
+               exit(-1);
+       }
+       userpath = malloc(PATH_MAX+1);
+       if (!userpath) {
+               l_message("Error", "malloc failure for userpath");
                exit(-1);
        }
 
@@ -206,6 +212,20 @@
 
        DEBUG_TRACE("* Jive binary directory: %s", binpath);
 
+    home = getenv("HOME");
+       if (home != NULL) {
+               strcpy(userpath, home);
+       } else{
+           const char *homepath = getenv("HOMEPATH");
+               if (homepath != NULL) {
+                       strcpy(userpath, homepath);             
+               } else {
+                       l_message("Error", "No user home directory found, 
looking for HOME and HOMEPATH env vars...");
+                       exit(-1);
+               }
+       }
+       
+       strcat(userpath, "/.squeezeplay/userpath");
 
        // set paths in lua (package.path & package cpath)
        lua_getglobal(L, "package");
@@ -239,6 +259,11 @@
                luaL_addstring(&b, path);
                luaL_addstring(&b, DIR_SEPARATOR_STR "?.lua;");
 
+               luaL_addstring(&b, userpath);
+               luaL_addstring(&b, DIR_SEPARATOR_STR "?.lua;");
+               luaL_addstring(&b, userpath);
+               luaL_addstring(&b, DIR_SEPARATOR_STR "?" DIR_SEPARATOR_STR 
"?.lua;");
+               
                // set lua path
                luaL_pushresult(&b);
 
@@ -289,6 +314,7 @@
        free(temp);
        free(binpath);
        free(path);
+       free(userpath); 
 }
 
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive.h
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive.h?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive.h (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive.h Wed Nov  5 14:39:54 2008
@@ -258,7 +258,7 @@
        Uint32 layout;
        Uint32 draw;
        Uint32 event;
-       Uint32 queue;
+       int queue;
        Uint32 garbage;
 };
 
@@ -352,7 +352,7 @@
 JiveFont *jive_font_ref(JiveFont *font);
 void jive_font_free(JiveFont *font);
 int jive_font_width(JiveFont *font, const char *str);
-int jive_font_nwidth(JiveFont *font, const char *str, int len);
+int jive_font_nwidth(JiveFont *font, const char *str, size_t len);
 int jive_font_height(JiveFont *font);
 int jive_font_capheight(JiveFont *font);
 int jive_font_ascend(JiveFont *font);

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_event.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_event.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_event.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_event.c Wed Nov  5 
14:39:54 2008
@@ -80,7 +80,7 @@
                luaL_error(L, "invalid Event");
        }
 
-       lua_pushinteger(L, event->type);
+       lua_pushinteger(L, (lua_Integer)event->type);
 
        return 1;
 }
@@ -92,7 +92,7 @@
                luaL_error(L, "invalid Event");
        }
 
-       lua_pushinteger(L, event->ticks);
+       lua_pushinteger(L, (lua_Integer)event->ticks);
 
        return 1;
 }
@@ -127,7 +127,7 @@
        case JIVE_EVENT_KEY_UP:
        case JIVE_EVENT_KEY_PRESS:
        case JIVE_EVENT_KEY_HOLD:
-               lua_pushinteger(L, event->u.key.code);
+               lua_pushinteger(L, (lua_Integer)event->u.key.code);
                return 1;
 
        default:

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_font.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_font.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_font.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_font.c Wed Nov  5 
14:39:54 2008
@@ -107,7 +107,7 @@
        return font->width(font, str);
 }
 
-int jive_font_nwidth(JiveFont *font, const char *str, int len) {
+int jive_font_nwidth(JiveFont *font, const char *str, size_t len) {
        int w;
        char *tmp;
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_label.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_label.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_label.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_label.c Wed Nov  5 
14:39:54 2008
@@ -66,8 +66,7 @@
 int jiveL_label_skin(lua_State *L) {
        LabelWidget *peer;
        JiveTile *bg_tile;
-       size_t num_format;
-       int i;
+       size_t i, num_format;
 
        /* stack is:
         * 1: widget
@@ -122,7 +121,7 @@
        Uint16 width, height, offset;
        int max_width = 0;
        int total_height = 0;
-       int num_lines = 0;
+       size_t num_lines = 0;
        const char *str, *ptr;
 
        peer = jive_getpeer(L, 1, &labelPeerMeta);
@@ -221,7 +220,7 @@
 int jiveL_label_layout(lua_State *L) {
        LabelWidget *peer;
        Uint16 y;
-       int i;
+       size_t i;
 
        /* stack is:
         * 1: widget
@@ -327,7 +326,7 @@
 
 
 int jiveL_label_draw(lua_State *L) {
-       int i;
+       size_t i;
 
        /* stack is:
         * 1: widget
@@ -431,7 +430,7 @@
 
 
 static void jive_label_gc_lines(LabelWidget *peer) {
-       int i;
+       size_t i;
 
        if (!peer->num_lines) {
                return;
@@ -460,7 +459,7 @@
 
 
 static void jive_label_gc_formats(LabelWidget *peer) {
-       int i;
+       size_t i;
 
        jive_label_gc_format(&peer->base);
        for (i=0; i<peer->num_format; i++) {

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_textinput.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_textinput.c?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_textinput.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_textinput.c Wed Nov  5 
14:39:54 2008
@@ -124,8 +124,7 @@
        bool drawLayer = luaL_optinteger(L, 3, JIVE_LAYER_ALL) & peer->w.layer;
 
        const char *text;
-       size_t text_len;
-       int cursor;
+       size_t cursor, text_len;
        int indent;
        SDL_Rect old_clip, new_clip;
        Uint16 text_h, text_x, text_y, text_cy, text_w, cursor_x, cursor_w, 
cursor_h;

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -784,6 +784,18 @@
        s.minititle.icon.padding  = { 0, 0, 8, 0 }
        s.minititle.icon.align    = 'right'
 
+
+       -- Based on s.title, this is for setup title style
+       s.setuptitle =
+               _uses(s.minititle, {
+                               order = { 'back', 'text', 'nowplaying', 'icon' 
},
+                               nowplaying = { img = false  },
+                             icon = {
+                                     img = Surface:loadImage(imgpath .. 
"Icons/Mini/icon_settings.png")
+                             }
+                     })
+
+
        -- Based on s.title, this is for internetradio title style
        s.internetradiotitle =
                _uses(s.minititle, {
@@ -831,6 +843,7 @@
                                      img = Surface:loadImage(imgpath .. 
"Icons/Mini/icon_settings.png")
                              }
                      })
+
 
        -- Based on s.title, this is for newmusic title style
        s.newmusictitle =

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/SetupWelcome/SetupWelcomeApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/SetupWelcome/SetupWelcomeApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/SetupWelcome/SetupWelcomeApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/SetupWelcome/SetupWelcomeApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -50,7 +50,7 @@
 
 local jiveMain         = jiveMain
 
-local welcomeTitleStyle = 'settingstitle'
+local welcomeTitleStyle = 'setuptitle'
 local disableHomeKeyDuringSetup
 local freeAppletWhenEscapingSetup
 
@@ -70,7 +70,7 @@
        }
        jiveMain:addItem(returnToSetup)
 
-       self._topWindow = appletManager:callService("setupShowSetupLanguage", 
function() self:step2() end)
+       self._topWindow = appletManager:callService("setupShowSetupLanguage", 
function() self:step2() end, 'setuptitle')
 
        disableHomeKeyDuringSetup = 
                Framework:addListener(EVENT_KEY_PRESS,
@@ -104,7 +104,7 @@
 end
 
 function step3(self)
-       return appletManager:callService("setupShowSelectPlayer", function() 
self:step4() end)
+       return appletManager:callService("setupShowSelectPlayer", function() 
self:step4() end, 'setuptitle')
 end
 
 function step4(self)

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SetupFirmwareUpgrade/SetupFirmwareUpgradeApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -290,6 +290,7 @@
        self.popup:setAllowScreensaver(false)
        self.popup:setAlwaysOnTop(true)
        self.popup:setAutoHide(false)
+       self.popup:setTransparency(false)
 
        -- no way to exit this popup
        self.upgradeListener =

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua?rev=3292&root=Jive&r1=3291&r2=3292&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
 Wed Nov  5 14:39:54 2008
@@ -148,6 +148,10 @@
        -- register network active function
        jnt:registerNetworkActive(function(active)
                self:_wlanPowerSave(active)
+       end)
+
+       jnt:registerCpuActive(function(active)
+               self:_cpuPowerOverride(active)
        end)
 
        iconbar.iconWireless:addTimer(5000,  -- every 5 seconds
@@ -584,7 +588,7 @@
 
        if self.acpower then
                -- charging
-               self:_setCPUSpeed(true)
+               self:_cpuPowerSave(true)
 
                if self.audioVolume ~= nil then
                        log:info("Restore effect volume ", self.audioVolume)
@@ -616,7 +620,7 @@
                -- battery
 
                if state == "active" then
-                       self:_setCPUSpeed(true)
+                       self:_cpuPowerSave(true)
                        self:setBrightness()
 
                        if self.audioVolume ~= nil then
@@ -628,7 +632,7 @@
                        interval = settings.dimmedTimeout
 
                elseif state == "locked" then
-                       self:_setCPUSpeed(true)
+                       self:_cpuPowerSave(true)
                        self:setBrightness()
 
                        if self.audioVolume ~= nil then
@@ -641,14 +645,14 @@
                        interval = settings.dimmedTimeout
 
                elseif state == "dimmed" then
-                       self:_setCPUSpeed(true)
+                       self:_cpuPowerSave(true)
                        self:_setBrightness(true, 8, 0)
 
                        interval = settings.sleepTimeout
 
                else
                        self:_setBrightness(true, 0, 0)
-                       self:_setCPUSpeed(false)
+                       self:_cpuPowerSave(false)
 
                        if not self.audioVolume then
                                self.audioVolume = Sample:getEffectVolume()
@@ -696,7 +700,7 @@
        self.lockedTimer = Timer(5000,
                                 function()
                                         self:_setBrightness(true, 0, 0)
-                                        self:_setCPUSpeed(false)
+                                        self:_cpuPowerSave(false)
                                 end,
                                 true)
 
@@ -981,6 +985,20 @@
 end
 
 
+function _cpuPowerSave(self, active)
+       self.cpuActive = active
+
+       self:_setCPUSpeed(self.cpuActive or self.cpuOverride)
+end
+
+
+function _cpuPowerOverride(self, active)
+       self.cpuOverride = active
+
+       self:_setCPUSpeed(self.cpuActive or self.cpuOverride)
+end
+
+
 function _setCPUSpeed(self, fast)
        local filename = "/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed"
 
@@ -1023,14 +1041,12 @@
        -- disable PS mode when on ac power, or the network and device or
        -- both active. when battery powered only disable PS mode when the
        -- user is actively using the device.
-       if self.acpower or (self.networkActive and self.powerState == "active") 
then
+       if self.acpower or self.networkActive then
                self.wireless:powerSave(false)
                self._wlanPowerSaveTimer:stop()
        else
                self._wlanPowerSaveTimer:start()
        end
-
-       self.networkActive = active
 end
 
 
@@ -1132,7 +1148,7 @@
        self.suspendPopup = popup
 
        -- make sure the cpu is fast when we resume
-       self:_setCPUSpeed(true)
+       self:_cpuPowerSave(true)
 
        -- enable frame updates
        Framework:setUpdateScreen(true)

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

Reply via email to