瀏覽代碼

fix backends not updated often enough / long sheets like Land der Berge and Actor Prelude broken

error introduced in c0a522cf68398c8e346fd204d6f4d1a43fa59733

backends were also not updated after zoom
sschmid 5 年之前
父節點
當前提交
98f18767ef
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      src/OpenSheetMusicDisplay/OpenSheetMusicDisplay.ts

+ 5 - 1
src/OpenSheetMusicDisplay/OpenSheetMusicDisplay.ts

@@ -152,6 +152,7 @@ export class OpenSheetMusicDisplay {
         }
         log.info(`[OSMD] Loaded sheet ${this.sheet.TitleString} successfully.`);
 
+        this.needBackendUpdate = true;
         this.updateGraphic();
 
         return Promise.resolve({});
@@ -204,7 +205,10 @@ export class OpenSheetMusicDisplay {
             this.graphic.Cursors.length = 0;
         }
 
-        if (this.needBackendUpdate) {
+        // needBackendUpdate is well intentioned, but we need to cover all cases.
+        //   backends also need an update when this.zoom was set from outside, which unfortunately doesn't have a setter method to set this in.
+        //   so just for compatibility, we need to assume users set osmd.zoom, so we'd need to check whether it was changed compared to last time.
+        if (true || this.needBackendUpdate) {
             this.createOrRefreshRenderBackend();
             this.needBackendUpdate = false;
         }