fix(linux): call gtk_init to fix tauri-apps/tauri#11312 #1036
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes tauri-apps/tauri#11312, this issue also contains some more information regarding this change.
To summarize, on Linux a crash is seen where gtk-rs fails an assert with error message "GTK may only be used from the main thread".
In tao,
gtk::Application::new
is used which should remove the need for callinggtk::init()
. I believe there's a bug here, in either gtk-rs or gtk itself, but I've been unable to check this so far, wheregtk::init()
is not called or gtk-rs' internal INITIALIZED variable is not updated.Later on at attempted use of a GTK function we get the failed assert and crash afterwards.
Adding an explicit
gtk::init()
call here fixes this issue. Calling this function multiple times should have no negative side effects, as there is a check to skip initializing when already done.There are some unknowns:
gtk_init
through some (indirect) path?gtk::Application::new
not work as expected?Reference documentation: