@@ -56,6 +56,7 @@ public:
|
|||||||
auto set_window_bounds(std::uint64_t id, luma::rect bounds) -> std::expected<void, modulus::error>;
|
auto set_window_bounds(std::uint64_t id, luma::rect bounds) -> std::expected<void, modulus::error>;
|
||||||
auto set_window_visible(std::uint64_t id, std::bool_t visible) -> std::expected<void, modulus::error>;
|
auto set_window_visible(std::uint64_t id, std::bool_t visible) -> std::expected<void, modulus::error>;
|
||||||
auto load_texture(std::string path) -> std::expected<std::shared_ptr<luma::texture>, modulus::error>;
|
auto load_texture(std::string path) -> std::expected<std::shared_ptr<luma::texture>, modulus::error>;
|
||||||
|
auto load_texture_uncached(std::string path) -> std::expected<std::shared_ptr<luma::texture>, modulus::error>;
|
||||||
auto request_layout() -> std::expected<void, modulus::error>;
|
auto request_layout() -> std::expected<void, modulus::error>;
|
||||||
auto set_root(std::expected<std::unique_ptr<luma::control>, modulus::error> root) -> std::expected<void, modulus::error>;
|
auto set_root(std::expected<std::unique_ptr<luma::control>, modulus::error> root) -> std::expected<void, modulus::error>;
|
||||||
auto set_root(std::unique_ptr<luma::control> root) -> std::expected<void, modulus::error>;
|
auto set_root(std::unique_ptr<luma::control> root) -> std::expected<void, modulus::error>;
|
||||||
|
|||||||
@@ -985,6 +985,18 @@ auto luma::application::load_texture(std::string path) -> std::expected<std::sha
|
|||||||
return core->assets->texture(path); }, false);
|
return core->assets->texture(path); }, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto luma::application::load_texture_uncached(std::string path) -> std::expected<std::shared_ptr<luma::texture>, modulus::error> {
|
||||||
|
if (path.empty()) {
|
||||||
|
return luma::detail::fail<std::shared_ptr<luma::texture>>(luma::detail::error_invalid_argument, "texture path must not be empty");
|
||||||
|
}
|
||||||
|
auto core = core_snapshot();
|
||||||
|
return dispatch_to_ui<std::shared_ptr<luma::texture>>(core, [core, path = std::move(path)] {
|
||||||
|
if (!core->renderer_active.load(std::memory_order_acquire) || !core->resources) {
|
||||||
|
return unavailable<std::shared_ptr<luma::texture>>("texture loading requires an active renderer");
|
||||||
|
}
|
||||||
|
return core->resources->load_texture(path); }, false);
|
||||||
|
}
|
||||||
|
|
||||||
auto luma::application::request_layout() -> std::expected<void, modulus::error> {
|
auto luma::application::request_layout() -> std::expected<void, modulus::error> {
|
||||||
auto core = core_snapshot();
|
auto core = core_snapshot();
|
||||||
return dispatch_to_ui<void>(core, [core] {
|
return dispatch_to_ui<void>(core, [core] {
|
||||||
|
|||||||
@@ -919,6 +919,12 @@ BOOST_AUTO_TEST_CASE(application_rejects_texture_load_without_renderer) {
|
|||||||
auto texture = app.load_texture("missing.png");
|
auto texture = app.load_texture("missing.png");
|
||||||
BOOST_REQUIRE(!texture);
|
BOOST_REQUIRE(!texture);
|
||||||
BOOST_TEST(texture.error().code() == 3);
|
BOOST_TEST(texture.error().code() == 3);
|
||||||
|
auto uncached = app.load_texture_uncached("missing.png");
|
||||||
|
BOOST_REQUIRE(!uncached);
|
||||||
|
BOOST_TEST(uncached.error().code() == 3);
|
||||||
|
auto empty = app.load_texture_uncached("");
|
||||||
|
BOOST_REQUIRE(!empty);
|
||||||
|
BOOST_TEST(empty.error().code() == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(application_show_toast_requires_root) {
|
BOOST_AUTO_TEST_CASE(application_show_toast_requires_root) {
|
||||||
|
|||||||
Reference in New Issue
Block a user