[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39650] branches/cycles/intern/cycles/ blender: Cycles: fix crash in 3d view status text display.
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Aug 23 14:20:11 CEST 2011
Revision: 39650
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39650
Author: blendix
Date: 2011-08-23 12:20:11 +0000 (Tue, 23 Aug 2011)
Log Message:
-----------
Cycles: fix crash in 3d view status text display.
Modified Paths:
--------------
branches/cycles/intern/cycles/blender/blender_python.cpp
branches/cycles/intern/cycles/blender/blender_session.cpp
branches/cycles/intern/cycles/blender/blender_session.h
Modified: branches/cycles/intern/cycles/blender/blender_python.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_python.cpp 2011-08-23 12:18:32 UTC (rev 39649)
+++ branches/cycles/intern/cycles/blender/blender_python.cpp 2011-08-23 12:20:11 UTC (rev 39650)
@@ -129,37 +129,16 @@
BlenderSession *session = (BlenderSession*)PyLong_AsVoidPtr(pysession);
- bool draw_text = false;
-
if(PyLong_AsVoidPtr(pyrv3d)) {
/* 3d view drawing */
int viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
- draw_text = session->draw(viewport[2], viewport[3]);
+ session->draw(viewport[2], viewport[3]);
}
- else {
- /* image editor drawing */
- draw_text = session->draw();
- }
- /* draw */
- PyObject *ret = PyTuple_New(2);
-
- if(!draw_text) {
- PyTuple_SetItem(ret, 0, PyUnicode_FromString(""));
- PyTuple_SetItem(ret, 1, PyUnicode_FromString(""));
- }
- else {
- string status, substatus;
-
- session->get_status(status, substatus);
-
- PyTuple_SetItem(ret, 0, PyUnicode_FromString(status.c_str()));
- PyTuple_SetItem(ret, 1, PyUnicode_FromString(substatus.c_str()));
- }
-
- return ret;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyObject *sync_func(PyObject *self, PyObject *args)
Modified: branches/cycles/intern/cycles/blender/blender_session.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_session.cpp 2011-08-23 12:18:32 UTC (rev 39649)
+++ branches/cycles/intern/cycles/blender/blender_session.cpp 2011-08-23 12:20:11 UTC (rev 39650)
@@ -229,15 +229,13 @@
session->reset(width, height);
}
+ /* update status and progress for 3d view draw */
+ update_status_progress();
+
/* draw */
return !session->draw(width, height);
}
-bool BlenderSession::draw()
-{
- return !session->draw(width, height);
-}
-
void BlenderSession::get_status(string& status, string& substatus)
{
session->progress.get_status(status, substatus);
@@ -252,20 +250,13 @@
progress = ((float)pass/(float)session->params.passes);
}
-void BlenderSession::tag_update()
+void BlenderSession::update_status_progress()
{
- /* tell blender that we want to get another update callback */
- engine_tag_update((RenderEngine*)b_engine.ptr.data);
-}
-
-void BlenderSession::tag_redraw()
-{
string status, substatus;
float progress;
double total_time;
char time_str[128];
- /* update stats and progress */
get_status(status, substatus);
get_progress(progress, total_time);
@@ -279,8 +270,21 @@
RE_engine_update_stats((RenderEngine*)b_engine.ptr.data, "", status.c_str());
RE_engine_update_progress((RenderEngine*)b_engine.ptr.data, progress);
+}
+void BlenderSession::tag_update()
+{
+ /* tell blender that we want to get another update callback */
+ engine_tag_update((RenderEngine*)b_engine.ptr.data);
+}
+
+void BlenderSession::tag_redraw()
+{
if(background) {
+ /* update stats and progress, only for background here because
+ in 3d view we do it in draw for thread safety reasons */
+ update_status_progress();
+
/* offline render, redraw if timeout passed */
if(time_dt() - last_redraw_time > 1.0f) {
write_render_result();
Modified: branches/cycles/intern/cycles/blender/blender_session.h
===================================================================
--- branches/cycles/intern/cycles/blender/blender_session.h 2011-08-23 12:18:32 UTC (rev 39649)
+++ branches/cycles/intern/cycles/blender/blender_session.h 2011-08-23 12:20:11 UTC (rev 39650)
@@ -50,13 +50,13 @@
void synchronize();
/* drawing */
- bool draw();
bool draw(int w, int h);
void tag_redraw();
void tag_update();
void get_status(string& status, string& substatus);
void get_progress(float& progress, double& total_time);
void test_cancel();
+ void update_status_progress();
bool background;
Session *session;
More information about the Bf-blender-cvs
mailing list