[gnome-builder/wip/gtk4-port] libide/foundry: apply debugging color scheme to runner



commit 2618adc7ff98805fe5a36cd379f178619f206858
Author: Christian Hergert <chergert redhat com>
Date:   Fri May 27 11:59:00 2022 -0700

    libide/foundry: apply debugging color scheme to runner
    
    Related #935

 src/libide/foundry/ide-run-manager.c | 50 +++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)
---
diff --git a/src/libide/foundry/ide-run-manager.c b/src/libide/foundry/ide-run-manager.c
index 7793a9615..587d96dc1 100644
--- a/src/libide/foundry/ide-run-manager.c
+++ b/src/libide/foundry/ide-run-manager.c
@@ -551,6 +551,49 @@ copy_builtin_envvars (IdeEnvironment *environment)
     }
 }
 
+static void
+apply_color_scheme (IdeEnvironment *env,
+                    const char     *color_scheme)
+{
+  IDE_ENTRY;
+
+  g_assert (IDE_IS_ENVIRONMENT (env));
+  g_assert (color_scheme != NULL);
+
+  g_debug ("Applying color-scheme \"%s\"", color_scheme);
+
+  if (ide_str_equal0 (color_scheme, "follow"))
+    {
+      /* Clear any overrides that somehow leaked into our process */
+      ide_environment_setenv (env, "ADW_DBG_FORCE_LIGHT", NULL);
+      ide_environment_setenv (env, "ADW_DBG_FORCE_DARK", NULL);
+    }
+  else if (ide_str_equal0 (color_scheme, "force-light"))
+    {
+      ide_environment_setenv (env, "ADW_DBG_FORCE_LIGHT", "1");
+      ide_environment_setenv (env, "ADW_DBG_FORCE_DARK", NULL);
+    }
+  else if (ide_str_equal0 (color_scheme, "force-dark"))
+    {
+      ide_environment_setenv (env, "ADW_DBG_FORCE_LIGHT", NULL);
+      ide_environment_setenv (env, "ADW_DBG_FORCE_DARK", "1");
+    }
+  else
+    {
+      g_warn_if_reached ();
+    }
+
+  IDE_EXIT;
+}
+
+static inline const char *
+get_action_state_string (IdeRunManager *self,
+                         const char    *action_name)
+{
+  GVariant *state = ide_run_manager_get_action_state (self, action_name);
+  return g_variant_get_string (state, NULL);
+}
+
 static void
 create_runner_cb (GObject      *object,
                   GAsyncResult *result,
@@ -570,7 +613,8 @@ create_runner_cb (GObject      *object,
   IdeRuntime *runtime;
   g_autoptr(IdeRunner) runner = NULL;
   GCancellable *cancellable;
-  const gchar *run_opts;
+  const char *color_scheme;
+  const char *run_opts;
 
   IDE_ENTRY;
 
@@ -638,6 +682,10 @@ create_runner_cb (GObject      *object,
   copy_builtin_envvars (environment);
   ide_environment_copy_into (ide_config_get_runtime_environment (config), environment, TRUE);
 
+  /* Add debugging overrides */
+  color_scheme = get_action_state_string (self, "color-scheme");
+  apply_color_scheme (environment, color_scheme);
+
   g_signal_emit (self, signals [RUN], 0, runner);
 
   if (ide_runner_get_failed (runner))


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]