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:
authorCampbell Barton <ideasman42@gmail.com>2018-05-18 12:02:39 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-05-18 12:02:39 +0300
commit2451a1951e22fd7761f7e39ededda0bd5cc2d875 (patch)
tree615306055960e0c35c549ee3a88ce041d1e33509
parent987d1df57159afd57f33d7e58681be2fcdebda16 (diff)
parent278e3f7d5fea2a8b3775e76257dfd96a5e5c2f11 (diff)
Merge branch 'master' into blender2.8
-rw-r--r--intern/clog/CLG_log.h1
-rw-r--r--intern/clog/clog.c37
-rw-r--r--source/blender/compositor/nodes/COM_ChannelMatteNode.cpp4
-rw-r--r--source/blender/compositor/nodes/COM_ChromaMatteNode.cpp4
-rw-r--r--source/blender/compositor/nodes/COM_DistanceMatteNode.cpp6
-rw-r--r--source/blender/compositor/nodes/COM_KeyingNode.cpp4
-rw-r--r--source/creator/creator_args.c13
7 files changed, 55 insertions, 14 deletions
diff --git a/intern/clog/CLG_log.h b/intern/clog/CLG_log.h
index ff8f983b10c..61fc93be9e7 100644
--- a/intern/clog/CLG_log.h
+++ b/intern/clog/CLG_log.h
@@ -146,6 +146,7 @@ void CLG_exit(void);
void CLG_output_set(void *file_handle);
void CLG_output_use_basename_set(int value);
void CLG_fatal_fn_set(void (*fatal_fn)(void *file_handle));
+void CLG_backtrace_fn_set(void (*fatal_fn)(void *file_handle));
void CLG_type_filter_include(const char *type_filter, int type_filter_len);
void CLG_type_filter_exclude(const char *type_filter, int type_filter_len);
diff --git a/intern/clog/clog.c b/intern/clog/clog.c
index e96cbbe7f14..d26f0545117 100644
--- a/intern/clog/clog.c
+++ b/intern/clog/clog.c
@@ -81,6 +81,7 @@ typedef struct CLogContext {
struct {
void (*fatal_fn)(void *file_handle);
+ void (*backtrace_fn)(void *file_handle);
} callbacks;
} CLogContext;
@@ -328,15 +329,23 @@ static CLG_LogType *clg_ctx_type_register(CLogContext *ctx, const char *identifi
return ty;
}
-static void clg_ctx_fatal_action(CLogContext *ctx, FILE *file_handle)
+static void clg_ctx_fatal_action(CLogContext *ctx)
{
if (ctx->callbacks.fatal_fn != NULL) {
- ctx->callbacks.fatal_fn(file_handle);
+ ctx->callbacks.fatal_fn(ctx->output_file);
}
- fflush(file_handle);
+ fflush(ctx->output_file);
abort();
}
+static void clg_ctx_backtrace(CLogContext *ctx)
+{
+ /* Note: we avoid writing fo 'FILE', for backtrace we make an exception,
+ * if necessary we could have a version of the callback that writes to file descriptor all at once. */
+ ctx->callbacks.backtrace_fn(ctx->output_file);
+ fflush(ctx->output_file);
+}
+
/** \} */
/* -------------------------------------------------------------------- */
@@ -409,8 +418,12 @@ void CLG_log_str(
clg_str_free(&cstr);
+ if (lg->ctx->callbacks.backtrace_fn) {
+ clg_ctx_backtrace(lg->ctx);
+ }
+
if (severity == CLG_SEVERITY_FATAL) {
- clg_ctx_fatal_action(lg->ctx, lg->ctx->output_file);
+ clg_ctx_fatal_action(lg->ctx);
}
}
@@ -441,8 +454,12 @@ void CLG_logf(
clg_str_free(&cstr);
+ if (lg->ctx->callbacks.backtrace_fn) {
+ clg_ctx_backtrace(lg->ctx);
+ }
+
if (severity == CLG_SEVERITY_FATAL) {
- clg_ctx_fatal_action(lg->ctx, lg->ctx->output_file);
+ clg_ctx_fatal_action(lg->ctx);
}
}
@@ -472,6 +489,11 @@ static void CLG_ctx_fatal_fn_set(CLogContext *ctx, void (*fatal_fn)(void *file_h
ctx->callbacks.fatal_fn = fatal_fn;
}
+static void CLG_ctx_backtrace_fn_set(CLogContext *ctx, void (*backtrace_fn)(void *file_handle))
+{
+ ctx->callbacks.backtrace_fn = backtrace_fn;
+}
+
static void clg_ctx_type_filter_append(CLG_IDFilter **flt_list, const char *type_match, int type_match_len)
{
if (type_match_len == 0) {
@@ -569,6 +591,11 @@ void CLG_fatal_fn_set(void (*fatal_fn)(void *file_handle))
CLG_ctx_fatal_fn_set(g_ctx, fatal_fn);
}
+void CLG_backtrace_fn_set(void (*fatal_fn)(void *file_handle))
+{
+ CLG_ctx_backtrace_fn_set(g_ctx, fatal_fn);
+}
+
void CLG_type_filter_exclude(const char *type_match, int type_match_len)
{
CLG_ctx_type_filter_exclude(g_ctx, type_match, type_match_len);
diff --git a/source/blender/compositor/nodes/COM_ChannelMatteNode.cpp b/source/blender/compositor/nodes/COM_ChannelMatteNode.cpp
index cc573274c34..d1cf7b66fd0 100644
--- a/source/blender/compositor/nodes/COM_ChannelMatteNode.cpp
+++ b/source/blender/compositor/nodes/COM_ChannelMatteNode.cpp
@@ -53,9 +53,9 @@ void ChannelMatteNode::convertToOperations(NodeConverter &converter, const Compo
break;
case CMP_NODE_CHANNEL_MATTE_CS_YCC: /* YCC */
convert = new ConvertRGBToYCCOperation();
- ((ConvertRGBToYCCOperation *)convert)->setMode(0); /* BLI_YCC_ITU_BT601 */
+ ((ConvertRGBToYCCOperation *)convert)->setMode(BLI_YCC_ITU_BT709);
inv_convert = new ConvertYCCToRGBOperation();
- ((ConvertYCCToRGBOperation *)inv_convert)->setMode(0); /* BLI_YCC_ITU_BT601 */
+ ((ConvertYCCToRGBOperation *)inv_convert)->setMode(BLI_YCC_ITU_BT709);
break;
default:
break;
diff --git a/source/blender/compositor/nodes/COM_ChromaMatteNode.cpp b/source/blender/compositor/nodes/COM_ChromaMatteNode.cpp
index 6324ca9a3ca..2c985cd5bd1 100644
--- a/source/blender/compositor/nodes/COM_ChromaMatteNode.cpp
+++ b/source/blender/compositor/nodes/COM_ChromaMatteNode.cpp
@@ -41,8 +41,8 @@ void ChromaMatteNode::convertToOperations(NodeConverter &converter, const Compos
ConvertRGBToYCCOperation *operationRGBToYCC_Image = new ConvertRGBToYCCOperation();
ConvertRGBToYCCOperation *operationRGBToYCC_Key = new ConvertRGBToYCCOperation();
- operationRGBToYCC_Image->setMode(0); /* BLI_YCC_ITU_BT601 */
- operationRGBToYCC_Key->setMode(0); /* BLI_YCC_ITU_BT601 */
+ operationRGBToYCC_Image->setMode(BLI_YCC_ITU_BT709);
+ operationRGBToYCC_Key->setMode(BLI_YCC_ITU_BT709);
converter.addOperation(operationRGBToYCC_Image);
converter.addOperation(operationRGBToYCC_Key);
diff --git a/source/blender/compositor/nodes/COM_DistanceMatteNode.cpp b/source/blender/compositor/nodes/COM_DistanceMatteNode.cpp
index 99061cf8824..52c764f2223 100644
--- a/source/blender/compositor/nodes/COM_DistanceMatteNode.cpp
+++ b/source/blender/compositor/nodes/COM_DistanceMatteNode.cpp
@@ -66,8 +66,8 @@ void DistanceMatteNode::convertToOperations(NodeConverter &converter, const Comp
ConvertRGBToYCCOperation *operationYCCImage = new ConvertRGBToYCCOperation();
ConvertRGBToYCCOperation *operationYCCMatte = new ConvertRGBToYCCOperation();
- operationYCCImage->setMode(0); /* BLI_YCC_ITU_BT601 */
- operationYCCMatte->setMode(0); /* BLI_YCC_ITU_BT601 */
+ operationYCCImage->setMode(BLI_YCC_ITU_BT709);
+ operationYCCMatte->setMode(BLI_YCC_ITU_BT709);
converter.addOperation(operationYCCImage);
converter.addOperation(operationYCCMatte);
@@ -86,7 +86,7 @@ void DistanceMatteNode::convertToOperations(NodeConverter &converter, const Comp
if (storage->channel != 1) {
ConvertYCCToRGBOperation *inv_convert = new ConvertYCCToRGBOperation();
- inv_convert->setMode(0); /* BLI_YCC_ITU_BT601 */
+ inv_convert->setMode(BLI_YCC_ITU_BT709);
converter.addOperation(inv_convert);
converter.addLink(operationAlpha->getOutputSocket(0), inv_convert->getInputSocket(0));
diff --git a/source/blender/compositor/nodes/COM_KeyingNode.cpp b/source/blender/compositor/nodes/COM_KeyingNode.cpp
index e896b7144e5..ddfba07d9f7 100644
--- a/source/blender/compositor/nodes/COM_KeyingNode.cpp
+++ b/source/blender/compositor/nodes/COM_KeyingNode.cpp
@@ -50,7 +50,7 @@ KeyingNode::KeyingNode(bNode *editorNode) : Node(editorNode)
NodeOperationOutput *KeyingNode::setupPreBlur(NodeConverter &converter, NodeInput *inputImage, int size) const
{
ConvertRGBToYCCOperation *convertRGBToYCCOperation = new ConvertRGBToYCCOperation();
- convertRGBToYCCOperation->setMode(0); /* ITU 601 */
+ convertRGBToYCCOperation->setMode(BLI_YCC_ITU_BT709);
converter.addOperation(convertRGBToYCCOperation);
converter.mapInputSocket(inputImage, convertRGBToYCCOperation->getInputSocket(0));
@@ -86,7 +86,7 @@ NodeOperationOutput *KeyingNode::setupPreBlur(NodeConverter &converter, NodeInpu
}
ConvertYCCToRGBOperation *convertYCCToRGBOperation = new ConvertYCCToRGBOperation();
- convertYCCToRGBOperation->setMode(0); /* ITU 601 */
+ convertYCCToRGBOperation->setMode(BLI_YCC_ITU_BT709);
converter.addOperation(convertYCCToRGBOperation);
converter.addLink(combineOperation->getOutputSocket(0), convertYCCToRGBOperation->getInputSocket(0));
diff --git a/source/creator/creator_args.c b/source/creator/creator_args.c
index 30513bd7986..2840252acb9 100644
--- a/source/creator/creator_args.c
+++ b/source/creator/creator_args.c
@@ -523,6 +523,7 @@ static int arg_handle_print_help(int UNUSED(argc), const char **UNUSED(argv), vo
BLI_argsPrintArgDoc(ba, "--log");
BLI_argsPrintArgDoc(ba, "--log-level");
BLI_argsPrintArgDoc(ba, "--log-show-basename");
+ BLI_argsPrintArgDoc(ba, "--log-show-backtrace");
BLI_argsPrintArgDoc(ba, "--log-file");
printf("\n");
@@ -733,6 +734,17 @@ static int arg_handle_log_show_basename_set(int UNUSED(argc), const char **UNUSE
return 0;
}
+static const char arg_handle_log_show_backtrace_set_doc[] =
+"\n\tShow a back trace for each log message (debug builds only)."
+;
+static int arg_handle_log_show_backtrace_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
+{
+ /* Ensure types don't become incompatible. */
+ void (*fn)(FILE *fp) = BLI_system_backtrace;
+ CLG_backtrace_fn_set((void (*)(void *))fn);
+ return 0;
+}
+
static const char arg_handle_log_file_set_doc[] =
"<filename>\n"
"\n"
@@ -1820,6 +1832,7 @@ void main_args_setup(bContext *C, bArgs *ba)
BLI_argsAdd(ba, 1, NULL, "--log", CB(arg_handle_log_set), ba);
BLI_argsAdd(ba, 1, NULL, "--log-level", CB(arg_handle_log_level_set), ba);
BLI_argsAdd(ba, 1, NULL, "--log-show-basename", CB(arg_handle_log_show_basename_set), ba);
+ BLI_argsAdd(ba, 1, NULL, "--log-show-backtrace", CB(arg_handle_log_show_backtrace_set), ba);
BLI_argsAdd(ba, 1, NULL, "--log-file", CB(arg_handle_log_file_set), ba);
BLI_argsAdd(ba, 1, "-d", "--debug", CB(arg_handle_debug_mode_set), ba);