From a5c569ab5d866a315363cd9d1d0909e1ebd897f1 Mon Sep 17 00:00:00 2001 From: Aiosa <469130@mail.muni.cz> Date: Thu, 19 Dec 2024 16:11:53 +0100 Subject: [PATCH] fix: reference to the cpuData on webgldrawer --- src/drawerbase.js | 2 +- src/tilecache.js | 4 ++-- src/webgldrawer.js | 12 +++++++----- test/modules/tilecache.js | 4 ++-- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/drawerbase.js b/src/drawerbase.js index 3355b45c..d84531f7 100644 --- a/src/drawerbase.js +++ b/src/drawerbase.js @@ -161,7 +161,7 @@ OpenSeadragon.DrawerBase = class DrawerBase{ $.console.warn("Attempt to draw tile %s when not cached!", tile); return undefined; } - const dataCache = cache.getDataForRendering(this, tile); + const dataCache = cache.getCacheForRendering(this, tile); return dataCache && dataCache.data; } diff --git a/src/tilecache.js b/src/tilecache.js index f23d5e26..a66a32f5 100644 --- a/src/tilecache.js +++ b/src/tilecache.js @@ -176,7 +176,7 @@ * Returns undefined if the data is not ready for rendering. * @private */ - getDataForRendering(drawer, tileToDraw) { + getCacheForRendering(drawer, tileToDraw) { const supportedTypes = drawer.getSupportedDataFormats(), keepInternalCopy = drawer.options.usePrivateCache; if (this.loaded && supportedTypes.includes(this.type)) { @@ -264,7 +264,7 @@ const conversionPath = $.convertor.getConversionPath(this.type, supportedTypes); if (!conversionPath) { - $.console.error(`[getDataForRendering] Conversion ${this.type} ---> ${supportedTypes} cannot be done!`); + $.console.error(`[getCacheForRendering] Conversion ${this.type} ---> ${supportedTypes} cannot be done!`); return $.Promise.resolve(this); } const newInternalCache = new $.SimpleCacheRecord(); diff --git a/src/webgldrawer.js b/src/webgldrawer.js index eaa26623..02be1db0 100644 --- a/src/webgldrawer.js +++ b/src/webgldrawer.js @@ -100,9 +100,9 @@ this._setupCanvases(); this._setupRenderer(); + this._setupCallCount = 1; this._supportedFormats = this._setupTextureHandlers(); this._requiredFormats = this._supportedFormats; - this._setupCallCount = 1; this.context = this._outputContext; // API required by tests } @@ -249,7 +249,7 @@ } const dataCache = cache.getDataForRendering(this, tile); // Use CPU Data for the drawer instead - return dataCache && dataCache.cpuData; + return dataCache && dataCache.data.cpuData.getContext("2d"); }; } @@ -950,7 +950,7 @@ return { texture: texture, position: position, - cpuData: data // Reference to the outer cache data, used to draw if webgl canont be used + cpuData: data }; }; const tex2DCompatibleDestructor = textureInfo => { @@ -967,10 +967,12 @@ // We should be OK uploading any of these types. The complexity is selected to be O(3n), should be // more than linear pass over pixels $.convertor.learn("context2d", c2dTexType, (t, d) => tex2DCompatibleLoader(t, d.canvas), 1, 3); - $.convertor.learn("image", imageTexType, tex2DCompatibleLoader, 1, 3); + // TODO: lost support for image + // $.convertor.learn("image", imageTexType, tex2DCompatibleLoader, 1, 3); $.convertor.learnDestroy(c2dTexType, tex2DCompatibleDestructor); - $.convertor.learnDestroy(imageTexType, tex2DCompatibleDestructor); + // TODO + // $.convertor.learnDestroy(imageTexType, tex2DCompatibleDestructor); return [c2dTexType, imageTexType]; } diff --git a/test/modules/tilecache.js b/test/modules/tilecache.js index accbdec5..6f56c938 100644 --- a/test/modules/tilecache.js +++ b/test/modules/tilecache.js @@ -341,7 +341,7 @@ const cache = tile.getCache(); test.equal(cache.type, T_A, "Cache data was not affected, the drawer uses internal cache."); - const internalCache = cache.getDataForRendering(drawer, tile); + const internalCache = cache.getCacheForRendering(drawer, tile); test.equal(internalCache.type, T_C, "Conversion A->C ready, since there is no way to get to T_E."); test.ok(internalCache.loaded, "Internal cache ready."); } @@ -424,7 +424,7 @@ test.equal(cache.type, T_C, "Main Cache Updated (suite 1)"); test.equal(cache.data, previousTestValue, "Main Cache Updated (suite 1)"); - const internalCache = cache.getDataForRendering(drawer, tile); + const internalCache = cache.getCacheForRendering(drawer, tile); test.equal(T_C, internalCache.type, "Conversion A->C ready, since there is no way to get to T_E."); test.ok(internalCache.loaded, "Internal cache ready."); }