@gjsify/webgl 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import"./_virtual/_rolldown/runtime.js";import{HTMLCanvasElement as e}from"./html-canvas-element.js";import{notifyElementResize as t}from"@gjsify/dom-elements";import n from"gi://GObject";import r from"gi://GLib?version=2.0";import i from"gi://Gtk?version=4.0";import{attachEventControllers as a}from"@gjsify/event-bridge";import{Event as o}from"@gjsify/dom-events";const s=n.registerClass({GTypeName:`GjsifyWebGLBridge`},class WebGLBridge extends i.GLArea{constructor(n){super(n),this._canvas=null,this._readyCallbacks=[],this._resizeCallbacks=[],this._renderTag=null,this._tickCallbackId=null,this._frameCallback=null,this._frameCallbackId=0,this._nextFrameId=1,this._timeOrigin=r.get_monotonic_time(),this.set_use_es(!0),this.set_required_version(3,2),this.set_has_depth_buffer(!0),this.set_has_stencil_buffer(!0),a(this,()=>this._canvas,{captureKeys:!0}),this._tickCallbackId=this.add_tick_callback((e,t)=>(this._frameCallback!==null&&this.queue_render(),r.SOURCE_CONTINUE));let i=this.connect(`render`,()=>{this.disconnect(i),this.make_current(),this._canvas=new e(this);{let e=globalThis;e.document?.body&&e.document.body.appendChild(this._canvas)}this._canvas.getContext(`webgl2`);let t=this._canvas.getContext(`webgl`);if(t){for(let e of this._readyCallbacks)e(this._canvas,t);this._readyCallbacks=[]}return this._renderTag=this.connect(`render`,e=>{if(this._frameCallback!==null){let e=(r.get_monotonic_time()-this._timeOrigin)/1e3;globalThis.__GJSIFY_DEBUG_RAF===!0&&console.log(`[rAF] frame callback fires t=${e.toFixed(1)}`);let t=this._frameCallback;this._frameCallback=null,this._frameCallbackId=0,t(e)}return!0}),!0});this.connect(`resize`,()=>{let e=this.get_allocated_width(),n=this.get_allocated_height();this._canvas&&(this._canvas.dispatchEvent(new o(`resize`)),t(this._canvas,e,n));for(let t of this._resizeCallbacks)t(e,n);this._frameCallback&&this.requestAnimationFrame(this._frameCallback)}),this.connect(`unrealize`,()=>{this._renderTag!==null&&(this.disconnect(this._renderTag),this._renderTag=null),this._tickCallbackId!==null&&(this.remove_tick_callback(this._tickCallbackId),this._tickCallbackId=null),this._canvas=null})}get canvas(){return this._canvas}onReady(e){if(this._canvas){let t=this._canvas.getContext(`webgl`);if(t){e(this._canvas,t);return}}this._readyCallbacks.push(e)}onWebGLReady(e){this.onReady(e)}onResize(e){this._resizeCallbacks.push(e)}requestAnimationFrame(e){let t=this._nextFrameId++;return this._frameCallback=e,this._frameCallbackId=t,this.queue_render(),t}cancelAnimationFrame(e){e!==0&&e===this._frameCallbackId&&(this._frameCallback=null,this._frameCallbackId=0)}installGlobals(){let e=globalThis;e.requestAnimationFrame=e=>this.requestAnimationFrame(e),e.cancelAnimationFrame=e=>this.cancelAnimationFrame(e);let t=this._timeOrigin;e.performance={now:()=>(r.get_monotonic_time()-t)/1e3,timeOrigin:Date.now()}}});export{s as WebGLBridge};
1
+ import"./_virtual/_rolldown/runtime.js";import{HTMLCanvasElement as e}from"./html-canvas-element.js";import{notifyElementResize as t}from"@gjsify/dom-elements";import n from"gi://GObject";import r from"gi://GLib?version=2.0";import i from"gi://Gtk?version=4.0";import{attachEventControllers as a}from"@gjsify/event-bridge";import{Event as o}from"@gjsify/dom-events";const s=n.registerClass({GTypeName:`GjsifyWebGLBridge`},class WebGLBridge extends i.GLArea{constructor(n){super(n),this._canvas=null,this._readyCallbacks=[],this._resizeCallbacks=[],this._renderTag=null,this._tickCallbackId=null,this._frameCallback=null,this._lastFrameCallback=null,this._lastFrameTime=0,this._replaying=!1,this._frameCallbackId=0,this._nextFrameId=1,this._timeOrigin=r.get_monotonic_time(),this.set_use_es(!0),this.set_required_version(3,2),this.set_has_depth_buffer(!0),this.set_has_stencil_buffer(!0),a(this,()=>this._canvas,{captureKeys:!0}),this._tickCallbackId=this.add_tick_callback((e,t)=>(this._frameCallback!==null&&this.queue_render(),r.SOURCE_CONTINUE));let i=this.connect(`render`,()=>{this.disconnect(i),this.make_current(),this._canvas=new e(this);{let e=globalThis;e.document?.body&&e.document.body.appendChild(this._canvas)}this._canvas.getContext(`webgl2`);let t=this._canvas.getContext(`webgl`);if(t){for(let e of this._readyCallbacks)e(this._canvas,t);this._readyCallbacks=[]}return this._renderTag=this.connect(`render`,e=>{let t=(r.get_monotonic_time()-this._timeOrigin)/1e3;if(this._frameCallback!==null){globalThis.__GJSIFY_DEBUG_RAF===!0&&console.log(`[rAF] frame callback fires t=${t.toFixed(1)}`);let e=this._frameCallback;this._frameCallback=null,this._frameCallbackId=0,this._lastFrameCallback=e,this._lastFrameTime=t,e(t)}else if(this._lastFrameCallback!==null){this._replaying=!0;try{this._lastFrameCallback(this._lastFrameTime)}finally{this._replaying=!1}}return!0}),!0});this.connect(`resize`,()=>{let e=this.get_allocated_width(),n=this.get_allocated_height();this._canvas&&(this._canvas.dispatchEvent(new o(`resize`)),t(this._canvas,e,n));for(let t of this._resizeCallbacks)t(e,n);this._frameCallback&&this.requestAnimationFrame(this._frameCallback)}),this.connect(`unrealize`,()=>{this._renderTag!==null&&(this.disconnect(this._renderTag),this._renderTag=null),this._tickCallbackId!==null&&(this.remove_tick_callback(this._tickCallbackId),this._tickCallbackId=null),this._frameCallback=null,this._lastFrameCallback=null,this._lastFrameTime=0,this._replaying=!1,this._canvas=null})}get canvas(){return this._canvas}onReady(e){if(this._canvas){let t=this._canvas.getContext(`webgl`);if(t){e(this._canvas,t);return}}this._readyCallbacks.push(e)}onWebGLReady(e){this.onReady(e)}onResize(e){this._resizeCallbacks.push(e)}requestAnimationFrame(e){let t=this._nextFrameId++;return this._replaying?t:(this._frameCallback=e,this._frameCallbackId=t,this.queue_render(),t)}cancelAnimationFrame(e){e!==0&&e===this._frameCallbackId&&(this._frameCallback=null,this._frameCallbackId=0,this._lastFrameCallback=null,this._lastFrameTime=0)}installGlobals(){let e=globalThis;e.requestAnimationFrame=e=>this.requestAnimationFrame(e),e.cancelAnimationFrame=e=>this.cancelAnimationFrame(e);let t=this._timeOrigin;e.performance={now:()=>(r.get_monotonic_time()-t)/1e3,timeOrigin:Date.now()}}});export{s as WebGLBridge};
@@ -31,6 +31,9 @@ export declare const WebGLBridge: {
31
31
  _renderTag: number | null;
32
32
  _tickCallbackId: number | null;
33
33
  _frameCallback: FrameRequestCallback | null;
34
+ _lastFrameCallback: FrameRequestCallback | null;
35
+ _lastFrameTime: number;
36
+ _replaying: boolean;
34
37
  _frameCallbackId: number;
35
38
  _nextFrameId: number;
36
39
  _timeOrigin: number;
@@ -513,6 +516,9 @@ export declare const WebGLBridge: {
513
516
  _renderTag: number | null;
514
517
  _tickCallbackId: number | null;
515
518
  _frameCallback: FrameRequestCallback | null;
519
+ _lastFrameCallback: FrameRequestCallback | null;
520
+ _lastFrameTime: number;
521
+ _replaying: boolean;
516
522
  _frameCallbackId: number;
517
523
  _nextFrameId: number;
518
524
  _timeOrigin: number;
@@ -995,6 +1001,9 @@ export declare const WebGLBridge: {
995
1001
  _renderTag: number | null;
996
1002
  _tickCallbackId: number | null;
997
1003
  _frameCallback: FrameRequestCallback | null;
1004
+ _lastFrameCallback: FrameRequestCallback | null;
1005
+ _lastFrameTime: number;
1006
+ _replaying: boolean;
998
1007
  _frameCallbackId: number;
999
1008
  _nextFrameId: number;
1000
1009
  _timeOrigin: number;
@@ -1477,6 +1486,9 @@ export declare const WebGLBridge: {
1477
1486
  _renderTag: number | null;
1478
1487
  _tickCallbackId: number | null;
1479
1488
  _frameCallback: FrameRequestCallback | null;
1489
+ _lastFrameCallback: FrameRequestCallback | null;
1490
+ _lastFrameTime: number;
1491
+ _replaying: boolean;
1480
1492
  _frameCallbackId: number;
1481
1493
  _nextFrameId: number;
1482
1494
  _timeOrigin: number;
@@ -1959,6 +1971,9 @@ export declare const WebGLBridge: {
1959
1971
  _renderTag: number | null;
1960
1972
  _tickCallbackId: number | null;
1961
1973
  _frameCallback: FrameRequestCallback | null;
1974
+ _lastFrameCallback: FrameRequestCallback | null;
1975
+ _lastFrameTime: number;
1976
+ _replaying: boolean;
1962
1977
  _frameCallbackId: number;
1963
1978
  _nextFrameId: number;
1964
1979
  _timeOrigin: number;
@@ -2441,6 +2456,9 @@ export declare const WebGLBridge: {
2441
2456
  _renderTag: number | null;
2442
2457
  _tickCallbackId: number | null;
2443
2458
  _frameCallback: FrameRequestCallback | null;
2459
+ _lastFrameCallback: FrameRequestCallback | null;
2460
+ _lastFrameTime: number;
2461
+ _replaying: boolean;
2444
2462
  _frameCallbackId: number;
2445
2463
  _nextFrameId: number;
2446
2464
  _timeOrigin: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/webgl",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "WebGL module for Gjs",
5
5
  "module": "lib/esm/index.js",
6
6
  "types": "lib/types/index.d.ts",
@@ -45,8 +45,8 @@
45
45
  "WebGL"
46
46
  ],
47
47
  "devDependencies": {
48
- "@gjsify/cli": "^0.11.0",
49
- "@gjsify/unit": "^0.11.0",
48
+ "@gjsify/cli": "^0.13.0",
49
+ "@gjsify/unit": "^0.13.0",
50
50
  "@types/bit-twiddle": "^1.0.3",
51
51
  "@types/node": "^25.9.2",
52
52
  "typescript": "^6.0.3"
@@ -56,10 +56,10 @@
56
56
  "@girs/gjs": "4.0.4",
57
57
  "@girs/gtk-4.0": "4.23.0-4.0.4",
58
58
  "@girs/gwebgl-0.1": "0.1.0-4.0.0-rc.5",
59
- "@gjsify/dom-elements": "^0.11.0",
60
- "@gjsify/dom-events": "^0.11.0",
61
- "@gjsify/event-bridge": "^0.11.0",
62
- "@gjsify/utils": "^0.11.0",
59
+ "@gjsify/dom-elements": "^0.13.0",
60
+ "@gjsify/dom-events": "^0.13.0",
61
+ "@gjsify/event-bridge": "^0.13.0",
62
+ "@gjsify/utils": "^0.13.0",
63
63
  "bit-twiddle": "^1.0.2",
64
64
  "glsl-tokenizer": "^2.1.5"
65
65
  },