[gimp] app: test for gdb and lldb existence in Preferences with...
- From: Jehan Pagès <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: test for gdb and lldb existence in Preferences with...
- Date: Wed, 14 Feb 2018 15:21:01 +0000 (UTC)
commit 18a5e41e8e97a0187ba76998b24f23237568fbe4
Author: Jehan <jehan girinstud io>
Date: Wed Feb 14 16:13:20 2018 +0100
app: test for gdb and lldb existence in Preferences with...
... g_find_program_in_path() instead of a test run.
I knew there was a `which` equivalency in glib but could no find it
anymore. I finally found it thanks to a comment by Rishi. :-)
app/dialogs/preferences-dialog.c | 106 +++++---------------------------------
1 files changed, 14 insertions(+), 92 deletions(-)
---
diff --git a/app/dialogs/preferences-dialog.c b/app/dialogs/preferences-dialog.c
index 690b973..e4a55aa 100644
--- a/app/dialogs/preferences-dialog.c
+++ b/app/dialogs/preferences-dialog.c
@@ -134,18 +134,6 @@ static void prefs_help_language_change_callback (GtkComboBox *combo,
static void prefs_help_language_change_callback2 (GtkComboBox *combo,
GtkContainer *box);
-#ifndef HAVE_EXECINFO_H
-static void prefs_sensitive_debug_on_success (GPid pid,
- gint status,
- GtkWidget *widget);
-static void prefs_notify_sensitive_debug (GtkWidget *button,
- GParamSpec *pspec,
- GtkWidget *label);
-#else
-static void prefs_hide_widget_on_success (GPid pid,
- gint status,
- GtkWidget *widget);
-#endif
/* private variables */
@@ -848,39 +836,6 @@ prefs_help_language_change_callback2 (GtkComboBox *combo,
g_list_free (children);
}
-#ifndef HAVE_EXECINFO_H
-static void
-prefs_sensitive_debug_on_success (GPid pid,
- gint status,
- GtkWidget *widget)
-{
- gtk_widget_set_sensitive (widget,
- g_spawn_check_exit_status (status, NULL));
-
- g_spawn_close_pid (pid);
-}
-
-static void
-prefs_notify_sensitive_debug (GtkWidget *button,
- GParamSpec *pspec,
- GtkWidget *label)
-{
- gtk_widget_set_visible (label,
- ! gtk_widget_is_sensitive (button));
-}
-#else
-static void
-prefs_hide_widget_on_success (GPid pid,
- gint status,
- GtkWidget *widget)
-{
- gtk_widget_set_visible (widget,
- ! g_spawn_check_exit_status (status, NULL));
-
- g_spawn_close_pid (pid);
-}
-#endif
-
static void
prefs_format_string_select_callback (GtkTreeSelection *sel,
GtkEntry *entry)
@@ -1124,6 +1079,7 @@ prefs_dialog_new (Gimp *gimp,
GimpCoreConfig *core_config;
GimpDisplayConfig *display_config;
GList *manuals;
+ gchar *text;
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
g_return_val_if_fail (GIMP_IS_CONFIG (config), NULL);
@@ -1284,63 +1240,29 @@ prefs_dialog_new (Gimp *gimp,
_("Try generating debug data for bug reporting when appropriate"),
GTK_TABLE (table), 0, size_group);
-#ifndef HAVE_EXECINFO_H
- hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING,
- _("This feature requires \"gdb\" or \"lldb\" installed on your system."));
-
- gtk_widget_set_sensitive (button, FALSE);
- g_signal_connect (button, "notify::sensitive",
- G_CALLBACK (prefs_notify_sensitive_debug),
- hbox);
-#else
- hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING,
- _("This feature is more efficient with \"gdb\" or \"lldb\" installed on your
system."));
-#endif /* ! HAVE_EXECINFO_H */
- gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
-
/* Check existence of gdb or lldb to activate the preference, as a
* good hint of its prerequisite, unless backtrace() API exists, in
* which case the feature is always available.
*/
+ hbox = NULL;
+ if (! (text = g_find_program_in_path ("gdb")))
{
- gchar *args[3] = { "gdb", "--version", NULL};
- GPid pid;
-
- if (g_spawn_async (NULL, args, NULL,
- G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH |
- G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
- NULL, NULL, &pid, NULL))
+ if (! (text = g_find_program_in_path ("lldb")))
{
#ifndef HAVE_EXECINFO_H
- g_child_watch_add (pid,
- (GChildWatchFunc) prefs_sensitive_debug_on_success,
- button);
+ hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING,
+ _("This feature requires \"gdb\" or \"lldb\" installed on your
system."));
+ gtk_widget_set_sensitive (button, FALSE);
#else
- g_child_watch_add (pid,
- (GChildWatchFunc) prefs_hide_widget_on_success,
- hbox);
-#endif
- }
- else
- {
- args[0] = "lldb";
- if (g_spawn_async (NULL, args, NULL,
- G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH |
- G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
- NULL, NULL, &pid, NULL))
- {
-#ifndef HAVE_EXECINFO_H
- g_child_watch_add (pid,
- (GChildWatchFunc) prefs_sensitive_debug_on_success,
- button);
-#else
- g_child_watch_add (pid,
- (GChildWatchFunc) prefs_hide_widget_on_success,
- hbox);
-#endif
- }
+ hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING,
+ _("This feature is more efficient with \"gdb\" or \"lldb\" installed on
your system."));
+#endif /* ! HAVE_EXECINFO_H */
}
}
+ if (text)
+ g_free (text);
+ if (hbox)
+ gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
#endif /* ! G_OS_WIN32 */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]