Add a 5 second timeout when setting suspending/resuming motion detection.Log errors appropriately

This commit is contained in:
Isaac Connor 2021-05-28 10:29:44 -04:00
parent 16cc69ca2b
commit 7417d32fbc
1 changed files with 10 additions and 5 deletions

View File

@ -279,21 +279,26 @@ sub disconnect {
sub suspendMotionDetection { sub suspendMotionDetection {
my $self = shift; my $self = shift;
return 0 if ! ZoneMinder::Memory::zmMemVerify($self); return 0 if ! ZoneMinder::Memory::zmMemVerify($self);
while (ZoneMinder::Memory::zmMemRead($self, 'shared_data:active', 1)) { my $count = 50;
while ($count and ZoneMinder::Memory::zmMemRead($self, 'shared_data:active', 1)) {
ZoneMinder::Logger::Debug(1, 'Suspending motion detection'); ZoneMinder::Logger::Debug(1, 'Suspending motion detection');
ZoneMinder::Memory::zmMonitorSuspend($self); ZoneMinder::Memory::zmMonitorSuspend($self);
usleep(100000); usleep(100000);
$count -= 1;
} }
ZoneMinder::Logger::Debug(1,ZoneMinder::Memory::zmMemRead($self, 'shared_data:active', 1)); ZoneMinder::Logger::Error('Unable to suspend motion detection after 5 seconds.') if !$count;
ZoneMinder::Logger::Debug(1, ZoneMinder::Memory::zmMemRead($self, 'shared_data:active', 1));
} }
sub resumeMotionDetection { sub resumeMotionDetection {
my $self = shift; my $self = shift;
return 0 if ! ZoneMinder::Memory::zmMemVerify($self); return 0 if ! ZoneMinder::Memory::zmMemVerify($self);
#while (zmMemRead($self, 'shared_data:active', 1)) { my $count = 50;
while ($count and !ZoneMinder::Memory::zmMemRead($self, 'shared_data:active', 1)) {
ZoneMinder::Logger::Debug(1, 'Resuming motion detection'); ZoneMinder::Logger::Debug(1, 'Resuming motion detection');
ZoneMinder::Memory::zmMonitorResume($self); ZoneMinder::Memory::zmMonitorResume($self);
#} }
ZoneMinder::Logger::Error('Unable to suspend motion detection after 5 seconds.') if !$count;
return 1; return 1;
} }