diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/js/backend.js | 3 | ||||
| -rw-r--r-- | ext/bg/js/settings/audio.js | 5 | ||||
| -rw-r--r-- | ext/mixed/js/audio-system.js | 22 | ||||
| -rw-r--r-- | ext/mixed/js/display.js | 3 | 
4 files changed, 22 insertions, 11 deletions
| diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 79402e67..9d1fa6c1 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -53,7 +53,8 @@ class Backend {          this.defaultAnkiFieldTemplates = null;          this.audioUriBuilder = new AudioUriBuilder();          this.audioSystem = new AudioSystem({ -            audioUriBuilder: this.audioUriBuilder +            audioUriBuilder: this.audioUriBuilder, +            useCache: false          });          this.ankiNoteBuilder = new AnkiNoteBuilder({              anki: this.anki, diff --git a/ext/bg/js/settings/audio.js b/ext/bg/js/settings/audio.js index 68dfe71e..98ed9b8b 100644 --- a/ext/bg/js/settings/audio.js +++ b/ext/bg/js/settings/audio.js @@ -28,7 +28,10 @@ let audioSourceUI = null;  let audioSystem = null;  async function audioSettingsInitialize() { -    audioSystem = new AudioSystem({audioUriBuilder: null}); +    audioSystem = new AudioSystem({ +        audioUriBuilder: null, +        useCache: true +    });      const optionsContext = getOptionsContext();      const options = await getOptionsMutable(optionsContext); diff --git a/ext/mixed/js/audio-system.js b/ext/mixed/js/audio-system.js index 5366e3e0..255a96de 100644 --- a/ext/mixed/js/audio-system.js +++ b/ext/mixed/js/audio-system.js @@ -66,8 +66,8 @@ class TextToSpeechAudio {  }  class AudioSystem { -    constructor({audioUriBuilder}) { -        this._cache = new Map(); +    constructor({audioUriBuilder, useCache}) { +        this._cache = useCache ? new Map() : null;          this._cacheSizeMaximum = 32;          this._audioUriBuilder = audioUriBuilder; @@ -79,10 +79,14 @@ class AudioSystem {      async getDefinitionAudio(definition, sources, details) {          const key = `${definition.expression}:${definition.reading}`; -        const cacheValue = this._cache.get(definition); -        if (typeof cacheValue !== 'undefined') { -            const {audio, uri, source} = cacheValue; -            return {audio, uri, source}; +        const hasCache = (this._cache !== null); + +        if (hasCache) { +            const cacheValue = this._cache.get(key); +            if (typeof cacheValue !== 'undefined') { +                const {audio, uri, source} = cacheValue; +                return {audio, uri, source}; +            }          }          for (const source of sources) { @@ -91,8 +95,10 @@ class AudioSystem {              try {                  const audio = await this._createAudio(uri); -                this._cacheCheck(); -                this._cache.set(key, {audio, uri, source}); +                if (hasCache) { +                    this._cacheCheck(); +                    this._cache.set(key, {audio, uri, source}); +                }                  return {audio, uri, source};              } catch (e) {                  // NOP diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 7f3ba859..8edae7c9 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -50,7 +50,8 @@ class Display {                  async getUri(definition, source, details) {                      return await apiAudioGetUri(definition, source, details);                  } -            } +            }, +            useCache: true          });          this.styleNode = null; |