mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 13:08:50 +02:00
aja: Fix crash in output settings when no card present
This commit is contained in:
parent
54e5252906
commit
0aa9603a88
@ -226,6 +226,23 @@ bool aja_video_format_changed(obs_properties_t *props, obs_property_t *list,
|
||||
auto vid_fmt = static_cast<NTV2VideoFormat>(
|
||||
obs_data_get_int(settings, kUIPropVideoFormatSelect.id));
|
||||
|
||||
size_t itemCount = obs_property_list_item_count(list);
|
||||
bool itemFound = false;
|
||||
|
||||
for (size_t i = 0; i < itemCount; i++) {
|
||||
int itemFormat = obs_property_list_item_int(list, i);
|
||||
if (itemFormat == vid_fmt) {
|
||||
itemFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!itemFound) {
|
||||
obs_property_list_insert_int(list, 0, "", vid_fmt);
|
||||
obs_property_list_item_disable(list, 0, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
obs_property_t *sdi_4k_trx =
|
||||
obs_properties_get(props, kUIPropSDI4KTransport.id);
|
||||
|
||||
|
@ -780,6 +780,24 @@ bool aja_output_device_changed(void *data, obs_properties_t *props,
|
||||
populate_output_device_list(list);
|
||||
|
||||
const char *cardID = obs_data_get_string(settings, kUIPropDevice.id);
|
||||
|
||||
size_t itemCount = obs_property_list_item_count(list);
|
||||
bool itemFound = false;
|
||||
|
||||
for (size_t i = 0; i < itemCount; i++) {
|
||||
const char *itemCardID = obs_property_list_item_string(list, i);
|
||||
if (strcmp(cardID, itemCardID) == 0) {
|
||||
itemFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!itemFound) {
|
||||
obs_property_list_insert_string(list, 0, cardID, cardID);
|
||||
obs_property_list_item_disable(list, 0, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!cardID) {
|
||||
blog(LOG_ERROR, "aja_output_device_changed: Card ID is null!");
|
||||
return false;
|
||||
@ -845,14 +863,33 @@ bool aja_output_dest_changed(obs_properties_t *props, obs_property_t *list,
|
||||
|
||||
blog(LOG_DEBUG, "AJA Output Dest Changed");
|
||||
|
||||
auto &cardManager = aja::CardManager::Instance();
|
||||
cardManager.EnumerateCards();
|
||||
int dest = obs_data_get_int(settings, kUIPropOutput.id);
|
||||
|
||||
size_t itemCount = obs_property_list_item_count(list);
|
||||
bool itemFound = false;
|
||||
|
||||
for (size_t i = 0; i < itemCount; i++) {
|
||||
int itemDest = obs_property_list_item_int(list, i);
|
||||
if (dest == itemDest) {
|
||||
itemFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!itemFound) {
|
||||
obs_property_list_insert_int(list, 0, "", dest);
|
||||
obs_property_list_item_disable(list, 0, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
const char *cardID = obs_data_get_string(settings, kUIPropDevice.id);
|
||||
if (!cardID) {
|
||||
blog(LOG_ERROR, "aja_output_dest_changed: Card ID is null!");
|
||||
return false;
|
||||
}
|
||||
|
||||
auto &cardManager = aja::CardManager::Instance();
|
||||
cardManager.EnumerateCards();
|
||||
auto cardEntry = cardManager.GetCardEntry(cardID);
|
||||
if (!cardEntry) {
|
||||
blog(LOG_ERROR,
|
||||
|
@ -854,8 +854,6 @@ static void aja_source_deactivate(void *data)
|
||||
|
||||
static void aja_source_update(void *data, obs_data_t *settings)
|
||||
{
|
||||
blog(LOG_INFO, "aja_source_update: Begin callback...");
|
||||
|
||||
static bool initialized = false;
|
||||
|
||||
auto ajaSource = (AJASource *)data;
|
||||
|
Loading…
Reference in New Issue
Block a user