From 377f06082a2ce127e658b94396d37c9c308450fd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 23 Mar 2010 21:37:02 +0000 Subject: [PATCH] enable compiling without python again --- source/blender/windowmanager/intern/wm.c | 3 + source/gameengine/Ketsji/KX_KetsjiEngine.cpp | 4 ++ source/gameengine/Ketsji/KX_Scene.cpp | 61 ++++++++++---------- source/gameengine/Ketsji/KX_Scene.h | 10 ++-- 4 files changed, 42 insertions(+), 36 deletions(-) diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index f0c8a1cb978..457f898a39e 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -64,11 +64,14 @@ void WM_operator_free(wmOperator *op) { + +#ifndef DISABLE_PYTHON if(op->py_instance) { /* do this first incase there are any __del__ functions or * similar that use properties */ BPY_DECREF(op->py_instance); } +#endif if(op->ptr) { op->properties= op->ptr->data; diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp index d1fecb76998..dfac6e1b816 100644 --- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp +++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp @@ -1309,8 +1309,10 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) m_logger->StartLog(tc_rasterizer, m_kxsystem->GetTimeInSeconds(), true); SG_SetActiveStage(SG_STAGE_RENDER); +#ifndef DISABLE_PYTHON // Run any pre-drawing python callbacks scene->RunDrawingCallbacks(scene->GetPreDrawCB()); +#endif scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools); @@ -1324,7 +1326,9 @@ void KX_KetsjiEngine::PostRenderScene(KX_Scene* scene) { m_rendertools->MotionBlur(m_rasterizer); scene->Render2DFilters(m_canvas); +#ifndef DISABLE_PYTHON scene->RunDrawingCallbacks(scene->GetPostDrawCB()); +#endif m_rasterizer->FlushDebugLines(); } diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index a5512c2e34a..c4b1aaeacf4 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -407,34 +407,6 @@ bool KX_Scene::IsClearingZBuffer() return m_isclearingZbuffer; } -void KX_Scene::RunDrawingCallbacks(PyObject* cb_list) -{ - int len; - - if (cb_list && (len=PyList_GET_SIZE(cb_list))) - { - PyObject* args= PyTuple_New(0); // save python creating each call - PyObject* func; - PyObject* ret; - - // Iterate the list and run the callbacks - for (int pos=0; pos < len; pos++) - { - func= PyList_GET_ITEM(cb_list, pos); - ret= PyObject_Call(func, args, NULL); - if (ret==NULL) { - PyErr_Print(); - PyErr_Clear(); - } - else { - Py_DECREF(ret); - } - } - - Py_DECREF(args); - } -} - void KX_Scene::EnableZBufferClearing(bool isclearingZbuffer) { m_isclearingZbuffer = isclearingZbuffer; @@ -1657,9 +1629,6 @@ double KX_Scene::getSuspendedDelta() return m_suspendeddelta; } -#ifndef DISABLE_PYTHON - - #include "KX_BulletPhysicsController.h" static void MergeScene_LogicBrick(SCA_ILogicBrick* brick, KX_Scene *to) @@ -1855,6 +1824,36 @@ void KX_Scene::Render2DFilters(RAS_ICanvas* canvas) m_filtermanager.RenderFilters(canvas); } +#ifndef DISABLE_PYTHON + +void KX_Scene::RunDrawingCallbacks(PyObject* cb_list) +{ + int len; + + if (cb_list && (len=PyList_GET_SIZE(cb_list))) + { + PyObject* args= PyTuple_New(0); // save python creating each call + PyObject* func; + PyObject* ret; + + // Iterate the list and run the callbacks + for (int pos=0; pos < len; pos++) + { + func= PyList_GET_ITEM(cb_list, pos); + ret= PyObject_Call(func, args, NULL); + if (ret==NULL) { + PyErr_Print(); + PyErr_Clear(); + } + else { + Py_DECREF(ret); + } + } + + Py_DECREF(args); + } +} + //---------------------------------------------------------------------------- //Python diff --git a/source/gameengine/Ketsji/KX_Scene.h b/source/gameengine/Ketsji/KX_Scene.h index c3fc23f2979..5b562977837 100644 --- a/source/gameengine/Ketsji/KX_Scene.h +++ b/source/gameengine/Ketsji/KX_Scene.h @@ -291,11 +291,6 @@ public: RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools); - /** - * Run the registered python drawing functions. - */ - void RunDrawingCallbacks(PyObject* cb_list); - /** * Update all transforms according to the scenegraph. */ @@ -573,6 +568,11 @@ public: static PyMappingMethods Mapping; static PySequenceMethods Sequence; + /** + * Run the registered python drawing functions. + */ + void RunDrawingCallbacks(PyObject* cb_list); + PyObject* GetPreDrawCB() { return m_draw_call_pre; }; PyObject* GetPostDrawCB() { return m_draw_call_post; }; #endif