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:
authorBastien Montagne <montagne29@wanadoo.fr>2019-01-16 21:41:29 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-01-16 21:43:53 +0300
commit81022000063c1fe84d85e8de416d8ab0c2c4c516 (patch)
tree01db45c9a9f3e87b107b2d61904080261cecf730
parentfeaf846f93913840b523843c63ef67dfa82379cc (diff)
Cleanup/sanitize usages of G.debug_value.
There was no documentation at all, some very bad practices (like using G.debug_value > 0 as some sort of global debug print switch), and even an overlapping use of '1' value... Also, python setter did not check for valid range (since this is a short, not an int).
-rw-r--r--source/blender/blenkernel/BKE_global.h16
-rw-r--r--source/blender/blenkernel/intern/cloth.c9
-rw-r--r--source/blender/editors/screen/area.c2
-rw-r--r--source/blender/modifiers/intern/MOD_cloth.c3
-rw-r--r--source/blender/modifiers/intern/MOD_collision.c3
-rw-r--r--source/blender/python/intern/bpy_app.c10
6 files changed, 34 insertions, 9 deletions
diff --git a/source/blender/blenkernel/BKE_global.h b/source/blender/blenkernel/BKE_global.h
index b2991679775..97e23a952db 100644
--- a/source/blender/blenkernel/BKE_global.h
+++ b/source/blender/blenkernel/BKE_global.h
@@ -73,7 +73,21 @@ typedef struct Global {
/* to indicate render is busy, prevent renderwindow events etc */
bool is_rendering;
- /* debug value, can be set from the UI and python, used for testing nonstandard features */
+ /* Debug value, can be set from the UI and python, used for testing nonstandard features.
+ * DO NOT abuse it with generic checks like `if (G.debug_value > 0)`. Do not use it as bitflags.
+ * Only precise specific values should be checked for, to avoid unpredictable side-effects.
+ * Please document here the value(s) you are using (or a range of values reserved to some area).
+ * * -16384 and below: Reserved for python (add-ons) usage.
+ * * -1: Disable faster motion paths computation (since 08/2018).
+ * * 1 - 30: EEVEE debug/stats values (01/2018).
+ * * 101: Enable UI debug drawing of fullscreen area's corner widget (10/2014).
+ * * 527: Old mysterious switch in behavior of MeshDeform modifier (before 04/2010).
+ * * 777: Enable UI node panel's sockets polling (11/2011).
+ * * 799: Enable some mysterious new depsgraph behavior (05/2015).
+ * * 1112: Disable new Cloth internal springs hanlding (09/2014).
+ * * 1234: Disable new dyntopo code fixing skinny faces generation (04/2015).
+ * * 16384 and above: Reserved for python (add-ons) usage.
+ */
short debug_value;
/* saved to the blend file as FileGlobal.globalf,
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 30b5d92bdb7..47afef444cf 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -515,8 +515,9 @@ void cloth_free_modifier(ClothModifierData *clmd )
void cloth_free_modifier_extern(ClothModifierData *clmd )
{
Cloth *cloth = NULL;
- if (G.debug_value > 0)
+ if (G.debug & G_DEBUG_SIMDATA) {
printf("cloth_free_modifier_extern\n");
+ }
if ( !clmd )
return;
@@ -524,8 +525,9 @@ void cloth_free_modifier_extern(ClothModifierData *clmd )
cloth = clmd->clothObject;
if ( cloth ) {
- if (G.debug_value > 0)
+ if (G.debug & G_DEBUG_SIMDATA) {
printf("cloth_free_modifier_extern in\n");
+ }
BPH_cloth_solver_free(clmd);
@@ -728,8 +730,9 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, Mesh *mesh, fl
// If we have a clothObject, free it.
if ( clmd->clothObject != NULL ) {
cloth_free_modifier ( clmd );
- if (G.debug_value > 0)
+ if (G.debug & G_DEBUG_SIMDATA) {
printf("cloth_free_modifier cloth_from_object\n");
+ }
}
// Allocate a new cloth object.
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 34a20c8ccf7..76c907a964a 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -210,7 +210,7 @@ static void area_draw_azone_fullscreen(short x1, short y1, short x2, short y2, f
* The click_rect is the same as defined in fullscreen_click_rcti_init
* Keep them both in sync */
- if (G.debug_value == 1) {
+ if (G.debug_value == 101) {
rcti click_rect;
float icon_size = UI_DPI_ICON_SIZE + 7 * UI_DPI_FAC;
diff --git a/source/blender/modifiers/intern/MOD_cloth.c b/source/blender/modifiers/intern/MOD_cloth.c
index 636c465d304..0c7c701e5e5 100644
--- a/source/blender/modifiers/intern/MOD_cloth.c
+++ b/source/blender/modifiers/intern/MOD_cloth.c
@@ -201,8 +201,9 @@ static void freeData(ModifierData *md)
ClothModifierData *clmd = (ClothModifierData *) md;
if (clmd) {
- if (G.debug_value > 0)
+ if (G.debug & G_DEBUG_SIMDATA) {
printf("clothModifier_freeData\n");
+ }
cloth_free_modifier_extern(clmd);
diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c
index 011635e3012..7f4a0b91dbf 100644
--- a/source/blender/modifiers/intern/MOD_collision.c
+++ b/source/blender/modifiers/intern/MOD_collision.c
@@ -141,8 +141,9 @@ static void deformVerts(
current_time = DEG_get_ctime(ctx->depsgraph);
- if (G.debug_value > 0)
+ if (G.debug & G_DEBUG_SIMDATA) {
printf("current_time %f, collmd->time_xnew %f\n", current_time, collmd->time_xnew);
+ }
mvert_num = mesh_src->totvert;
diff --git a/source/blender/python/intern/bpy_app.c b/source/blender/python/intern/bpy_app.c
index bba9eee0316..01c8573f589 100644
--- a/source/blender/python/intern/bpy_app.c
+++ b/source/blender/python/intern/bpy_app.c
@@ -297,7 +297,7 @@ static PyObject *bpy_app_binary_path_python_get(PyObject *self, void *UNUSED(clo
}
PyDoc_STRVAR(bpy_app_debug_value_doc,
-"Int, number which can be set to non-zero values for testing purposes"
+"Short, number which can be set to non-zero values for testing purposes"
);
static PyObject *bpy_app_debug_value_get(PyObject *UNUSED(self), void *UNUSED(closure))
{
@@ -313,7 +313,13 @@ static int bpy_app_debug_value_set(PyObject *UNUSED(self), PyObject *value, void
return -1;
}
- G.debug_value = param;
+ if (param < SHRT_MIN || param > SHRT_MAX) {
+ PyErr_SetString(PyExc_ValueError,
+ "bpy.app.debug_value can only be set to short range [-32768, 32767]");
+ return -1;
+ }
+
+ G.debug_value = (short)param;
WM_main_add_notifier(NC_WINDOW, NULL);