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

Reply via email to