Popov72 5 лет назад
Родитель
Сommit
cc1c261748
2 измененных файлов с 18 добавлено и 11 удалено
  1. 17 10
      src/Misc/KTX2/KTX2WorkerThread.ts
  2. 1 1
      src/Misc/KTX2/khronosTextureContainer2.ts

+ 17 - 10
src/Misc/KTX2/KTX2WorkerThread.ts

@@ -34,15 +34,22 @@ export function workerFunc(): void {
     let transcoderMgr = new TranscoderManager();
 
     onmessage = (event) => {
-        if (event.data.action === "init") {
-            postMessage({ action: "init" });
-        } else if (event.data.action === "createMipmaps") {
-            const kfr = new KTX2FileReader(event.data.data);
-            _createMipmaps(kfr, event.data.caps).then((mipmaps) => {
-                postMessage({ action: "mipmapsCreated", success: true, id: event.data.id, mipmaps: mipmaps.mipmaps }, mipmaps.mipmapsData);
-            }).catch((reason) => {
-                postMessage({ action: "mipmapsCreated", success: false, id: event.data.id, msg: reason });
-            });
+        switch (event.data.action) {
+            case "init":
+                postMessage({ action: "init" });
+                break;
+            case "createMipmaps":
+                try {
+                    const kfr = new KTX2FileReader(event.data.data);
+                    _createMipmaps(kfr, event.data.caps).then((mipmaps) => {
+                        postMessage({ action: "mipmapsCreated", success: true, id: event.data.id, mipmaps: mipmaps.mipmaps }, mipmaps.mipmapsData);
+                    }).catch((reason) => {
+                        postMessage({ action: "mipmapsCreated", success: false, id: event.data.id, msg: reason });
+                    });
+                } catch (err) {
+                    postMessage({ action: "mipmapsCreated", success: false, id: event.data.id, msg: err });
+                }
+                break;
         }
     };
 
@@ -87,7 +94,7 @@ export function workerFunc(): void {
         const transcoder = transcoderMgr.findTranscoder(srcTexFormat, targetFormat);
 
         if (transcoder === null) {
-            throw new Error(`KTX2 container - no transcoder found to transcode source texture format "${sourceTextureFormat[srcTexFormat]}" to format "${transcodeTarget[targetFormat]}"`);
+            throw new Error(`no transcoder found to transcode source texture format "${sourceTextureFormat[srcTexFormat]}" to format "${transcodeTarget[targetFormat]}"`);
         }
 
         const mipmaps: Array<IMipmap> = [];

+ 1 - 1
src/Misc/KTX2/khronosTextureContainer2.ts

@@ -76,7 +76,7 @@ export class KhronosTextureContainer2 {
                     if (msg.data.action === "mipmapsCreated" && msg.data.id === actionId) {
                         KhronosTextureContainer2._Worker!.removeEventListener("message", messageHandler);
                         if (!msg.data.success) {
-                            rej();
+                            rej({ message: msg.data.msg });
                         }else {
                             this._createTexture(msg.data.mipmaps, internalTexture);
                             res();