Revision: 15562
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15562
Author: campbellbarton
Date: 2008-07-14 03:44:05 +0200 (Mon, 14 Jul 2008)
Log Message:
-----------
last commit didn't work because GameLogic was a imported as a dict rather then
a module. (was only printing it when testing).
Removed dictionaryClearByHand which was only called PyDict_Clear()
Modified Paths:
--------------
trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
trunk/blender/source/gameengine/GamePlayer/ActiveX/BlenderPlayerCtl.cpp
trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
trunk/blender/source/gameengine/GamePlayer/netscape/src/ketsji/KXH_ketsji_hooks.cpp
trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
trunk/blender/source/gameengine/Ketsji/KX_PythonInit.h
trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp
Modified:
trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
2008-07-14 00:47:07 UTC (rev 15561)
+++ trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
2008-07-14 01:44:05 UTC (rev 15562)
@@ -400,7 +400,14 @@
exitstring = ketsjiengine->GetExitString();
// when exiting the mainloop
- dictionaryClearByHand(gameLogic);
+
+ // Clears the dictionary by hand:
+ // This prevents, extra references to global
variables
+ // inside the GameLogic dictionary when the
python interpreter is finalized.
+ // which allows the scene to safely delete them
:)
+ // see: (space.c)->start_game
+ PyDict_Clear(PyModule_GetDict(gameLogic));
+
ketsjiengine->StopEngine();
exitGamePythonScripting();
networkdevice->Disconnect();
Modified:
trunk/blender/source/gameengine/GamePlayer/ActiveX/BlenderPlayerCtl.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ActiveX/BlenderPlayerCtl.cpp
2008-07-14 00:47:07 UTC (rev 15561)
+++ trunk/blender/source/gameengine/GamePlayer/ActiveX/BlenderPlayerCtl.cpp
2008-07-14 01:44:05 UTC (rev 15562)
@@ -668,7 +668,7 @@
m_ketsjiengine->SetPythonDictionary(m_dictionaryobject);
initRasterizer(m_rasterizer, m_canvas);
- initGameLogic(startscene);
+ PyDict_SetItemString(m_dictionaryobject, "GameLogic",
initGameLogic(startscene)); // Same as importing the module
initGameKeys();
initPythonConstraintBinding();
Modified: trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
2008-07-14 00:47:07 UTC (rev 15561)
+++ trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
2008-07-14 01:44:05 UTC (rev 15562)
@@ -644,7 +644,7 @@
PyObject* dictionaryobject =
initGamePlayerPythonScripting("Ketsji", psl_Lowest);
m_ketsjiengine->SetPythonDictionary(dictionaryobject);
initRasterizer(m_rasterizer, m_canvas);
- PyObject *gameLogic = initGameLogic(startscene);
+ PyDict_SetItemString(dictionaryobject, "GameLogic",
initGameLogic(startscene)); // Same as importing the module
initGameKeys();
initPythonConstraintBinding();
Modified:
trunk/blender/source/gameengine/GamePlayer/netscape/src/ketsji/KXH_ketsji_hooks.cpp
===================================================================
---
trunk/blender/source/gameengine/GamePlayer/netscape/src/ketsji/KXH_ketsji_hooks.cpp
2008-07-14 00:47:07 UTC (rev 15561)
+++
trunk/blender/source/gameengine/GamePlayer/netscape/src/ketsji/KXH_ketsji_hooks.cpp
2008-07-14 01:44:05 UTC (rev 15562)
@@ -566,8 +566,8 @@
k->audiodevice,
startSceneName->Ptr());
- initRasterizer(k->rasterizer, k->canvas_device);
- initGameLogic(startscene);
+ initRasterizer(k->rasterizer, k->canvas_device);;
+ PyDict_SetItemString(dictionaryobject, "GameLogic",
initGameLogic(startscene)); // Same as importing the module
initGameKeys();
initPythonConstraintBinding();
Modified: trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp 2008-07-14
00:47:07 UTC (rev 15561)
+++ trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp 2008-07-14
01:44:05 UTC (rev 15562)
@@ -231,7 +231,10 @@
}
-
+/*
+ * At the moment the GameLogic module is imported into 'pythondictionary'
after this function is called.
+ * if this function ever changes to assign a copy, make sure the game logic
module is imported into this dictionary before hand.
+ */
void KX_KetsjiEngine::SetPythonDictionary(PyObject* pythondictionary)
{
MT_assert(pythondictionary);
Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp 2008-07-14
00:47:07 UTC (rev 15561)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.cpp 2008-07-14
01:44:05 UTC (rev 15562)
@@ -828,20 +828,9 @@
Py_FatalError("can't initialize module GameLogic");
}
- return d;
+ return m;
}
-void dictionaryClearByHand(PyObject *dict)
-{
- // Clears the dictionary by hand:
- // This prevents, extra references to global variables
- // inside the GameLogic dictionary when the python interpreter is
finalized.
- // which allows the scene to safely delete them :)
- // see: (space.c)->start_game
- if(dict) PyDict_Clear(dict);
-}
-
-
// Python Sandbox code
// override builtin functions import() and open()
Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonInit.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonInit.h 2008-07-14
00:47:07 UTC (rev 15561)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonInit.h 2008-07-14
01:44:05 UTC (rev 15562)
@@ -47,7 +47,6 @@
void exitGamePlayerPythonScripting();
PyObject* initGamePythonScripting(const STR_String& progname,
TPythonSecurityLevel level);
void exitGamePythonScripting();
-void dictionaryClearByHand(PyObject *dict);
void PHY_SetActiveScene(class KX_Scene* scene);
class KX_Scene* PHY_GetActiveScene();
Modified: trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp 2008-07-14
00:47:07 UTC (rev 15561)
+++ trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp 2008-07-14
01:44:05 UTC (rev 15562)
@@ -291,7 +291,8 @@
char* name = objectname.Ptr();
if (!name) {
- Py_Return; /* internal
error */
+ PyErr_SetString(PyExc_RuntimeError, "Unable to get sound
filename");
+ return NULL;
} else
return PyString_FromString(name);
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs