Skip to content

Commit 4508577

Browse files
committed
Fix deprecated windows build
Signed-off-by: Andrew Stein <steinlink@gmail.com>
1 parent 88687b1 commit 4508577

12 files changed

Lines changed: 53 additions & 37 deletions

File tree

.github/actions/install-deps/action.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,17 @@ runs:
6464
with:
6565
cmake-version: "3.29.6"
6666

67+
- name: Setup MSVC environment (Windows)
68+
if: ${{ runner.os == 'Windows' }}
69+
uses: ilammy/msvc-dev-cmd@v1
70+
with:
71+
arch: ${{ inputs.arch == 'aarch64' && 'amd64_arm64' || 'x64' }}
72+
73+
- name: Force Ninja generator (Windows)
74+
if: ${{ runner.os == 'Windows' }}
75+
shell: bash
76+
run: echo "CMAKE_GENERATOR=Ninja" >> "$GITHUB_ENV"
77+
6778
- name: Install pnpm
6879
uses: pnpm/action-setup@v3
6980
with:

Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"llvm": "17.0.6",
1818
"pyodide": "0.29.3",
1919
"engines": {
20-
"node": ">=16 <23"
20+
"node": ">=16 <24"
2121
},
2222
"workspaces": [
2323
"tools/test",

packages/viewer-charts/src/ts/webgl/context-manager.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ export class WebGLContextManager {
6868
*/
6969
private _yieldChannel: MessageChannel | null = null;
7070

71+
private _pendingYieldResolve: (() => void) | null = null;
72+
7173
/**
7274
* @param source A raw canvas (manager constructs and **owns** a
7375
* private {@link GLContext}) or an existing shared `GLContext`
@@ -350,6 +352,10 @@ export class WebGLContextManager {
350352

351353
flags = 0;
352354
await this._yieldToTask();
355+
356+
if (this._destroyed) {
357+
return;
358+
}
353359
}
354360
} finally {
355361
gl.deleteSync(fence);
@@ -375,9 +381,15 @@ export class WebGLContextManager {
375381

376382
return new Promise<void>((resolve) => {
377383
const ch = this._yieldChannel!;
378-
ch.port1.addEventListener("message", () => resolve(), {
379-
once: true,
380-
});
384+
this._pendingYieldResolve = resolve;
385+
ch.port1.addEventListener(
386+
"message",
387+
() => {
388+
this._pendingYieldResolve = null;
389+
resolve();
390+
},
391+
{ once: true },
392+
);
381393
ch.port2.postMessage(null);
382394
});
383395
}
@@ -387,6 +399,12 @@ export class WebGLContextManager {
387399
this._frameCallback = null;
388400
this._disposeRestore();
389401
this._buffers.releaseAll();
402+
if (this._pendingYieldResolve) {
403+
const resolve = this._pendingYieldResolve;
404+
this._pendingYieldResolve = null;
405+
resolve();
406+
}
407+
390408
if (this._yieldChannel) {
391409
this._yieldChannel.port1.close();
392410
this._yieldChannel.port2.close();

packages/viewer-charts/test/ts/context-leak.spec.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const SCATTER = {
2727
};
2828

2929
const TABLE_NAME = "load-viewer-csv";
30-
const TOGGLE_COUNT = 24;
30+
const TOGGLE_COUNT = 12;
3131

3232
function collectLeakErrors(page: Page): string[] {
3333
const hits: string[] = [];
@@ -48,10 +48,9 @@ async function toggleSecondViewer(page: Page, cfg: object): Promise<void> {
4848
const worker = (window as any).__TEST_WORKER__;
4949
const table = await worker.open_table(tableName);
5050
const v = document.createElement("perspective-viewer");
51-
v.setAttribute("data-toggle", "1");
5251
document.body.appendChild(v);
53-
await (v as any).load(table);
54-
await (v as any).restore(cfg);
52+
await v.load(table);
53+
await v.restore(cfg);
5554
},
5655
{ cfg, tableName: TABLE_NAME },
5756
);
@@ -72,11 +71,9 @@ async function toggleSecondViewerRacingInit(
7271
const worker = (window as any).__TEST_WORKER__;
7372
const table = await worker.open_table(tableName);
7473
const v = document.createElement("perspective-viewer");
75-
v.setAttribute("data-toggle", "1");
7674
document.body.appendChild(v);
7775
await v.load(table);
7876
v.restore(cfg).catch(() => {});
79-
8077
await new Promise<void>((resolve) =>
8178
setTimeout(() => {
8279
v.remove();
@@ -99,13 +96,11 @@ test.describe("WebGL context leak", () => {
9996
test("repeated full toggles never evict the first chart's context", async ({
10097
page,
10198
}) => {
102-
test.setTimeout(180_000);
99+
// test.setTimeout(180_000);
103100
const leakErrors = collectLeakErrors(page);
104-
105101
const baseline = await calibratePlotBaseline(page);
106102
expect(baseline).toBeGreaterThan(0);
107103
const threshold = Math.max(1, Math.floor(baseline * 0.5));
108-
109104
for (let i = 0; i < TOGGLE_COUNT; i++) {
110105
await toggleSecondViewer(page, SCATTER);
111106
}
@@ -126,7 +121,7 @@ test.describe("WebGL context leak", () => {
126121
test("toggling during renderer init never leaks a context", async ({
127122
page,
128123
}) => {
129-
test.setTimeout(180_000);
124+
// test.setTimeout(180_000);
130125
const leakErrors = collectLeakErrors(page);
131126
const baseline = await calibratePlotBaseline(page);
132127
expect(baseline).toBeGreaterThan(0);

packages/viewer-charts/test/ts/helpers.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,14 @@ export async function gotoBasic(page: Page): Promise<void> {
3636
});
3737
}
3838

39-
/**
40-
* Restore the viewer with `config`, then wait one animation frame so
41-
* the chart's scheduled render (`requestRender` → scheduler RAF →
42-
* `_fullRender`) has fired. By the time this returns, WebGL draw
43-
* commands have been issued to the GL context and `page.screenshot()`
44-
* will capture them.
45-
*/
4639
export async function restoreChart(
4740
page: Page,
4841
config: ViewerConfigUpdate,
4942
): Promise<void> {
5043
await page.evaluate(
5144
async (c) => {
5245
const viewer = document.querySelector("perspective-viewer")!;
53-
await (viewer as any).restore(c);
46+
await viewer.restore(c);
5447
},
5548
config as unknown as Record<string, unknown>,
5649
);

packages/viewer-charts/test/ts/xy_symbols.spec.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,7 @@
1010
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
1111
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
1212

13-
import {
14-
PageView as PspViewer,
15-
compareNodes,
16-
expect,
17-
test,
18-
} from "@perspective-dev/test";
19-
import { SymbolPair } from "@perspective-dev/test/src/js/models/column_settings";
13+
import { PageView as PspViewer, expect, test } from "@perspective-dev/test";
2014
import { Page } from "@playwright/test";
2115

2216
const symbols = [

rust/perspective-client/src/rust/config/aggregates.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ impl From<Aggregate> for view_config::AggList {
5252
fn from(value: Aggregate) -> Self {
5353
view_config::AggList {
5454
aggregations: match value {
55-
Aggregate::SingleAggregate(x) => vec![format!("{}", x)],
55+
Aggregate::SingleAggregate(x) => vec![x],
5656
Aggregate::MultiAggregate(x, y) => {
57-
vec![format!("{}", x), format!("{}", y.join(","))]
57+
vec![x, y.join(",")]
5858
},
5959
},
6060
}

rust/perspective-python/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ protobuf-src = ["perspective-client/protobuf-src"]
5151
crate-type = ["cdylib"]
5252

5353
[build-dependencies]
54-
cmake = "0.1.50"
54+
cmake = "0.1.58"
5555
num_cpus = "^1.16.0"
5656
pyo3-build-config = "0.25.1"
5757
python-config-rs = "0.1.2"

rust/perspective-server/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ python = []
3939
disable-cpp = []
4040

4141
[build-dependencies]
42-
cmake = "0.1.50"
42+
cmake = "0.1.58"
4343
num_cpus = "^1.15.0"
4444
shlex = "1.3.0"
4545
protobuf-src = { version = "2.1.1" }

0 commit comments

Comments
 (0)