Prevent repeated checks for the desktop environment.

It is sufficient to check the desktop environment only once.
Also don't shadow 'stdin', 'stdout' and 'stderr'.
This commit is contained in:
Ori Bernstein 2007-12-27 02:42:11 +01:00 committed by Christian Dywan
parent 39dedae0d1
commit cd8b1e5b22

View file

@ -103,21 +103,28 @@ void sokoke_widget_popup(GtkWidget* widget, GtkMenu* menu
typedef enum typedef enum
{ {
SOKOKE_DESKTOP_UNKNOWN, SOKOKE_DESKTOP_UNTESTED,
SOKOKE_DESKTOP_XFCE SOKOKE_DESKTOP_XFCE,
SOKOKE_DESKTOP_UNKNOWN
} SokokeDesktop; } SokokeDesktop;
static SokokeDesktop sokoke_get_desktop(void) static SokokeDesktop sokoke_get_desktop(void)
{
static SokokeDesktop desktop = SOKOKE_DESKTOP_UNTESTED;
if(G_UNLIKELY(desktop == SOKOKE_DESKTOP_UNTESTED))
{ {
// Are we running in Xfce? // Are we running in Xfce?
gint result; gchar* stdout; gchar* stderr; gint result; gchar* out; gchar* err;
gboolean success = g_spawn_command_line_sync( gboolean success = g_spawn_command_line_sync(
"xprop -root _DT_SAVE_MODE | grep -q xfce4" "xprop -root _DT_SAVE_MODE | grep -q xfce4"
, &stdout, &stderr, &result, NULL); , &out, &err, &result, NULL);
if(success && !result) if(success && !result)
return SOKOKE_DESKTOP_XFCE; desktop = SOKOKE_DESKTOP_XFCE;
else
desktop = SOKOKE_DESKTOP_UNKNOWN;
}
return SOKOKE_DESKTOP_UNKNOWN; return desktop;
} }
gpointer sokoke_xfce_header_new(const gchar* icon, const gchar* title) gpointer sokoke_xfce_header_new(const gchar* icon, const gchar* title)