display: Make meta_display_open() report errors

Instead of just exit():ing, report the error, so the caller can decide
how to deal with the error.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1833>
This commit is contained in:
Jonas Ådahl 2021-02-25 21:03:54 +01:00 committed by Marge Bot
parent c9992a2953
commit 89053cc6f7
3 changed files with 17 additions and 10 deletions

View File

@ -260,7 +260,7 @@ struct _MetaDisplayClass
(time2) != 0) \ (time2) != 0) \
) )
gboolean meta_display_open (void); gboolean meta_display_open (GError **error);
void meta_display_manage_all_xwindows (MetaDisplay *display); void meta_display_manage_all_xwindows (MetaDisplay *display);
void meta_display_unmanage_windows (MetaDisplay *display, void meta_display_unmanage_windows (MetaDisplay *display,

View File

@ -798,9 +798,8 @@ meta_display_shutdown_x11 (MetaDisplay *display)
* has a window manager. * has a window manager.
*/ */
gboolean gboolean
meta_display_open (void) meta_display_open (GError **error)
{ {
GError *error = NULL;
MetaDisplay *display; MetaDisplay *display;
int i; int i;
guint32 timestamp; guint32 timestamp;
@ -902,8 +901,11 @@ meta_display_open (void)
else else
#endif #endif
{ {
if (!meta_display_init_x11_display (display, &error)) if (!meta_display_init_x11_display (display, error))
g_error ("Failed to init X11 display: %s", error->message); {
g_object_unref (display);
return FALSE;
}
timestamp = display->x11_display->timestamp; timestamp = display->x11_display->timestamp;
} }
@ -917,10 +919,10 @@ meta_display_open (void)
display->x11_display->atom__NET_ACTIVE_WINDOW, display->x11_display->atom__NET_ACTIVE_WINDOW,
&old_active_xwindow); &old_active_xwindow);
if (!meta_compositor_do_manage (display->compositor, &error)) if (!meta_compositor_do_manage (display->compositor, error))
{ {
g_error ("Compositor failed to manage display: %s", g_object_unref (display);
error->message); return FALSE;
} }
if (display->x11_display) if (display->x11_display)

View File

@ -850,6 +850,8 @@ meta_register_with_session (void)
void void
meta_start (void) meta_start (void)
{ {
g_autoptr (GError) error = NULL;
meta_prefs_init (); meta_prefs_init ();
#ifdef HAVE_WAYLAND #ifdef HAVE_WAYLAND
@ -857,8 +859,11 @@ meta_start (void)
meta_backend_init_wayland (meta_get_backend ()); meta_backend_init_wayland (meta_get_backend ());
#endif #endif
if (!meta_display_open ()) if (!meta_display_open (&error))
meta_exit (META_EXIT_ERROR); {
g_warning ("Failed to open display: %s", error->message);
meta_exit (META_EXIT_ERROR);
}
} }
void void