File tree 2 files changed +16
-7
lines changed
2 files changed +16
-7
lines changed Original file line number Diff line number Diff line change @@ -52,8 +52,8 @@ def show(self):
52
52
"""
53
53
js_code = f"var fig_id = '{ fignum } ';" + js_code
54
54
55
- js_fig = run_js (js_code )
56
- web_socket = WebAggApplication .MockPythonWebSocket (self , js_fig .ws )
55
+ self . js_fig = run_js (js_code )
56
+ web_socket = WebAggApplication .MockPythonWebSocket (self , self . js_fig .ws )
57
57
web_socket .open (fignum )
58
58
59
59
@@ -70,14 +70,18 @@ class MockPythonWebSocket:
70
70
def __init__ (self , manager , js_web_socket ):
71
71
self .manager = manager
72
72
self .js_web_socket = js_web_socket
73
+ self .on_message_proxy = None
73
74
74
75
def open (self , fignum ):
75
- self .js_web_socket .open (create_proxy (self .on_message )) # should destroy proxy on close/exit?
76
+ self .on_message_proxy = create_proxy (self .on_message )
77
+ self .js_web_socket .open (self .on_message_proxy )
76
78
self .fignum = int (fignum )
77
79
self .manager .add_web_socket (self )
78
80
79
81
def on_close (self ):
80
82
self .manager .remove_web_socket (self )
83
+ self .on_message_proxy .destroy ()
84
+ self .on_message_proxy = None
81
85
82
86
def on_message (self , message ):
83
87
message = message .as_py_json ()
Original file line number Diff line number Diff line change @@ -29,9 +29,14 @@ class MockJsWebSocket {
29
29
}
30
30
31
31
receive_binary ( content , binary = true ) {
32
- content = content . toJs ( ) ;
33
- blob = new Blob ( [ content ] ) ;
34
- this . onmessage ( { data : blob } ) ;
32
+ var buffer = content . getBuffer ( ) ;
33
+ content . destroy ( ) ;
34
+ try {
35
+ blob = new Blob ( [ buffer . data ] ) ;
36
+ this . onmessage ( { data : blob } ) ;
37
+ } finally {
38
+ buffer . release ( ) ; // Release the memory when we're done
39
+ }
35
40
}
36
41
37
42
receive_json ( content ) {
@@ -416,7 +421,7 @@ mpl.figure.prototype._init_toolbar = function () {
416
421
417
422
var icon_img = new Image ( ) ;
418
423
this . _toolbar_images . push ( icon_img ) ;
419
- image_bytes = mpl . toolbar_image_callback ( image ) . toJs ( ) ;
424
+ image_bytes = mpl . toolbar_image_callback ( image ) . toJs ( { create_pyproxies : false } ) ;
420
425
blob = new Blob ( [ image_bytes ] , { type : 'image/png' } ) ;
421
426
icon_img . src = ( window . URL || window . webkitURL ) . createObjectURL ( blob ) ;
422
427
icon_img . alt = tooltip ;
You can’t perform that action at this time.
0 commit comments