Fix T40888: Memory error when selecting Cycles render engine

This commit is contained in:
Sergey Sharybin 2014-07-01 15:43:37 +06:00
parent fe9110edc4
commit 8c9c93ca6f
2 changed files with 11 additions and 4 deletions

@ -28,7 +28,7 @@ def init():
_cycles.init(path, user_path)
def create(engine, data, scene, region=0, v3d=0, rv3d=0, preview_osl=False):
def create(engine, data, scene, region=None, v3d=None, rv3d=None, preview_osl=False):
import bpy
import _cycles

@ -35,6 +35,13 @@
CCL_NAMESPACE_BEGIN
static void *pylong_as_voidptr_typesafe(PyObject *object)
{
if(object == Py_None)
return NULL;
return PyLong_AsVoidPtr(object);
}
void python_thread_state_save(void **python_thread_state)
{
*python_thread_state = (void*)PyEval_SaveThread();
@ -84,15 +91,15 @@ static PyObject *create_func(PyObject *self, PyObject *args)
BL::Scene scene(sceneptr);
PointerRNA regionptr;
RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyregion), &regionptr);
RNA_id_pointer_create((ID*)pylong_as_voidptr_typesafe(pyregion), &regionptr);
BL::Region region(regionptr);
PointerRNA v3dptr;
RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyv3d), &v3dptr);
RNA_id_pointer_create((ID*)pylong_as_voidptr_typesafe(pyv3d), &v3dptr);
BL::SpaceView3D v3d(v3dptr);
PointerRNA rv3dptr;
RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyrv3d), &rv3dptr);
RNA_id_pointer_create((ID*)pylong_as_voidptr_typesafe(pyrv3d), &rv3dptr);
BL::RegionView3D rv3d(rv3dptr);
/* create session */