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/blender_interface
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/blender_interface')
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp4
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h10
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp4
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h11
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h4
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderTextureManager.cpp4
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderTextureManager.h4
-rw-r--r--source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp1
8 files changed, 28 insertions, 14 deletions
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
index 915493dad7a..2f98a042e27 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
@@ -28,6 +28,8 @@
#include "BKE_global.h"
+namespace Freestyle {
+
BlenderFileLoader::BlenderFileLoader(Render *re, SceneRenderLayer *srl)
{
_re = re;
@@ -756,3 +758,5 @@ void BlenderFileLoader::insertShapeNode(ObjectInstanceRen *obi, int id)
currentMesh->AddChild(shape);
_Scene->AddChild(currentMesh);
}
+
+} /* namespace Freestyle */
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h
index 48c20b6b931..fd0672d8e13 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h
+++ b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h
@@ -39,11 +39,7 @@
#include "../system/FreestyleConfig.h"
#include "../system/RenderMonitor.h"
-// XXX Are those "ifdef __cplusplus" useful here?
-#ifdef __cplusplus
extern "C" {
-#endif
-
#include "DNA_material_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_scene_types.h"
@@ -55,11 +51,9 @@ extern "C" {
#include "BKE_scene.h"
#include "BLI_math.h"
-
-#ifdef __cplusplus
}
-#endif
+namespace Freestyle {
class NodeGroup;
@@ -128,4 +122,6 @@ protected:
RenderMonitor *_pRenderMonitor;
};
+} /* namespace Freestyle */
+
#endif // __BLENDER_FILE_LOADER_H__
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
index 05fc30a6bd5..0bd990ad03a 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
@@ -60,6 +60,8 @@ extern "C" {
}
#endif
+namespace Freestyle {
+
BlenderStrokeRenderer::BlenderStrokeRenderer(Render *re, int render_count) : StrokeRenderer()
{
// TEMPORARY - need a texture manager
@@ -510,3 +512,5 @@ Render *BlenderStrokeRenderer::RenderScene(Render *re)
RE_RenderFreestyleStrokes(freestyle_render, G.main, freestyle_scene);
return freestyle_render;
}
+
+} /* namespace Freestyle */
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h
index 43e7a699b5e..f4af5e3aba0 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h
+++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h
@@ -28,19 +28,14 @@
#include "../stroke/StrokeRenderer.h"
#include "../system/FreestyleConfig.h"
-// XXX Are those "ifdef __cplusplus" useful here?
-#ifdef __cplusplus
extern "C" {
-#endif
-
#include "DNA_material_types.h"
#include "DNA_scene_types.h"
#include "render_types.h"
-
-#ifdef __cplusplus
}
-#endif
+
+namespace Freestyle {
class LIB_STROKE_EXPORT BlenderStrokeRenderer : public StrokeRenderer
{
@@ -68,4 +63,6 @@ protected:
unsigned int get_stroke_mesh_id(void) const;
};
+} /* namespace Freestyle */
+
#endif // __BLENDER_STROKE_RENDERER_H__
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h b/source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h
index 7848b75749f..7419d49ba4d 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h
+++ b/source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h
@@ -34,6 +34,8 @@ extern "C" {
#include "BKE_text.h"
}
+namespace Freestyle {
+
class BlenderStyleModule : public StyleModule
{
public:
@@ -58,4 +60,6 @@ private:
struct Text *_text;
};
+} /* namespace Freestyle */
+
#endif // __BLENDERSTYLEMODULE_H__
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderTextureManager.cpp b/source/blender/freestyle/intern/blender_interface/BlenderTextureManager.cpp
index c1eaa1f5928..7b397f5eea1 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderTextureManager.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderTextureManager.cpp
@@ -26,6 +26,8 @@
#include "BKE_global.h"
+namespace Freestyle {
+
BlenderTextureManager::BlenderTextureManager()
: TextureManager()
{
@@ -95,3 +97,5 @@ unsigned int BlenderTextureManager::loadBrush(string sname, Stroke::MediumType m
return 0;
#endif
}
+
+} /* namespace Freestyle */
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderTextureManager.h b/source/blender/freestyle/intern/blender_interface/BlenderTextureManager.h
index d55ed8d7ddc..1484188851d 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderTextureManager.h
+++ b/source/blender/freestyle/intern/blender_interface/BlenderTextureManager.h
@@ -29,6 +29,8 @@
# include "../stroke/StrokeRep.h"
# include "../system/FreestyleConfig.h"
+namespace Freestyle {
+
/*! Class to load textures */
class LIB_RENDERING_EXPORT BlenderTextureManager : public TextureManager
{
@@ -43,4 +45,6 @@ protected:
virtual void loadStandardBrushes();
};
+} /* namespace Freestyle */
+
#endif // __BLENDERTEXTUREMANAGER_H__
diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
index 325c314a570..56d12612dbc 100644
--- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
+++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
@@ -32,6 +32,7 @@
#include "../application/Controller.h"
using namespace std;
+using namespace Freestyle;
extern "C" {