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:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-04-09 04:46:49 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-04-09 04:46:49 +0400
commit800f86c8454ced85c29d1dcb04dcb163689a89d3 (patch)
tree4598a2ea78a1d1cf6a4c0a9e7030de4c826a006d /source/blender/freestyle/intern/application
parente6bd510dde6289efcead80e3d21cb21876282a56 (diff)
Attempt to fix a potential name conflict between Freestyle and the compositor.
A crash in the Freestyle renderer was reported by Ton on IRC with a stack trace below. Note that #2 is in Freestyle, whereas #1 is in the compositor. The problem was observed in a debug build on OS X 10.7 (gcc 4.2, openmp disabled, no llvm). ---------------------------------------------------------------------- Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: 13 at address: 0x0000000000000000 [Switching to process 72386 thread 0xf303] 0x0000000100c129f3 in NodeBase::~NodeBase (this=0x10e501c80) at COM_NodeBase.cpp:43 43 delete (this->m_outputsockets.back()); Current language: auto; currently c++ (gdb) where #0 0x0000000100c129f3 in NodeBase::~NodeBase (this=0x10e501c80) at COM_NodeBase.cpp:43 #1 0x0000000100c29066 in Node::~Node (this=0x10e501c80) at COM_Node.h:49 #2 0x000000010089c273 in NodeShape::~NodeShape (this=0x10e501c80) at NodeShape.cpp:43 #3 0x000000010089910b in NodeGroup::destroy (this=0x10e501da0) at NodeGroup.cpp:61 #4 0x00000001008990cd in NodeGroup::destroy (this=0x10e5014b0) at NodeGroup.cpp:59 #5 0x00000001008990cd in NodeGroup::destroy (this=0x114e18da0) at NodeGroup.cpp:59 #6 0x00000001007e6602 in Controller::ClearRootNode (this=0x114e19640) at Controller.cpp:329 #7 0x00000001007ea52e in Controller::LoadMesh (this=0x114e19640, re=0x10aba4638, srl=0x1140f5258) at Controller.cpp:302 #8 0x00000001008030ad in prepare (re=0x10aba4638, srl=0x1140f5258) at FRS_freestyle.cpp:302 #9 0x000000010080457a in FRS_do_stroke_rendering (re=0x10aba4638, srl=0x1140f5258) at FRS_freestyle.cpp:600 #10 0x00000001006aeb9d in add_freestyle (re=0x10aba4638) at pipeline.c:1584 #11 0x00000001006aceb7 in do_render_3d (re=0x10aba4638) at pipeline.c:1094 #12 0x00000001006ae061 in do_render_fields_blur_3d (re=0x10aba4638) at pipeline.c:1367 #13 0x00000001006afa16 in do_render_composite_fields_blur_3d (re=0x10aba4638) at pipeline.c:1815 #14 0x00000001006b04e4 in do_render_all_options (re=0x10aba4638) at pipeline.c:2021 ---------------------------------------------------------------------- Apparently a name conflict between the two Blender modules is taking place. The present commit hence intends to address it by putting all the Freestyle C++ classes in the namespace 'Freestyle'. This revision will also prevent potential name conflicts with other Blender modules in the future. Special thanks to Lukas Toenne for the help with C++ namespace.
Diffstat (limited to 'source/blender/freestyle/intern/application')
-rw-r--r--source/blender/freestyle/intern/application/AppCanvas.cpp5
-rw-r--r--source/blender/freestyle/intern/application/AppCanvas.h4
-rw-r--r--source/blender/freestyle/intern/application/AppConfig.cpp4
-rw-r--r--source/blender/freestyle/intern/application/AppConfig.h4
-rw-r--r--source/blender/freestyle/intern/application/AppView.cpp4
-rw-r--r--source/blender/freestyle/intern/application/AppView.h4
-rw-r--r--source/blender/freestyle/intern/application/Controller.cpp12
-rw-r--r--source/blender/freestyle/intern/application/Controller.h21
8 files changed, 36 insertions, 22 deletions
diff --git a/source/blender/freestyle/intern/application/AppCanvas.cpp b/source/blender/freestyle/intern/application/AppCanvas.cpp
index 2def2f269dd..e385eb76fbe 100644
--- a/source/blender/freestyle/intern/application/AppCanvas.cpp
+++ b/source/blender/freestyle/intern/application/AppCanvas.cpp
@@ -33,6 +33,8 @@
#include "../system/StringUtils.h"
+namespace Freestyle {
+
AppCanvas::AppCanvas()
:Canvas()
{
@@ -205,7 +207,8 @@ void AppCanvas::RenderStroke(Stroke *iStroke)
iStroke->Render(_Renderer);
}
-
void AppCanvas::update()
{
}
+
+} /* namespace Freestyle */
diff --git a/source/blender/freestyle/intern/application/AppCanvas.h b/source/blender/freestyle/intern/application/AppCanvas.h
index 447bd493377..9a92cf482d0 100644
--- a/source/blender/freestyle/intern/application/AppCanvas.h
+++ b/source/blender/freestyle/intern/application/AppCanvas.h
@@ -28,6 +28,8 @@
#include "../stroke/Canvas.h"
#include "AppView.h"
+namespace Freestyle {
+
class AppCanvas : public Canvas
{
public:
@@ -91,4 +93,6 @@ private:
} _pass_diffuse, _pass_z;
};
+} /* namespace Freestyle */
+
#endif // __APPCANVAS_H__
diff --git a/source/blender/freestyle/intern/application/AppConfig.cpp b/source/blender/freestyle/intern/application/AppConfig.cpp
index 2c8ef1238fa..94bda945701 100644
--- a/source/blender/freestyle/intern/application/AppConfig.cpp
+++ b/source/blender/freestyle/intern/application/AppConfig.cpp
@@ -33,6 +33,8 @@ extern "C" {
#include "BLI_path_util.h"
}
+namespace Freestyle {
+
namespace Config {
Path *Path::_pInstance = 0;
@@ -95,3 +97,5 @@ string Path::getEnvVar(const string& iEnvVarName)
}
} // End of namepace Config
+
+} /* namespace Freestyle */
diff --git a/source/blender/freestyle/intern/application/AppConfig.h b/source/blender/freestyle/intern/application/AppConfig.h
index b713c17f341..d647b7fc59c 100644
--- a/source/blender/freestyle/intern/application/AppConfig.h
+++ b/source/blender/freestyle/intern/application/AppConfig.h
@@ -34,6 +34,8 @@
using namespace std;
+namespace Freestyle {
+
namespace Config {
class Path {
@@ -98,4 +100,6 @@ static const real DEFAULT_DKR_EPSILON = 0.0;
} // End of namepace Config
+} /* namespace Freestyle */
+
#endif // __APP_CONFIG_H__
diff --git a/source/blender/freestyle/intern/application/AppView.cpp b/source/blender/freestyle/intern/application/AppView.cpp
index 4937ec0eab6..ae202412c09 100644
--- a/source/blender/freestyle/intern/application/AppView.cpp
+++ b/source/blender/freestyle/intern/application/AppView.cpp
@@ -56,6 +56,8 @@ extern "C" {
#include "FRS_freestyle.h"
}
+namespace Freestyle {
+
AppView::AppView(const char *iName)
{
_Fovy = DEG2RADF(30.0f);
@@ -189,3 +191,5 @@ real AppView::GetFocalLength()
real Near = std::max(0.1, (real)(-2.0f * _maxAbs + distanceToSceneCenter()));
return Near;
}
+
+} /* namespace Freestyle */
diff --git a/source/blender/freestyle/intern/application/AppView.h b/source/blender/freestyle/intern/application/AppView.h
index 1c7f19607db..0a9bc6449f4 100644
--- a/source/blender/freestyle/intern/application/AppView.h
+++ b/source/blender/freestyle/intern/application/AppView.h
@@ -31,6 +31,8 @@
#include "../scene_graph/NodeDrawingStyle.h"
#include "../system/Precision.h"
+namespace Freestyle {
+
using namespace Geometry;
class AppView
@@ -228,4 +230,6 @@ protected:
NodeDrawingStyle *_p2DSelectionNode;
};
+} /* namespace Freestyle */
+
#endif // __APPVIEW_H__
diff --git a/source/blender/freestyle/intern/application/Controller.cpp b/source/blender/freestyle/intern/application/Controller.cpp
index 5b010d5ebc2..aaa8542d63b 100644
--- a/source/blender/freestyle/intern/application/Controller.cpp
+++ b/source/blender/freestyle/intern/application/Controller.cpp
@@ -63,19 +63,11 @@
#include "BKE_global.h"
-// XXX Not inside an "extern C" block???
#include "DNA_freestyle_types.h"
-// XXX Are those "ifdef __cplusplus" useful here?
-#ifdef __cplusplus
-extern "C" {
-#endif
-
#include "FRS_freestyle.h"
-#ifdef __cplusplus
-}
-#endif
+namespace Freestyle {
Controller::Controller()
{
@@ -1043,3 +1035,5 @@ void Controller::init_options()
setPassDiffuse(NULL, 0, 0);
setPassZ(NULL, 0, 0);
}
+
+} /* namespace Freestyle */
diff --git a/source/blender/freestyle/intern/application/Controller.h b/source/blender/freestyle/intern/application/Controller.h
index 3ac3ba0654c..ff9a85f8041 100644
--- a/source/blender/freestyle/intern/application/Controller.h
+++ b/source/blender/freestyle/intern/application/Controller.h
@@ -40,6 +40,13 @@
#include "../view_map/FEdgeXDetector.h"
#include "../view_map/ViewMapBuilder.h"
+extern "C" {
+#include "render_types.h"
+#include "DNA_scene_types.h"
+}
+
+namespace Freestyle {
+
class AppView;
class NodeGroup;
class WShape;
@@ -51,18 +58,6 @@ class InteractiveShader;
class Shader;
class StrokeRenderer;
-// XXX Are those "ifdef __cplusplus" useful here?
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "render_types.h"
-#include "DNA_scene_types.h"
-
-#ifdef __cplusplus
-}
-#endif
-
class Controller
{
public:
@@ -247,4 +242,6 @@ private:
extern Controller *g_pController;
+} /* namespace Freestyle */
+
#endif // __CONTROLLER_H__