Bug 1696498 - Fix startup notifications on Linux by removing excessive GDK call which triggers a bug in GTK <= 3.24.7. r=stransky

Backend procedure gdk_{x11,wayland}_display_make_default() gets called twice by XREMain::XRE_mainStartup(). First time it gets called indirectly after a call to gdk_display_open() because GDK automatically chooses first opened display as default display and calls gdk_{x11,wayland}_display_make_default() accordingly. Second time it gets called directly as a backend for an excessive call to gdk_display_manager_set_default_display(). Two consecutive calls to gdk_{x11,wayland}_display_make_default() trigger a bug in GTK <= 3.24.7 which causes content of DESKTOP_STARTUP_ID environment variable to get lost (GTK Bug 790963). In the absence of this information, startup notification can't be properly sent back to the environment when GTK later displays the main window.

Differential Revision: https://phabricator.services.mozilla.com/D108314
This commit is contained in:
Oleg Strikov 2021-03-15 11:29:26 +00:00
Родитель c19d81a665
Коммит 2196428b79
1 изменённых файлов: 0 добавлений и 2 удалений

Просмотреть файл

@ -4459,8 +4459,6 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
PR_fprintf(PR_STDERR, "Error: cannot open display: %s\n", display_name); PR_fprintf(PR_STDERR, "Error: cannot open display: %s\n", display_name);
return 1; return 1;
} }
gdk_display_manager_set_default_display(gdk_display_manager_get(),
mGdkDisplay);
if (saveDisplayArg) { if (saveDisplayArg) {
if (GdkIsX11Display(mGdkDisplay)) { if (GdkIsX11Display(mGdkDisplay)) {
SaveWordToEnv("DISPLAY", nsDependentCString(display_name)); SaveWordToEnv("DISPLAY", nsDependentCString(display_name));