Commit: 473255d2f77aa6b5a3ee9ede939d8b9c4fc3edcc
Author: Roman Pogribnyi
Date:   Thu Jul 31 13:13:35 2014 +0200
Branches: soc-2014-fluid
https://developer.blender.org/rB473255d2f77aa6b5a3ee9ede939d8b9c4fc3edcc

method for frame_step in separate thread added

===================================================================

M       intern/smoke/intern/MANTA.cpp
M       intern/smoke/intern/MANTA.h
M       source/blender/python/manta_pp/pwrapper/pymain.cpp

===================================================================

diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index 50ee200..f72ffe3 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -163,6 +163,7 @@ void manta_cache_path(char *filepath)
        char *name="manta";
        BLI_make_file_string("/", filepath, BLI_temporary_dir(), name);
 }
+
 //void BLI_dir_create_recursive(const char *filepath);
 void create_manta_folder()
 {
@@ -195,19 +196,40 @@ void *run_manta_scene_thread(void *arguments)
 
 void run_manta_scene(char *filepath)
 {
-       //vector<string> a;
-       //a.push_back(filepath);
+       vector<string> a;
+       a.push_back(filepath);
        //PyGILState_STATE gilstate = PyGILState_Ensure();
-       //runMantaScript(a);
+       runMantaScript(a);
        //PyGILState_Release(gilstate);
 
        pthread_t manta_thread;
        struct manta_arg_struct args;
        args.filepath = filepath;
-       int rc = pthread_create(&manta_thread, NULL, run_manta_scene_thread, 
(void *)&args);
+       args.frame_num = 7;
+       int rc = pthread_create(&manta_thread, NULL, run_manta_sim_thread, 
(void *)&args);
        pthread_detach(manta_thread);
 }
 
+void *run_manta_sim_thread(void *arguments)
+//void manta_sim_step(int frame)
+{
+       struct manta_arg_struct *args = (struct manta_arg_struct *)arguments;
+       
+       PyGILState_STATE gilstate = PyGILState_Ensure();
+       for (int fr=0; fr<args->frame_num; ++fr) {
+               cout<< "cansimulate? "<<manta_sim_running<<endl;
+               if (! manta_sim_running)
+                       break;
+               std::string frame_str = static_cast<ostringstream*>( 
&(ostringstream() << fr) )->str();
+               std::string py_string_0 = string("sim_step(").append(frame_str);
+               std::string py_string_1 = py_string_0.append(")\0");
+               PyRun_SimpleString(py_string_1.c_str());
+               cout<< "done"<<manta_sim_running<<endl;
+       }
+       cout<< "doubledone"<<endl;
+       PyGILState_Release(gilstate);
+}
+
 void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
 {
        /*for now, simpleplume file creation
@@ -409,5 +431,9 @@ void generate_manta_sim_file(Scene *scene, 
SmokeModifierData *smd)
        manta_setup_file << ss.rdbuf();
        manta_setup_file.close();
        run_manta_scene("manta_scene.py");
+//     for (int frame=0; frame< 20; frame++)
+//     {
+//             manta_sim_step(frame);
+//     }
 }
 
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index 8801f42..1ec633c 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -17,6 +17,7 @@
 
 struct manta_arg_struct {
        std::string filepath;
+       int frame_num;
 };
 
 void runMantaScript(vector<string>& args);//defined in 
manta_pp/pwrapper/pymain.cpp
@@ -43,14 +44,20 @@ void add_mesh_transform_method(stringstream& ss);
 
 void manta_cache_path(char *filepath);
 
+static bool manta_sim_running=true;
+
 //void BLI_dir_create_recursive(const char *filepath);
 void create_manta_folder();
 
 void *run_manta_scene_thread(void *threadid);
 
+void *run_manta_sim_thread(void *threadid);
+
 void run_manta_scene(char * filepath);
 
 void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd);
 
+void manta_sim_step(int frame);
+
 #endif /* MANTA_H */
 
diff --git a/source/blender/python/manta_pp/pwrapper/pymain.cpp 
b/source/blender/python/manta_pp/pwrapper/pymain.cpp
index 72a8534..70f1971 100644
--- a/source/blender/python/manta_pp/pwrapper/pymain.cpp
+++ b/source/blender/python/manta_pp/pwrapper/pymain.cpp
@@ -86,13 +86,13 @@ void runMantaScript(vector<string>& args) {
 #else
        // for linux, use this as it produces nicer error messages
        PyRun_SimpleFileEx(fp, filename.c_str(), 1);    
-       for (int frame=0; frame < 4; ++frame)
-       {
-               std::string frame_str = static_cast<ostringstream*>( 
&(ostringstream() << frame) )->str();
-               std::string py_string_0 = string("sim_step(").append(frame_str);
-               std::string py_string_1 = py_string_0.append(")\0");
-               PyRun_SimpleString(py_string_1.c_str());
-       }
+//     for (int frame=0; frame < 4; ++frame)
+//     {
+//             std::string frame_str = static_cast<ostringstream*>( 
&(ostringstream() << frame) )->str();
+//             std::string py_string_0 = string("sim_step(").append(frame_str);
+//             std::string py_string_1 = py_string_0.append(")\0");
+//             PyRun_SimpleString(py_string_1.c_str());
+//     }
        fclose(fp);    
 #endif

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to