Skip to content

Commit c1d04a3

Browse files
committed
source creation fix
1 parent 4d48a78 commit c1d04a3

File tree

3 files changed

+48
-34
lines changed

3 files changed

+48
-34
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ env:
2222
SLGenerator: Visual Studio 17 2022
2323
SLDistributeDirectory: distribute
2424
SLFullDistributePath: "streamlabs-build.app/distribute" # The .app extension is required to run macOS tests correctly.
25-
LibOBSVersion: 29.1.3sl37mb16
25+
LibOBSVersion: 29.1.3sl37mb17
2626
PACKAGE_NAME: osn
2727

2828
jobs:

js/module.js

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -59,26 +59,47 @@ function createSources(sources) {
5959
const items = [];
6060
if (Array.isArray(sources)) {
6161
sources.forEach(function (source) {
62-
const newSource = obs.Input.create(source.type, source.name, source.settings);
63-
if (newSource.audioMixers) {
64-
newSource.muted = (source.muted != null) ? source.muted : false;
65-
newSource.volume = (source.volume != null) ? source.volume : 1;
66-
newSource.syncOffset =
67-
(source.syncOffset != null) ? source.syncOffset : { sec: 0, nsec: 0 };
62+
let newSource = null;
63+
try {
64+
newSource = obs.Input.create(source.type, source.name, source.settings);
65+
} catch (error) {
66+
console.error(`[OSN] Failed to create input for source "${source.name}":`, error instanceof Error ? error.message : error);
67+
return; // Skip the rest of this iteration if input creation fails
6868
}
69-
newSource.deinterlaceMode = source.deinterlaceMode;
70-
newSource.deinterlaceFieldOrder = source.deinterlaceFieldOrder;
71-
items.push(newSource);
72-
const filters = source.filters;
73-
if (Array.isArray(filters)) {
74-
filters.forEach(function (filter) {
75-
const ObsFilter = obs.Filter.create(filter.type, filter.name, filter.settings);
76-
ObsFilter.enabled = (filter.enabled != null) ? filter.enabled : true;
77-
newSource.addFilter(ObsFilter);
78-
ObsFilter.release();
79-
});
69+
70+
if (newSource) {
71+
if (newSource.audioMixers) {
72+
newSource.muted = source.muted ?? false;
73+
newSource.volume = source.volume ?? 1;
74+
newSource.syncOffset = source.syncOffset ?? { sec: 0, nsec: 0 };
75+
}
76+
newSource.deinterlaceMode = source.deinterlaceMode;
77+
newSource.deinterlaceFieldOrder = source.deinterlaceFieldOrder;
78+
items.push(newSource);
79+
80+
const filters = source.filters;
81+
if (Array.isArray(filters)) {
82+
filters.forEach(function (filter) {
83+
let ObsFilter = null;
84+
try {
85+
ObsFilter = obs.Filter.create(filter.type, filter.name, filter.settings);
86+
} catch (filterError) {
87+
console.error(`[OSN] Failed to create filter "${filter.name}" for source "${source.name}":`, filterError instanceof Error ? filterError.message : filterError);
88+
}
89+
90+
if (ObsFilter) {
91+
ObsFilter.enabled = filter.enabled ?? true;
92+
newSource.addFilter(ObsFilter);
93+
ObsFilter.release();
94+
}
95+
});
96+
}
97+
} else {
98+
console.warn(`[OSN] Input creation failed for source: ${source.name}`);
8099
}
81100
});
101+
} else {
102+
console.error(`[OSN] Invalid sources array provided:`, sources);
82103
}
83104
return items;
84105
}

js/module.ts

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1556,50 +1556,43 @@ export function createSources(sources: SourceInfo[]): IInput[] {
15561556
let newSource: IInput | null = null;
15571557

15581558
try {
1559-
// Attempt to create a new source
15601559
newSource = obs.Input.create(source.type, source.name, source.settings);
15611560
} catch (error) {
1562-
// Log the error with additional context
1563-
console.error(`[OSN] Failed to create input for source "${source.name}" with type "${source.type}":`, error);
1564-
// Optionally, you can include a custom event or logging function here
1561+
console.error(`[OSN] Failed to create input for source "${source.name}":`, error instanceof Error ? error.message : error);
1562+
return; // Skip the rest of this iteration if input creation fails
15651563
}
15661564

15671565
if (newSource) {
1568-
// Apply additional settings if the input was successfully created
15691566
if (newSource.audioMixers) {
1570-
newSource.muted = (source.muted != null) ? source.muted : false;
1571-
newSource.volume = (source.volume != null) ? source.volume : 1;
1572-
newSource.syncOffset = (source.syncOffset != null) ? source.syncOffset : {sec: 0, nsec: 0};
1567+
newSource.muted = source.muted ?? false;
1568+
newSource.volume = source.volume ?? 1;
1569+
newSource.syncOffset = source.syncOffset ?? { sec: 0, nsec: 0 };
15731570
}
15741571

15751572
newSource.deinterlaceMode = source.deinterlaceMode;
15761573
newSource.deinterlaceFieldOrder = source.deinterlaceFieldOrder;
15771574
items.push(newSource);
15781575

1579-
// Process filters for the source
15801576
const filters = source.filters;
15811577
if (Array.isArray(filters)) {
15821578
filters.forEach(function (filter) {
15831579
let ObsFilter: IFilter | null = null;
15841580

15851581
try {
1586-
// Attempt to create a filter
15871582
ObsFilter = obs.Filter.create(filter.type, filter.name, filter.settings);
1588-
} catch (error) {
1589-
// Log the error with filter context
1590-
console.error(`[OSN] Failed to create filter "${filter.name}" for source "${source.name}" with type "${filter.type}":`, error);
1583+
} catch (filterError) {
1584+
console.error(`[OSN] Failed to create filter "${filter.name}" for source "${source.name}":`, filterError instanceof Error ? filterError.message : filterError);
15911585
}
15921586

15931587
if (ObsFilter) {
1594-
ObsFilter.enabled = (filter.enabled != null) ? filter.enabled : true;
1588+
ObsFilter.enabled = filter.enabled ?? true;
15951589
newSource.addFilter(ObsFilter);
15961590
ObsFilter.release();
15971591
}
15981592
});
15991593
}
16001594
} else {
1601-
// Log a warning if the source creation failed
1602-
console.warn(`[OSN] Input creation failed for source: ${source.name} (type: ${source.type})`);
1595+
console.warn(`[OSN] Input creation failed for source: ${source.name}`);
16031596
}
16041597
});
16051598
} else {

0 commit comments

Comments
 (0)