Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/python/BPY_interface.c53
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp10
2 files changed, 47 insertions, 16 deletions
diff --git a/source/blender/python/BPY_interface.c b/source/blender/python/BPY_interface.c
index 1c56709111f..29ef6c5da1d 100644
--- a/source/blender/python/BPY_interface.c
+++ b/source/blender/python/BPY_interface.c
@@ -95,6 +95,7 @@
PyObject *bpy_pydriver_Dict = NULL;
PyObject *bpy_orig_syspath_List = NULL;
+
/*
* set up a weakref list for Armatures
* creates list in __main__ module dict
@@ -194,7 +195,7 @@ void BPY_start_python( int argc, char **argv )
//stuff for Registry module
bpy_registryDict = PyDict_New( );/* check comment at start of this file */
if( !bpy_registryDict )
- printf( "Error: Couldn't create the Registry Python Dictionary!" );
+ printf( "Warning: Couldn't create the Registry Python Dictionary!" );
Py_SetProgramName( "blender" );
/* Py_Initialize() will attempt to import the site module and
@@ -222,11 +223,11 @@ void BPY_start_python( int argc, char **argv )
//Start the interpreter
Py_Initialize( );
+
PySys_SetArgv( argc_copy, argv_copy );
-
/* Initialize thread support (also acquires lock) */
PyEval_InitThreads();
-
+
//Overrides __import__
init_ourImport( );
init_ourReload( );
@@ -236,7 +237,6 @@ void BPY_start_python( int argc, char **argv )
//Look for a python installation
init_syspath( first_time ); /* not first_time: some msgs are suppressed */
-
py_tstate = PyGILState_GetThisThreadState();
PyEval_ReleaseThread(py_tstate);
@@ -289,9 +289,6 @@ void syspath_append( char *dirname )
{
PyObject *mod_sys= NULL, *dict= NULL, *path= NULL, *dir= NULL;
short ok=1;
- PyErr_Clear( );
-
- dir = PyString_FromString( dirname );
mod_sys = PyImport_ImportModule( "sys" ); /* new ref */
@@ -303,16 +300,19 @@ void syspath_append( char *dirname )
}
} else {
/* cant get the sys module */
+ /* PyErr_Clear(); is called below */
ok = 0;
}
+ dir = PyString_FromString( dirname );
+
if (ok && PySequence_Contains(path, dir)==0) { /* Only add if we need to */
- if (ok && PyList_Append( path, dir ) != 0) /* decref below */
+ if (PyList_Append( path, dir ) != 0) /* decref below */
ok = 0; /* append failed */
}
if( (ok==0) || PyErr_Occurred( ) )
- fprintf(stderr, "could import or build sys.path\n" );
+ fprintf(stderr, "Warning: could import or build sys.path\n" );
PyErr_Clear();
Py_DECREF( dir );
@@ -333,8 +333,10 @@ void init_syspath( int first_time )
d = PyModule_GetDict( mod );
EXPP_dict_set_item_str( d, "progname", PyString_FromString( bprogname ) );
Py_DECREF( mod );
- } else
- printf( "Warning: could not set Blender.sys.progname\n" );
+ } else {
+ printf( "Warning: could not set Blender.sys\n" );
+ PyErr_Clear();
+ }
progname = BLI_last_slash( bprogname ); /* looks for the last dir separator */
@@ -393,7 +395,8 @@ void init_syspath( int first_time )
Py_DECREF( mod );
} else{
- printf("import of sys module failed\n");
+ PyErr_Clear( );
+ printf("Warning: import of sys module failed\n");
}
}
@@ -406,13 +409,14 @@ void BPY_rebuild_syspath( void )
mod = PyImport_ImportModule( "sys" );
if (!mod) {
- printf("error: could not import python sys module. some modules may not import.\n");
+ printf("Warning: could not import python sys module. some modules may not import.\n");
+ PyErr_Clear( );
PyGILState_Release(gilstate);
return;
}
if (!bpy_orig_syspath_List) { /* should never happen */
- printf("error refershing python path\n");
+ printf("Warning: cant refresh python path, bpy_orig_syspath_List is NULL\n");
Py_DECREF(mod);
PyGILState_Release(gilstate);
return;
@@ -1228,6 +1232,8 @@ static int bpy_pydriver_create_dict(void)
PyDict_SetItemString(d, "Blender", mod);
PyDict_SetItemString(d, "b", mod);
Py_DECREF(mod);
+ } else {
+ PyErr_Clear();
}
mod = PyImport_ImportModule("math");
@@ -1245,6 +1251,8 @@ static int bpy_pydriver_create_dict(void)
PyDict_SetItemString(d, "noise", mod);
PyDict_SetItemString(d, "n", mod);
Py_DECREF(mod);
+ } else {
+ PyErr_Clear();
}
/* If there's a Blender text called pydrivers.py, import it.
@@ -1270,6 +1278,8 @@ static int bpy_pydriver_create_dict(void)
PyDict_SetItemString(d, "ob", fcn);
Py_DECREF(fcn);
}
+ } else {
+ PyErr_Clear();
}
/* TODO - change these */
@@ -1282,6 +1292,8 @@ static int bpy_pydriver_create_dict(void)
PyDict_SetItemString(d, "me", fcn);
Py_DECREF(fcn);
}
+ } else {
+ PyErr_Clear();
}
/* ma(matname) == Blender.Material.Get(matname) */
@@ -1293,6 +1305,8 @@ static int bpy_pydriver_create_dict(void)
PyDict_SetItemString(d, "ma", fcn);
Py_DECREF(fcn);
}
+ } else {
+ PyErr_Clear();
}
return 0;
@@ -2828,11 +2842,18 @@ static PyObject *blender_import( PyObject * self, PyObject * args )
char *name;
PyObject *globals = NULL, *locals = NULL, *fromlist = NULL;
PyObject *m;
-
+ //PyObject_Print(args, stderr, 0);
+#if (PY_VERSION_HEX >= 0x02060000)
+ int dummy_val; /* what does this do?*/
+
+ if( !PyArg_ParseTuple( args, "s|OOOi:bimport",
+ &name, &globals, &locals, &fromlist, &dummy_val) )
+ return NULL;
+#else
if( !PyArg_ParseTuple( args, "s|OOO:bimport",
&name, &globals, &locals, &fromlist ) )
return NULL;
-
+#endif
m = PyImport_ImportModuleEx( name, globals, locals, fromlist );
if( m )
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index 53b141a9bfe..cdf7ebd0943 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -1077,9 +1077,17 @@ PyObject *KXpy_import(PyObject *self, PyObject *args)
PyObject *fromlist = NULL;
PyObject *l, *m, *n;
+#if (PY_VERSION_HEX >= 0x02060000)
+ int dummy_val; /* what does this do?*/
+
+ if (!PyArg_ParseTuple(args, "s|OOOi:m_import",
+ &name, &globals, &locals, &fromlist, &dummy_val))
+ return NULL;
+#else
if (!PyArg_ParseTuple(args, "s|OOO:m_import",
&name, &globals, &locals, &fromlist))
return NULL;
+#endif
/* check for builtin modules */
m = PyImport_AddModule("sys");
@@ -1492,6 +1500,7 @@ int saveGamePythonConfig( char **marshal_buffer)
}
Py_DECREF(gameLogic);
} else {
+ PyErr_Clear();
printf("Error, GameLogic failed to import GameLogic.globalDict will be lost\n");
}
return marshal_length;
@@ -1523,6 +1532,7 @@ int loadGamePythonConfig(char *marshal_buffer, int marshal_length)
printf("Error could not marshall string\n");
}
} else {
+ PyErr_Clear();
printf("Error, GameLogic failed to import GameLogic.globalDict will be lost\n");
}
}