mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-12 22:56:34 +00:00
Fixing double-trigger bug introduced with r3308
(see http://forum.fhem.de/index.php?t=rview&th=13437) git-svn-id: https://svn.fhem.de/fhem/trunk@3312 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
590768ed4e
commit
c17f885f98
12
fhem/fhem.pl
12
fhem/fhem.pl
@ -186,7 +186,6 @@ my $intAtCnt=0;
|
||||
my %duplicate; # Pool of received msg for multi-fhz/cul setups
|
||||
my $duplidx=0; # helper for the above pool
|
||||
my $readingsUpdateDelayTrigger; # needed internally
|
||||
my $readingsUpdateUsed; # needed internally
|
||||
my $cvsid = '$Id$';
|
||||
my $namedef =
|
||||
"where <name> is either:\n" .
|
||||
@ -1188,18 +1187,19 @@ DoSet(@)
|
||||
return CallFn($dev, "SetFn", $hash, @a) if($a[1] && $a[1] eq "?");
|
||||
|
||||
@a = ReplaceEventMap($dev, \@a, 0) if($attr{$dev}{eventMap});
|
||||
$readingsUpdateUsed = 0;
|
||||
$hash->{".triggerUsed"} = 0;
|
||||
my ($ret, $skipTrigger) = CallFn($dev, "SetFn", $hash, @a);
|
||||
return $ret if($ret);
|
||||
return undef if($skipTrigger);
|
||||
|
||||
# Backward compatibility. Use readingsUpdate in SetFn now
|
||||
if(!$readingsUpdateUsed) {
|
||||
if(!$hash->{".triggerUsed"}) {
|
||||
shift @a;
|
||||
# set arg if the module did not triggered events
|
||||
my $arg = join(" ", @a) if(!$hash->{CHANGED} || !int(@{$hash->{CHANGED}}));
|
||||
DoTrigger($dev, $arg, 0);
|
||||
}
|
||||
delete($hash->{".triggerUsed"});
|
||||
|
||||
return undef;
|
||||
}
|
||||
@ -2337,6 +2337,7 @@ DoTrigger($$@)
|
||||
my $hash = $defs{$dev};
|
||||
return "" if(!defined($hash));
|
||||
|
||||
$hash->{".triggerUsed"} = 1 if(defined($hash->{".triggerUsed"}));
|
||||
if(defined($newState)) {
|
||||
if($hash->{CHANGED}) {
|
||||
push @{$hash->{CHANGED}}, $newState;
|
||||
@ -2428,7 +2429,8 @@ CallFn(@)
|
||||
my $d = shift;
|
||||
my $n = shift;
|
||||
|
||||
if(!$defs{$d}) {
|
||||
if(!$d || !$defs{$d}) {
|
||||
$d = "<undefined>" if(!defined($d));
|
||||
Log 0, "Strange call for nonexistent $d: $n";
|
||||
return undef;
|
||||
}
|
||||
@ -3135,7 +3137,7 @@ readingsEndUpdate($$)
|
||||
my ($hash,$dotrigger)= @_;
|
||||
my $name = $hash->{NAME};
|
||||
|
||||
$readingsUpdateUsed = 1;
|
||||
$hash->{".triggerUsed"} = 1 if(defined($hash->{".triggerUsed"}));
|
||||
|
||||
# process user readings
|
||||
if(defined($hash->{'.userReadings'})) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user