Skip to content

Commit 59982cd

Browse files
authored
Merge pull request #28 from diffusionstudio/konstantin/fix/track-disabling
fixed disabling tracks
2 parents b6d8622 + 23c1b92 commit 59982cd

File tree

3 files changed

+47
-5
lines changed

3 files changed

+47
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@diffusionstudio/core",
33
"private": false,
4-
"version": "1.0.0",
4+
"version": "1.0.1",
55
"type": "module",
66
"description": "Build bleeding edge video processing applications",
77
"files": [

src/tracks/track/track.spec.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,32 @@ describe('The Track Object', () => {
448448
expect(updateFn).toHaveBeenCalledTimes(1);
449449
expect(exitFn).toHaveBeenCalledTimes(1);
450450
});
451+
452+
it('should remove the visible clip when disabled changes', async () => {
453+
const clip = await track.add(new Clip());
454+
455+
const exitSpy = vi.spyOn(clip, 'exit');
456+
const computeFrameSpy = vi.spyOn(comp, 'computeFrame');
457+
expect(updateMock).toBeCalledTimes(0);
458+
expect(computeFrameSpy).toBeCalledTimes(0);
459+
expect(track.disabled).toBe(false);
460+
expect(track.view.children.length).toBe(1);
461+
462+
track.disabled = true;
463+
464+
expect(updateMock).toBeCalledTimes(1);
465+
expect(computeFrameSpy).toBeCalledTimes(1);
466+
expect(exitSpy).toBeCalledTimes(1);
467+
expect(track.view.children.length).toBe(0);
468+
expect(track.disabled).toBe(true);
469+
470+
track.disabled = false;
471+
472+
expect(updateMock).toBeCalledTimes(2);
473+
expect(computeFrameSpy).toBeCalledTimes(2);
474+
expect(track.view.children.length).toBe(1);
475+
expect(track.disabled).toBe(false);
476+
});
451477
});
452478

453479
describe("The Track Object's layers method", () => {

src/tracks/track/track.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,9 @@ type Events = {
2626
}
2727

2828
export class Track<Clp extends Clip> extends EventEmitterMixin<Events, typeof Serializer>(Serializer) {
29+
private _disabled: boolean = false;
30+
2931
public view = new Container();
30-
/**
31-
* Controls the visability of the track
32-
*/
33-
public disabled: boolean = false;
3432

3533
/**
3634
* The clips to be displayed
@@ -57,6 +55,24 @@ export class Track<Clp extends Clip> extends EventEmitterMixin<Events, typeof Se
5755
*/
5856
public strategy: InsertStrategy<InsertMode> = new DefaultInsertStrategy();
5957

58+
/**
59+
* Controls the visability of the track
60+
*/
61+
public get disabled(): boolean {
62+
return this._disabled;
63+
}
64+
65+
public set disabled(value: boolean) {
66+
if (value && this.clipRef && inGraph(this.clipRef)) {
67+
this.view.removeChild(this.clipRef.view);
68+
this.clipRef?.exit();
69+
}
70+
71+
this._disabled = value;
72+
73+
this.trigger('update', undefined);
74+
}
75+
6076
/**
6177
* Connect the track with the composition
6278
*/

0 commit comments

Comments
 (0)