fix(font-atlas): wait for the GPU before the image goes; DOM stubs for SetAppId and SetTextInput
~FontAtlas destroyed the image while frames that sample it could still run (HelloUI declares the atlas after the window, so it goes first); it waits on the queue now, as the descriptor heap does. The DOM build got the two new Window methods as no-ops, like the other backend-specific ones.
This commit is contained in:
parent
1498a5bf4b
commit
1c30b1bbf7
2 changed files with 10 additions and 4 deletions
|
|
@ -1640,6 +1640,10 @@ void Window::SetTitle(const std::string_view title) {
|
||||||
Crafter::DomEnv::domSetTitle(title.data(), static_cast<std::int32_t>(title.size()));
|
Crafter::DomEnv::domSetTitle(title.data(), static_cast<std::int32_t>(title.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Window::SetAppId(const std::string_view) {}
|
||||||
|
|
||||||
|
void Window::SetTextInput(bool, std::int32_t, std::int32_t, std::int32_t, std::int32_t, TextInputPurpose) {}
|
||||||
|
|
||||||
void Window::Resize(std::uint32_t newWidth, std::uint32_t newHeight) {
|
void Window::Resize(std::uint32_t newWidth, std::uint32_t newHeight) {
|
||||||
if (newWidth == 0 || newHeight == 0) return;
|
if (newWidth == 0 || newHeight == 0) return;
|
||||||
if (newWidth == width && newHeight == height) return;
|
if (newWidth == width && newHeight == height) return;
|
||||||
|
|
|
||||||
|
|
@ -100,11 +100,13 @@ export namespace Crafter {
|
||||||
FontAtlas() = default;
|
FontAtlas() = default;
|
||||||
FontAtlas(const FontAtlas&) = delete;
|
FontAtlas(const FontAtlas&) = delete;
|
||||||
FontAtlas& operator=(const FontAtlas&) = delete;
|
FontAtlas& operator=(const FontAtlas&) = delete;
|
||||||
// The image goes with the atlas. The owner waits for the GPU first
|
// The image goes with the atlas, once the GPU is done with it; in
|
||||||
// and, in sets mode, destroys the heap holding the image's view before
|
// sets mode the owner destroys the heap holding the image's view
|
||||||
// the atlas.
|
// before the atlas.
|
||||||
~FontAtlas() {
|
~FontAtlas() {
|
||||||
if (image.image != VK_NULL_HANDLE) image.Destroy();
|
if (image.image == VK_NULL_HANDLE) return;
|
||||||
|
if (Device::queue != VK_NULL_HANDLE) vkQueueWaitIdle(Device::queue);
|
||||||
|
image.Destroy();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue