Turn off instantiating a default zone before even loading the zones. Implement the use of Camera->setMonitor so that the camera object doesn't have to load it later.

pull/1628/head
Isaac Connor 2016-09-09 09:15:04 -04:00
parent 6e9cb06290
commit 3a06ba7a65
3 changed files with 15 additions and 2 deletions

View File

@ -55,3 +55,8 @@ Monitor *Camera::getMonitor() {
monitor = Monitor::Load( monitor_id, false, Monitor::QUERY );
return monitor;
}
void Camera::setMonitor( Monitor *p_monitor ) {
monitor = p_monitor;
monitor_id = monitor->Id();
}

View File

@ -60,6 +60,7 @@ public:
unsigned int getId() const { return( monitor_id ); }
Monitor *getMonitor();
void setMonitor( Monitor *p_monitor );
SourceType Type() const { return( type ); }
bool IsLocal() const { return( type == LOCAL_SRC ); }
bool IsRemote() const { return( type == REMOTE_SRC ); }

View File

@ -435,7 +435,7 @@ Monitor::Monitor(
// Will this not happen every time a monitor is instantiated? Seems like all the calls to the Monitor constructor pass a zero for n_zones, then load zones after..
// In my storage areas branch, I took this out.. and didn't notice any problems.
if ( !n_zones ) {
if ( false && !n_zones ) {
Debug( 1, "Monitor %s has no zones, adding one.", name );
n_zones = 1;
zones = new Zone *[1];
@ -1996,10 +1996,11 @@ int Monitor::LoadLocalMonitors( const char *device, Monitor **&monitors, Purpose
track_motion,
signal_check_colour,
embed_exif,
purpose,
purpose,
0,
0
);
camera->setMonitor( monitors[i] );
Zone **zones = 0;
int n_zones = Zone::Load( monitors[i], zones );
monitors[i]->AddZones( n_zones, zones );
@ -2185,6 +2186,7 @@ int Monitor::LoadRemoteMonitors( const char *protocol, const char *host, const c
0,
0
);
camera->setMonitor( monitors[i] );
Zone **zones = 0;
int n_zones = Zone::Load( monitors[i], zones );
monitors[i]->AddZones( n_zones, zones );
@ -2334,6 +2336,7 @@ int Monitor::LoadFileMonitors( const char *file, Monitor **&monitors, Purpose pu
0,
0
);
camera->setMonitor( monitors[i] );
Zone **zones = 0;
int n_zones = Zone::Load( monitors[i], zones );
monitors[i]->AddZones( n_zones, zones );
@ -2490,6 +2493,8 @@ int Monitor::LoadFfmpegMonitors( const char *file, Monitor **&monitors, Purpose
0,
0
);
camera->setMonitor( monitors[i] );
Zone **zones = 0;
int n_zones = Zone::Load( monitors[i], zones );
monitors[i]->AddZones( n_zones, zones );
@ -2802,6 +2807,8 @@ Monitor *Monitor::Load( unsigned int p_id, bool load_zones, Purpose purpose ) {
);
camera->setMonitor( monitor );
int n_zones = 0;
if ( load_zones ) {
Zone **zones = 0;