Commit: 08286e644b3ca95ae913f138bff4b45eac6ff991
Author: Mateusz Grzeliński
Date: Mon Aug 10 13:36:23 2020 +0200
Branches: soc-2020-info-editor
https://developer.blender.org/rB08286e644b3ca95ae913f138bff4b45eac6ff991
WIP: Override preferences with command line arguments
- add separate save/restore operators for debug related options
===================================================================
M intern/clog/CLG_log.h
M intern/clog/clog.c
M release/datafiles/userdef/userdef_default.c
M release/scripts/startup/bl_ui/space_userpref.py
M source/blender/blenkernel/BKE_global.h
M source/blender/blenkernel/intern/blender.c
M source/blender/editors/space_userpref/CMakeLists.txt
M source/blender/editors/space_userpref/userpref_intern.h
M source/blender/editors/space_userpref/userpref_ops.c
M source/blender/makesdna/DNA_userdef_types.h
M source/blender/makesrna/intern/rna_userdef.c
M source/blender/windowmanager/intern/wm_files.c
M source/creator/creator_args.c
===================================================================
diff --git a/intern/clog/CLG_log.h b/intern/clog/CLG_log.h
index b8cfe2e6e53..b5777d1e04d 100644
--- a/intern/clog/CLG_log.h
+++ b/intern/clog/CLG_log.h
@@ -94,6 +94,16 @@ extern "C" {
#define STRINGIFY_APPEND(a, b) "" a #b
#define STRINGIFY(x) STRINGIFY_APPEND("", x)
+#define CLG_DEFAULT_SEVERITY CLG_SEVERITY_WARN
+#define CLG_DEFAULT_LEVEL 0
+#define CLG_DEFAULT_OUTPUT_PATH ""
+#define CLG_DEFAULT_USE_TIMESTAMP false
+#define CLG_DEFAULT_USE_BASENAME false
+#define CLG_DEFAULT_USE_STDOUT true
+#define CLG_DEFAULT_ALWAYS_SHOW_WARNINGS true
+/** can not be null */
+#define CLG_DEFAULT_LOG_TYPE_FILTER "*"
+
struct CLogContext;
/* Don't typedef enums. */
diff --git a/intern/clog/clog.c b/intern/clog/clog.c
index 301645fe678..c6ac7a17c06 100644
--- a/intern/clog/clog.c
+++ b/intern/clog/clog.c
@@ -92,7 +92,7 @@ typedef struct CLogContext {
int output;
FILE *output_file;
- /** For timer (use_timestamp). */
+ /** For timer (log_use_timestamp). */
uint64_t timestamp_tick_start;
/** For new types. */
@@ -841,14 +841,17 @@ static CLogContext *CLG_ctx_init(void)
pthread_mutex_init(&ctx->types_lock, NULL);
#endif
ctx->use_color = true;
- ctx->default_type.severity_level = CLG_SEVERITY_WARN;
- ctx->default_type.level = 0;
- ctx->use_stdout = true;
- ctx->always_show_warnings = true;
+ ctx->use_timestamp = CLG_DEFAULT_USE_TIMESTAMP;
+ ctx->use_basename = CLG_DEFAULT_USE_BASENAME;
+ ctx->default_type.severity_level = CLG_DEFAULT_SEVERITY;
+ ctx->default_type.level = CLG_DEFAULT_LEVEL;
+ ctx->use_stdout = CLG_DEFAULT_USE_STDOUT;
+ ctx->always_show_warnings = CLG_DEFAULT_ALWAYS_SHOW_WARNINGS;
ctx->timestamp_tick_start = clg_timestamp_ticks_get();
/* enable all loggers by default */
- CLG_ctx_type_filter_include(ctx, "*", strlen("*"));
+ CLG_ctx_type_filter_include(
+ ctx, CLG_DEFAULT_LOG_TYPE_FILTER, strlen(CLG_DEFAULT_LOG_TYPE_FILTER));
CLG_ctx_output_update(ctx);
diff --git a/release/datafiles/userdef/userdef_default.c
b/release/datafiles/userdef/userdef_default.c
index b1bd043e906..685a7e6cf23 100644
--- a/release/datafiles/userdef/userdef_default.c
+++ b/release/datafiles/userdef/userdef_default.c
@@ -18,6 +18,7 @@
/* For constants. */
#include "BLI_math_base.h"
+#include <CLG_log.h>
#include "DNA_anim_types.h"
#include "DNA_curve_types.h"
@@ -230,10 +231,21 @@ const UserDef U_default = {
.collection_instance_empty_size = 1.0f,
.statusbar_flag = STATUSBAR_SHOW_VERSION,
- .log_filter = "",
+ .log_type_filter = CLG_DEFAULT_LOG_TYPE_FILTER,
+ .log_severity = CLG_DEFAULT_SEVERITY,
+ .log_verbosity = CLG_DEFAULT_LEVEL,
+ .log_use_basename = CLG_DEFAULT_USE_BASENAME,
+ .log_use_timestamp = CLG_DEFAULT_USE_TIMESTAMP,
+ .log_use_stdout = CLG_DEFAULT_USE_STDOUT,
+ .log_always_show_warnings = CLG_DEFAULT_ALWAYS_SHOW_WARNINGS,
+ .log_output_file_path = CLG_DEFAULT_OUTPUT_PATH,
+ .debug_flags = 0,
+ .debug_value = 0,
+ .verbose = 0,
.runtime =
{
.is_dirty = 0,
+ .use_settings_from_command_line = 0,
},
};
diff --git a/release/scripts/startup/bl_ui/space_userpref.py
b/release/scripts/startup/bl_ui/space_userpref.py
index 3bd6c72a674..cf99387c435 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -650,8 +650,8 @@ class USERPREF_PT_system_logging(SystemPanel,
CenterAlignMixIn, Panel):
def draw_header_preset(self, _context):
layout = self.layout
# TODO (grzelins) this is mocap:
- layout.operator("preferences.studiolight_install", icon='IMPORT',
text="Save*").type = 'WORLD'
- layout.operator("preferences.studiolight_install", icon='IMPORT',
text="Restore Default").type = 'WORLD'
+ layout.operator("preferences.log_preferences_save", icon='IMPORT',
text="Save")
+ layout.operator("preferences.log_preferences_reset_default",
icon='IMPORT', text="Restore Default")
layout.operator("preferences.studiolight_install", icon='PRESET',
text="")
layout.separator()
@@ -659,7 +659,7 @@ class USERPREF_PT_system_logging(SystemPanel,
CenterAlignMixIn, Panel):
prefs = context.preferences
system = prefs.system
- layout.prop(system, "log_filter")
+ layout.prop(system, "log_type_filter")
layout.prop(system, "verbose")
layout.prop(system, "log_severity")
diff --git a/source/blender/blenkernel/BKE_global.h
b/source/blender/blenkernel/BKE_global.h
index b5cee65a1ea..aee57832536 100644
--- a/source/blender/blenkernel/BKE_global.h
+++ b/source/blender/blenkernel/BKE_global.h
@@ -157,12 +157,19 @@ enum {
G_DEBUG_XR_TIME = (1 << 22), /* XR/OpenXR timing messages */
G_DEBUG_GHOST = (1 << 23), /* Debug GHOST module. */
+ G_DEBUG_LIBMV = (1 << 24),
+ G_DEBUG_CYCLES = (1 << 25),
+ G_DEBUG_FPE = (1 << 26), /* floating point exceptions */
+ G_DEBUG_MEMORY = (1 << 27),
};
+void G_debug_enable(int flags);
+void G_verbose_set(int value);
+
#define G_DEBUG_ALL \
(G_DEBUG | G_DEBUG_FFMPEG | G_DEBUG_PYTHON | G_DEBUG_EVENTS | G_DEBUG_WM |
G_DEBUG_JOBS | \
G_DEBUG_FREESTYLE | G_DEBUG_DEPSGRAPH | G_DEBUG_GPU_MEM | G_DEBUG_IO |
G_DEBUG_GPU_SHADERS | \
- G_DEBUG_GHOST)
+ G_DEBUG_GHOST | G_DEBUG_LIBMV | G_DEBUG_CYCLES | G_DEBUG_FPE |
G_DEBUG_MEMORY)
/** #Global.fileflags */
enum {
diff --git a/source/blender/blenkernel/intern/blender.c
b/source/blender/blenkernel/intern/blender.c
index 5443b3c1f31..db921d712b3 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -23,6 +23,7 @@
* Application level startup/shutdown functionality.
*/
+#include <BLI_mempool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -61,8 +62,18 @@
#include "RE_pipeline.h"
#include "RE_render_ext.h"
+#include "../../../creator/creator_intern.h"
+#include "../../editors/space_userpref/userpref_intern.h"
#include "BLF_api.h"
+#ifdef WITH_LIBMV
+# include "libmv-capi.h"
+#endif
+
+#ifdef WITH_CYCLES_LOGGING
+# include "CCL_api.h"
+#endif
+
Global G;
UserDef U;
@@ -150,6 +161,47 @@ void BKE_blender_globals_init(void)
#endif
}
+void G_debug_enable(int flags)
+{
+ if (flags & G_DEBUG) {
+ MEM_set_memory_debug();
+#ifdef DEBUG
+ BLI_mempool_set_memory_debug();
+#endif
+ }
+
+#ifdef WITH_LIBMV
+ if (flags & G_DEBUG_LIBMV) {
+ libmv_startDebugLogging();
+ }
+#endif
+#ifdef WITH_CYCLES_LOGGING
+ if (flags & G_DEBUG_CYCLES) {
+ CCL_start_debug_logging();
+ }
+#endif
+ if (flags & G_DEBUG_FPE) {
+ main_signal_setup_fpe();
+ }
+
+ if (flags & G_DEBUG_MEMORY) {
+ MEM_set_memory_debug();
+ }
+ G.debug |= flags;
+}
+
+void G_verbose_set(int level)
+{
+#ifdef WITH_LIBMV
+ libmv_setLoggingVerbosity(level);
+#elif defined(WITH_CYCLES_LOGGING)
+ CCL_logging_verbosity_set(level);
+#else
+ (void)level;
+#endif
+ G.log.level = level;
+}
+
void BKE_blender_globals_clear(void)
{
BKE_main_free(G_MAIN); /* free all lib data */
diff --git a/source/blender/editors/space_userpref/CMakeLists.txt
b/source/blender/editors/space_userpref/CMakeLists.txt
index 61fe2bff63f..59a73913e12 100644
--- a/source/blender/editors/space_userpref/CMakeLists.txt
+++ b/source/blender/editors/space_userpref/CMakeLists.txt
@@ -23,6 +23,7 @@ set(INC
../../makesrna
../../windowmanager
../../../../intern/guardedalloc
+ ../../../../intern/clog
)
set(INC_SYS
diff --git a/source/blender/editors/space_userpref/userpref_intern.h
b/source/blender/editors/space_userpref/userpref_intern.h
index 506e93ae7ac..fc6e4bf6bc2 100644
--- a/source/blender/editors/space_userpref/userpref_intern.h
+++ b/source/blender/editors/space_userpref/userpref_intern.h
@@ -23,4 +23,8 @@
#pragma once
+void USERPREF_save_global_log_settings(void);
+void USERPREF_restore_global_log_settings(bool use_command_line_mask);
+void USERPREF_restore_factory_log_settings(void);
+
/* internal exports only */
diff --git a/source/blender/editors/space_userpref/userpref_ops.c
b/source/blender/editors/space_userpref/userpref_ops.c
index d823530fd89..0b2bda1abd3 100644
--- a/source/blender/editors/space_userpref/userpref_ops.c
+++ b/source/blender/editors/space_userpref/userpref_ops.c
@@ -21,6 +21,7 @@
* \ingroup spuserpref
*/
+#include <BLI_string.h>
#include <string.h>
#include "DNA_screen_types.h"
@@ -44,7 +45,9 @@
#include "WM_types.h"
#include "ED_userpref.h"
+#include "userpref_intern.h"
+#include "CLG_log.h"
#include "MEM_guardedalloc.h"
/* -------------------------------------------------------------------- */
@@ -131,6 +134,112 @@ static void
PREFERENCES_OT_autoexec_path_remove(wmOperatorType *ot)
RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "", 0, 1000);
}
+/** override preferences with globals */
+void USERPREF_save_global_log_settings()
+{
+ CLG_type_filter_get(U.log_type_filter, 256);
+ U.log_severity = CLG_severity_level_get();
+ U.log_use_basename = CLG_output_use_basename_get();
+ U.log_use_timestamp = CLG_output_use_timestamp_get();
+ U.log_use_stdout = CLG_use_stdout_get();
+ U.log_always_show_warnings = CLG_always_show_warnings_get();
+ BLI_strncpy(U.log_output_file_path, CLG_file_output_path_get(), 256);
+ U.debug_flags = G.debug;
+ U.debug_value = G.debug_value;
+ U.verbose = G.log.level;
+ U.runtime.is_dirty = true;
+}
+
+/** override globals with preferences
+ * :param UserDef_RuntimeCommandLineArgs mask
+ */
+void USERPREF_restore_global_log_settings(bool use_command_line_mask)
+{
+ int mask = use_command_line_mask ? U.runtime.use_settings_from_command_line
: 0;
+ if (!(mask & ARGS_LOG_TYPE)) {
+ CLG_type_filter_set(U.log_type_filter);
+ }
+ if (!(mask & ARGS_LOG_SEVERITY)) {
+ CLG_severity_level_set(U.log_severity);
+ }
+ if (!(mask & ARGS_LOG_SHOW_BASENAME)) {
+ CLG_output_use_basename_set(U.log_use_basename);
+ }
+ if (!(mask & ARGS_LOG_SHOW_TIMESTAMP)) {
+ CLG_output_use_timestamp_set(U.log_use_timestamp);
+ }
+ if (!(mask & ARGS_LOG_FILE)) {
+ CLG_use_stdout_set(U.log_use_stdout);
+ }
+ /*
+ if (!(mask & ARGS_LOG_DISABLE_ALWAYS_SHOW_WARNINGS)) {
+ CLG_always_show_warnings_set(U.log_always_s
@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs