-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable creating "virtual" windows without corresponding OS window #6256
Closed
Closed
Changes from 1 commit
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
7a28eb9
Enable creating "virtual" windows without corresponding OS window
MDeiml 006dd27
Introduce `AbstractWindowHandle` enum
MDeiml 5c03cb9
Add example
MDeiml ac6fa7d
Fix doctest
MDeiml 4290e3b
Ensure safety of creating windows
MDeiml File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Introduce
AbstractWindowHandle
enum
- Loading branch information
commit 006dd273c5a56782a788b45e8fc199b3d15fe01e
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs a SAFETY comment :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, that's true. The file was missing the SAFETY comment before the change, but I'll add one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually looking at it now it seems to me that this was never safe. In particular this comment
bevy/crates/bevy_window/src/raw_handle.rs
Lines 36 to 40 in 02fbf16
is wrong. The raw window and display handle are directly exposed as the attributes are
pub
and there arepub
methods to access them.Even without this problem, for my particular case to ensure safety, all windows in
Windows
have to be created through the main thread, but new windows can be created and added from any thread using Windows::add.Same goes for
bevy/crates/bevy_render/src/view/window.rs
Lines 186 to 187 in 02fbf16
If I understand this situation correctly this could be made safe by:
RawHandleWrapper
private and removing the methods to access themWindow::add
unsafe and specifying that it has to be called from the main thread. Maybe add a comment that it is better to useCreateWindow
anyways.prepare_windows
an exclusive system which if I remember correctly would make it run on the main threadThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ideally we would add a
NonSend
system parameter here, which forces main thread access without blocking parallelism fully.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm, it seems like changing the methods of
Windows
to ensure safety is unpractical, as there are also methods which expose mutable references, which also would need to be unsafe. So I'll make creatingRawHandleWrapper
unsafe instead.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The marker was already there, I just missed it.