From 0831a0414fbe4d14bbeeae74ccb4c7ddb3968abf Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <randrianasulu@gmail.com>
Date: Sat, 7 Aug 2021 20:34:14 +0300
Subject: [PATCH 5/5] Add hidden preference armed_in_gang_mode

---
 cinelerra-5.1/cinelerra/localsession.C | 7 +++++++
 cinelerra-5.1/cinelerra/localsession.h | 2 ++
 cinelerra-5.1/cinelerra/track.C        | 3 ++-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/cinelerra-5.1/cinelerra/localsession.C b/cinelerra-5.1/cinelerra/localsession.C
index 8293824c..4195a30b 100644
--- a/cinelerra-5.1/cinelerra/localsession.C
+++ b/cinelerra-5.1/cinelerra/localsession.C
@@ -103,6 +103,7 @@ LocalSession::LocalSession(EDL *edl)
 	use_max = 0;
 	solo_track_id = -1;
 	gang_tracks = GANG_NONE;
+	armed_in_gang_mode = 0;
 }
 
 LocalSession::~LocalSession()
@@ -145,6 +146,7 @@ void LocalSession::copy_from(LocalSession *that)
 	use_max = that->use_max;
 	solo_track_id = that->solo_track_id;
 	gang_tracks = that->gang_tracks;
+	armed_in_gang_mode = that->armed_in_gang_mode;
 
 	for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
 		automation_mins[i] = that->automation_mins[i];
@@ -200,6 +202,7 @@ void LocalSession::save_xml(FileXML *file, double start)
 	file->tag.set_property("BLUE_MAX", blue_max);
 	file->tag.set_property("USE_MAX", use_max);
 	file->tag.set_property("GANG_TRACKS", gang_tracks);
+	file->tag.set_property("ARMED_IN_GANG_MODE", armed_in_gang_mode);
 
 
 	for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
@@ -240,6 +243,7 @@ void LocalSession::synchronize_params(LocalSession *that)
 	if( solo_track_id < 0 || that->solo_track_id < 0 )
 		solo_track_id = that->solo_track_id;
 	gang_tracks = that->gang_tracks;
+	armed_in_gang_mode = that->armed_in_gang_mode;
 }
 
 
@@ -300,6 +304,7 @@ void LocalSession::load_xml(FileXML *file, unsigned long load_flags)
 		blue_max = file->tag.get_property("BLUE_MAX", blue_max);
 		use_max = file->tag.get_property("USE_MAX", use_max);
 		gang_tracks = file->tag.get_property("GANG_TRACKS", gang_tracks);
+		armed_in_gang_mode = file->tag.get_property("ARMED_IN_GANG_MODE", armed_in_gang_mode);
 		for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
 			if (!Automation::autogrouptypes_fixedrange[i]) {
 				automation_mins[i] = file->tag.get_property(xml_autogrouptypes_titlesmin[i],automation_mins[i]);
@@ -367,6 +372,7 @@ int LocalSession::load_defaults(BC_Hash *defaults)
 	blue_max = defaults->get("BLUE_MAX", 0.0);
 	use_max = defaults->get("USE_MAX", 0);
 	gang_tracks = defaults->get("GANG_TRACKS", GANG_NONE);
+	armed_in_gang_mode = defaults->get("ARMED_IN_GANG_MODE", 0);
 
 	for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
 		if (!Automation::autogrouptypes_fixedrange[i]) {
@@ -405,6 +411,7 @@ int LocalSession::save_defaults(BC_Hash *defaults)
 	defaults->update("BLUE_MAX", blue_max);
 	defaults->update("USE_MAX", use_max);
 	defaults->update("GANG_TRACKS", gang_tracks);
+	defaults->update("ARMED_IN_GANG_MODE", armed_in_gang_mode);
 
 	for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
 		if (!Automation::autogrouptypes_fixedrange[i]) {
diff --git a/cinelerra-5.1/cinelerra/localsession.h b/cinelerra-5.1/cinelerra/localsession.h
index 3497d07e..cae0e809 100644
--- a/cinelerra-5.1/cinelerra/localsession.h
+++ b/cinelerra-5.1/cinelerra/localsession.h
@@ -118,6 +118,8 @@ public:
 	int solo_track_id;
 // gang mode: none, channels, media
 	int gang_tracks;
+// armed works in gang mode ch/media
+	int armed_in_gang_mode;
 private:
 // The reason why selection ranges and inpoints have to be separate:
 // The selection position has to change to set new in points.
diff --git a/cinelerra-5.1/cinelerra/track.C b/cinelerra-5.1/cinelerra/track.C
index 86fbe834..5ccf3a64 100644
--- a/cinelerra-5.1/cinelerra/track.C
+++ b/cinelerra-5.1/cinelerra/track.C
@@ -1836,8 +1836,9 @@ int Track::in_gang(Track *track)
 
 int Track::is_armed()
 {
+	if (edl->local_session->armed_in_gang_mode)
 	return armed && gang_master()->armed;
-//	return gang_master()->armed;
+	return gang_master()->armed;
 }
 
 int Track::is_ganged()
-- 
2.32.0

