diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-12-05 19:27:52 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-12-05 20:15:04 +0300 |
commit | 2b4eeb79cd77bebdb98c769b56dbe0a87e034e1a (patch) | |
tree | 05633e664998aa9fd1e2241da163a71a6bb04184 | |
parent | bd0b9ed0c0436cda050f139b9d30bd3d0648d09a (diff) |
Cycles: Report error to the blender using report API
This way when something goes wrong in Cycles (for example out of VRAM, timelimit
launching the kernel etc) we'll have a nice report in the Info space header.
Sure it'll be nice to have mention of error in the image editor's information
line, but that's for the future.
This fixes T42747: "CUDA error" appears only momentarily, then disappears
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 15 | ||||
-rw-r--r-- | intern/cycles/blender/blender_session.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 66d63d62067..39085ff2a1c 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -92,6 +92,7 @@ void BlenderSession::create_session() /* reset status/progress */ last_status = ""; + last_error = ""; last_progress = -1.0f; start_resize_time = 0.0; @@ -863,6 +864,20 @@ void BlenderSession::update_status_progress() b_engine.update_progress(progress); last_progress = progress; } + + if (session->progress.get_error()) { + string error = session->progress.get_error_message(); + if(error != last_error) { + /* TODO(sergey): Currently C++ RNA API doesn't let us to + * use mnemonic name for the variable. Would be nice to + * have this figured out. + * + * For until then, 1 << 5 means RPT_ERROR. + */ + b_engine.report(1 << 5, error.c_str()); + last_error = error; + } + } } void BlenderSession::tag_update() diff --git a/intern/cycles/blender/blender_session.h b/intern/cycles/blender/blender_session.h index ac685118b3d..143a23af5c6 100644 --- a/intern/cycles/blender/blender_session.h +++ b/intern/cycles/blender/blender_session.h @@ -91,6 +91,7 @@ public: string b_rlay_name; string last_status; + string last_error; float last_progress; int width, height; |