main: Move away debug flag management to util.c

The rest of debug flag details are in util.c and util.h, make things
less scattered by moving the rest to util.c too.

While at it, put the coredump:ability setting needed for being suid
there too, so we have a common place for initializing "debug utils".

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1833>
This commit is contained in:
Jonas Ådahl 2021-02-24 16:27:44 +01:00 committed by Marge Bot
parent 62ef293cdb
commit 9cd99ee7ac
3 changed files with 58 additions and 48 deletions

View File

@ -71,10 +71,6 @@
#include <systemd/sd-login.h> #include <systemd/sd-login.h>
#endif /* HAVE_WAYLAND && HAVE_NATIVE_BACKEND */ #endif /* HAVE_WAYLAND && HAVE_NATIVE_BACKEND */
#ifdef HAVE_SYS_PRCTL
#include <sys/prctl.h>
#endif
#include "backends/meta-backend-private.h" #include "backends/meta-backend-private.h"
#include "backends/meta-monitor-manager-private.h" #include "backends/meta-monitor-manager-private.h"
#include "backends/meta-virtual-monitor.h" #include "backends/meta-virtual-monitor.h"
@ -101,32 +97,6 @@
#include "backends/native/meta-backend-native.h" #include "backends/native/meta-backend-native.h"
#endif #endif
static const GDebugKey meta_debug_keys[] = {
{ "focus", META_DEBUG_FOCUS },
{ "workarea", META_DEBUG_WORKAREA },
{ "stack", META_DEBUG_STACK },
{ "sm", META_DEBUG_SM },
{ "events", META_DEBUG_EVENTS },
{ "window-state", META_DEBUG_WINDOW_STATE },
{ "window-ops", META_DEBUG_WINDOW_OPS },
{ "geometry", META_DEBUG_GEOMETRY },
{ "placement", META_DEBUG_PLACEMENT },
{ "ping", META_DEBUG_PING },
{ "keybindings", META_DEBUG_KEYBINDINGS },
{ "sync", META_DEBUG_SYNC },
{ "startup", META_DEBUG_STARTUP },
{ "prefs", META_DEBUG_PREFS },
{ "groups", META_DEBUG_GROUPS },
{ "resizing", META_DEBUG_RESIZING },
{ "shapes", META_DEBUG_SHAPES },
{ "edge-resistance", META_DEBUG_EDGE_RESISTANCE },
{ "dbus", META_DEBUG_DBUS },
{ "input", META_DEBUG_INPUT },
{ "wayland", META_DEBUG_WAYLAND },
{ "kms", META_DEBUG_KMS },
{ "screen-cast", META_DEBUG_SCREEN_CAST },
{ "remote-desktop", META_DEBUG_REMOTE_DESKTOP },
};
/* /*
* The exit code we'll return to our parent process when we eventually die. * The exit code we'll return to our parent process when we eventually die.
@ -762,7 +732,6 @@ meta_init (void)
{ {
struct sigaction act; struct sigaction act;
sigset_t empty_mask; sigset_t empty_mask;
const char *debug_env;
MetaCompositorType compositor_type; MetaCompositorType compositor_type;
GType backend_gtype; GType backend_gtype;
unsigned int n_properties; unsigned int n_properties;
@ -770,10 +739,6 @@ meta_init (void)
GValue *prop_values; GValue *prop_values;
int i; int i;
#ifdef HAVE_SYS_PRCTL
prctl (PR_SET_DUMPABLE, 1);
#endif
sigemptyset (&empty_mask); sigemptyset (&empty_mask);
act.sa_handler = SIG_IGN; act.sa_handler = SIG_IGN;
act.sa_mask = empty_mask; act.sa_mask = empty_mask;
@ -789,19 +754,7 @@ meta_init (void)
g_unix_signal_add (SIGTERM, on_sigterm, NULL); g_unix_signal_add (SIGTERM, on_sigterm, NULL);
if (g_getenv ("MUTTER_VERBOSE")) meta_init_debug_utils ();
meta_set_verbose (TRUE);
debug_env = g_getenv ("MUTTER_DEBUG");
if (debug_env)
{
MetaDebugTopic topics;
topics = g_parse_debug_string (debug_env,
meta_debug_keys,
G_N_ELEMENTS (meta_debug_keys));
meta_add_verbose_topic (topics);
}
if (_compositor_configuration_overridden) if (_compositor_configuration_overridden)
{ {

View File

@ -43,4 +43,6 @@ void meta_set_is_wayland_compositor (gboolean setting);
char * meta_generate_random_id (GRand *rand, char * meta_generate_random_id (GRand *rand,
int length); int length);
void meta_init_debug_utils (void);
#endif #endif

View File

@ -36,11 +36,42 @@
#include <X11/Xlib.h> /* must explicitly be included for Solaris; #326746 */ #include <X11/Xlib.h> /* must explicitly be included for Solaris; #326746 */
#include <X11/Xutil.h> /* Just for the definition of the various gravities */ #include <X11/Xutil.h> /* Just for the definition of the various gravities */
#ifdef HAVE_SYS_PRCTL
#include <sys/prctl.h>
#endif
#include "clutter/clutter.h" #include "clutter/clutter.h"
#include "cogl/cogl.h" #include "cogl/cogl.h"
#include "meta/common.h" #include "meta/common.h"
#include "meta/main.h" #include "meta/main.h"
static const GDebugKey meta_debug_keys[] = {
{ "focus", META_DEBUG_FOCUS },
{ "workarea", META_DEBUG_WORKAREA },
{ "stack", META_DEBUG_STACK },
{ "sm", META_DEBUG_SM },
{ "events", META_DEBUG_EVENTS },
{ "window-state", META_DEBUG_WINDOW_STATE },
{ "window-ops", META_DEBUG_WINDOW_OPS },
{ "geometry", META_DEBUG_GEOMETRY },
{ "placement", META_DEBUG_PLACEMENT },
{ "ping", META_DEBUG_PING },
{ "keybindings", META_DEBUG_KEYBINDINGS },
{ "sync", META_DEBUG_SYNC },
{ "startup", META_DEBUG_STARTUP },
{ "prefs", META_DEBUG_PREFS },
{ "groups", META_DEBUG_GROUPS },
{ "resizing", META_DEBUG_RESIZING },
{ "shapes", META_DEBUG_SHAPES },
{ "edge-resistance", META_DEBUG_EDGE_RESISTANCE },
{ "dbus", META_DEBUG_DBUS },
{ "input", META_DEBUG_INPUT },
{ "wayland", META_DEBUG_WAYLAND },
{ "kms", META_DEBUG_KMS },
{ "screen-cast", META_DEBUG_SCREEN_CAST },
{ "remote-desktop", META_DEBUG_REMOTE_DESKTOP },
};
#ifdef WITH_VERBOSE_MODE #ifdef WITH_VERBOSE_MODE
static void static void
meta_topic_real_valist (MetaDebugTopic topic, meta_topic_real_valist (MetaDebugTopic topic,
@ -163,6 +194,30 @@ meta_remove_verbose_topic (MetaDebugTopic topic)
verbose_topics &= ~topic; verbose_topics &= ~topic;
} }
void
meta_init_debug_utils (void)
{
const char *debug_env;
#ifdef HAVE_SYS_PRCTL
prctl (PR_SET_DUMPABLE, 1);
#endif
if (g_getenv ("MUTTER_VERBOSE"))
meta_set_verbose (TRUE);
debug_env = g_getenv ("MUTTER_DEBUG");
if (debug_env)
{
MetaDebugTopic topics;
topics = g_parse_debug_string (debug_env,
meta_debug_keys,
G_N_ELEMENTS (meta_debug_keys));
meta_add_verbose_topic (topics);
}
}
gboolean gboolean
meta_get_replace_current_wm (void) meta_get_replace_current_wm (void)
{ {