File tree Expand file tree Collapse file tree 1 file changed +12
-0
lines changed Expand file tree Collapse file tree 1 file changed +12
-0
lines changed Original file line number Diff line number Diff line change 4
4
from __future__ import division , print_function
5
5
6
6
import os , sys
7
+ import ctypes
7
8
8
9
import matplotlib
9
10
from matplotlib .figure import Figure
15
16
16
17
DEBUG = False
17
18
19
+ _decref = ctypes .pythonapi .Py_DecRef
20
+ _decref .argtypes = [ctypes .py_object ]
21
+ _decref .restype = None
22
+
18
23
19
24
def new_figure_manager ( num , * args , ** kwargs ):
20
25
"""
@@ -95,6 +100,8 @@ def paintEvent( self, e ):
95
100
else :
96
101
stringBuffer = self .renderer ._renderer .tostring_argb ()
97
102
103
+ refcnt = sys .getrefcount (stringBuffer )
104
+
98
105
qImage = QtGui .QImage (stringBuffer , self .renderer .width ,
99
106
self .renderer .height ,
100
107
QtGui .QImage .Format_ARGB32 )
@@ -106,6 +113,11 @@ def paintEvent( self, e ):
106
113
p .setPen ( QtGui .QPen ( QtCore .Qt .black , 1 , QtCore .Qt .DotLine ) )
107
114
p .drawRect ( self .rect [0 ], self .rect [1 ], self .rect [2 ], self .rect [3 ] )
108
115
p .end ()
116
+
117
+ del qImage
118
+ if refcnt != sys .getrefcount (stringBuffer ):
119
+ # Fix a huge memory leak in PySide on Python 3
120
+ _decref (stringBuffer )
109
121
else :
110
122
bbox = self .blitbox
111
123
l , b , r , t = bbox .extents
You can’t perform that action at this time.
0 commit comments