--- AlarmPlugin.pm 2007/04/05 03:03:16 1.1 +++ AlarmPlugin.pm 2007/04/05 23:40:54 @@ -370,15 +370,10 @@ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my $time = $hour * 60 * 60 + $min * 60; - $::d_plugins && msg("Alarm Plugin $alarmID: Checking timer\n") if defined $interval && $min == 0; - - if ($sec == 0) { # once we've reached the beginning of a minute, only check every 60s - $interval = 60; - } + $::d_plugins && msg("Alarm Plugin $alarmID: Checking timer\n"); - if ($sec >= 50 || ! defined $interval) { # if we end up falling behind, go back to checking each second - $interval = 60-$sec; - } + # check every 15s so alarms don't lag too badly + $interval = 15; foreach my $client (Slim::Player::Client::clients()) { @@ -386,6 +381,8 @@ my $alarmtime = $client->prefGet('PLUGIN.alarmtime.'.$alarmID); if ($alarmtime) { + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(&getFuzzyTime($client)); + $time = $hour * 60 * 60 + $min * 60; if ($time == $alarmtime) { #Now Match Days @@ -406,7 +403,6 @@ || (($days == 9) && (($wday == 6) || ($wday == 0))) # weekends || (($days == 11) && ($dom == $mday) && (($month-1) == $mon))) { # exact date - $interval = 60; Slim::Utils::Timers::setTimer($client, Time::HiRes::time() + 2, \&alarmTrigger, $client); } } @@ -1181,6 +1177,15 @@ EN Fade-in seconds '}; +# for supporting FuzzyTime and having alarms sound at the *displayed* time +sub getFuzzyTime { + my $client = shift; + if ( defined($Plugins::FuzzyTime::Plugin::apiVersion) ) { + return int(Plugins::FuzzyTime::Public::getClientTime($client)); + } + return time(); +} + 1; __END__