diff options
author | mano-wii <germano.costa@ig.com.br> | 2018-09-20 21:21:59 +0300 |
---|---|---|
committer | mano-wii <germano.costa@ig.com.br> | 2018-09-20 21:21:59 +0300 |
commit | 9fb9604c1929a224254ba08975e4d250880e0edf (patch) | |
tree | 6c2c6bbcfc44523d63087bb7a762ea7faaca5599 /source/blender/python/gpu/gpu_py_shader.c | |
parent | d0eed5e50a80ef4df9ecb14772c87d4ede11e621 (diff) |
gpu.shader module: Do not free builtin shaders.
Diffstat (limited to 'source/blender/python/gpu/gpu_py_shader.c')
-rw-r--r-- | source/blender/python/gpu/gpu_py_shader.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/python/gpu/gpu_py_shader.c b/source/blender/python/gpu/gpu_py_shader.c index 2638be31268..ba0a0843393 100644 --- a/source/blender/python/gpu/gpu_py_shader.c +++ b/source/blender/python/gpu/gpu_py_shader.c @@ -119,7 +119,7 @@ static PyObject *bpygpu_shader_new(PyTypeObject *UNUSED(type), PyObject *args, P return NULL; } - return BPyGPUShader_CreatePyObject(shader); + return BPyGPUShader_CreatePyObject(shader, false); } PyDoc_STRVAR(bpygpu_shader_bind_doc, @@ -427,7 +427,9 @@ static PyGetSetDef bpygpu_shader_getseters[] = { static void bpygpu_shader_dealloc(BPyGPUShader *self) { - GPU_shader_free(self->shader); + if (self->is_builtin == false) { + GPU_shader_free(self->shader); + } Py_TYPE(self)->tp_free((PyObject *)self); } @@ -513,7 +515,7 @@ static PyObject *bpygpu_shader_from_builtin(PyObject *UNUSED(self), PyObject *ar GPUShader *shader = GPU_shader_get_builtin_shader(shader_id); - return BPyGPUShader_CreatePyObject(shader); + return BPyGPUShader_CreatePyObject(shader, true); } PyDoc_STRVAR(bpygpu_shader_code_from_builtin_doc, @@ -608,12 +610,13 @@ static PyModuleDef BPyGPU_shader_builtin_module_def = { /** \name Public API * \{ */ -PyObject *BPyGPUShader_CreatePyObject(GPUShader *shader) +PyObject *BPyGPUShader_CreatePyObject(GPUShader *shader, bool is_builtin) { BPyGPUShader *self; self = PyObject_New(BPyGPUShader, &BPyGPUShader_Type); self->shader = shader; + self->is_builtin = is_builtin; return (PyObject *)self; } |