Tone.js/Tone/core/context/ContextInitialization.ts
2021-02-25 22:15:42 -05:00

42 lines
1 KiB
TypeScript

//-------------------------------------
// INITIALIZING NEW CONTEXT
//-------------------------------------
type Context = import("./Context").Context;
/**
* Array of callbacks to invoke when a new context is created
*/
const notifyNewContext: Array<(ctx: Context) => void> = [];
/**
* Used internally to setup a new Context
*/
export function onContextInit(cb: (ctx: Context) => void): void {
notifyNewContext.push(cb);
}
/**
* Invoke any classes which need to also be initialized when a new context is created.
*/
export function initializeContext(ctx: Context): void {
// add any additional modules
notifyNewContext.forEach(cb => cb(ctx));
}
/**
* Array of callbacks to invoke when a new context is closed
*/
const notifyCloseContext: Array<(ctx: Context) => void> = [];
/**
* Used internally to tear down a Context
*/
export function onContextClose(cb: (ctx: Context) => void): void {
notifyCloseContext.push(cb);
}
export function closeContext(ctx: Context): void {
// remove any additional modules
notifyCloseContext.forEach(cb => cb(ctx));
}