From 53d389f9ffc476db3532fe8e85db6f9299949826 Mon Sep 17 00:00:00 2001 From: jaap aarts Date: Mon, 30 Aug 2021 16:53:49 +0200 Subject: [PATCH 1/4] Check if gtk is initialised in get_monitors --- druid-shell/src/backend/gtk/screen.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/druid-shell/src/backend/gtk/screen.rs b/druid-shell/src/backend/gtk/screen.rs index 8745c7c1da..35125f1fce 100644 --- a/druid-shell/src/backend/gtk/screen.rs +++ b/druid-shell/src/backend/gtk/screen.rs @@ -37,6 +37,9 @@ fn translate_gdk_monitor(mon: gdk::Monitor) -> Monitor { } pub(crate) fn get_monitors() -> Vec { + if !gtk::is_initialized() { + gdk::init(); + } gdk::DisplayManager::get() .list_displays() .iter() From c2762e4ab47eb23d2e04bb3a21943e28e1682c91 Mon Sep 17 00:00:00 2001 From: jaap aarts Date: Mon, 30 Aug 2021 16:59:03 +0200 Subject: [PATCH 2/4] Add to changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ff86f4650..076357c800 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -98,6 +98,7 @@ You can find its changes [documented below](#070---2021-01-01). - X11 backend now uses the platform locale ([#1756] by [@Maan2003]) - `Either` and `Tab` widgets were still propagating events to hidden widgets ([#1860] by [@lisael]) - RichText: Invalidate layout on Env change ([#1907] by [@Maan2003]) +- GTK: fix using gdk before initialising it ([#1946] by [@JAicewizard]) ### Visual @@ -782,6 +783,7 @@ Last release without a changelog :( [#1885]: https://github.com/linebender/druid/pull/1885 [#1886]: https://github.com/linebender/druid/pull/1886 [#1907]: https://github.com/linebender/druid/pull/1907 +[#1947]: https://github.com/linebender/druid/pull/1947 [Unreleased]: https://github.com/linebender/druid/compare/v0.7.0...master [0.7.0]: https://github.com/linebender/druid/compare/v0.6.0...v0.7.0 From 761411be47001dc21b99b5e41907d4e5b77b8695 Mon Sep 17 00:00:00 2001 From: jaap aarts Date: Tue, 7 Sep 2021 18:08:04 +0200 Subject: [PATCH 3/4] fix bad code --- druid-shell/src/backend/gtk/screen.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/druid-shell/src/backend/gtk/screen.rs b/druid-shell/src/backend/gtk/screen.rs index 97a5a7744e..9f599ff5fe 100644 --- a/druid-shell/src/backend/gtk/screen.rs +++ b/druid-shell/src/backend/gtk/screen.rs @@ -38,7 +38,7 @@ fn translate_gdk_monitor(mon: gtk::gdk::Monitor) -> Monitor { pub(crate) fn get_monitors() -> Vec { if !gtk::is_initialized() { - gdk::init(); + gtk::gdk::init(); } DisplayManager::get() .list_displays() From 453d9e204238c3dd7cd1b4c873530c7a289977d6 Mon Sep 17 00:00:00 2001 From: jaap aarts Date: Sun, 12 Sep 2021 11:51:32 +0200 Subject: [PATCH 4/4] use gtk::init and log errors --- druid-shell/src/backend/gtk/screen.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/druid-shell/src/backend/gtk/screen.rs b/druid-shell/src/backend/gtk/screen.rs index 9f599ff5fe..25391de924 100644 --- a/druid-shell/src/backend/gtk/screen.rs +++ b/druid-shell/src/backend/gtk/screen.rs @@ -38,7 +38,10 @@ fn translate_gdk_monitor(mon: gtk::gdk::Monitor) -> Monitor { pub(crate) fn get_monitors() -> Vec { if !gtk::is_initialized() { - gtk::gdk::init(); + if let Err(err) = gtk::init() { + tracing::error!("{}", err.message); + return Vec::new(); + } } DisplayManager::get() .list_displays()