mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 14:37:45 +00:00
LibGfx: Use ErrorOr<T> for Bitmap::try_load_from_file()
This was used in a lot of places, so this patch makes liberal use of ErrorOr<T>::release_value_but_fixme_should_propagate_errors().
This commit is contained in:
parent
16f064d9be
commit
235f39e449
104 changed files with 412 additions and 397 deletions
|
@ -807,14 +807,18 @@ bool Compositor::set_wallpaper_mode(const String& mode)
|
|||
|
||||
bool Compositor::set_wallpaper(const String& path, Function<void(bool)>&& callback)
|
||||
{
|
||||
Threading::BackgroundAction<RefPtr<Gfx::Bitmap>>::construct(
|
||||
Threading::BackgroundAction<ErrorOr<NonnullRefPtr<Gfx::Bitmap>>>::construct(
|
||||
[path](auto&) {
|
||||
return Gfx::Bitmap::try_load_from_file(path);
|
||||
},
|
||||
|
||||
[this, path, callback = move(callback)](RefPtr<Gfx::Bitmap> bitmap) {
|
||||
[this, path, callback = move(callback)](ErrorOr<NonnullRefPtr<Gfx::Bitmap>> bitmap) {
|
||||
if (bitmap.is_error()) {
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
m_wallpaper_path = path;
|
||||
m_wallpaper = move(bitmap);
|
||||
m_wallpaper = bitmap.release_value();
|
||||
invalidate_screen();
|
||||
callback(true);
|
||||
});
|
||||
|
|
|
@ -46,11 +46,11 @@ bool Cursor::load(const StringView& filename, const StringView& default_filename
|
|||
bool did_load_any = false;
|
||||
|
||||
auto load_bitmap = [&](const StringView& path, int scale_factor) {
|
||||
auto bitmap = Gfx::Bitmap::try_load_from_file(path, scale_factor);
|
||||
if (bitmap) {
|
||||
did_load_any = true;
|
||||
m_bitmaps.set(scale_factor, bitmap.release_nonnull());
|
||||
}
|
||||
auto bitmap_or_error = Gfx::Bitmap::try_load_from_file(path, scale_factor);
|
||||
if (bitmap_or_error.is_error())
|
||||
return;
|
||||
did_load_any = true;
|
||||
m_bitmaps.set(scale_factor, bitmap_or_error.release_value());
|
||||
};
|
||||
|
||||
Screen::for_each_scale_factor_in_use([&](int scale_factor) {
|
||||
|
|
|
@ -52,19 +52,20 @@ bool MultiScaleBitmaps::load(StringView const& filename, StringView const& defau
|
|||
m_bitmaps.clear(); // If we're reloading the bitmaps get rid of the old ones
|
||||
|
||||
auto add_bitmap = [&](StringView const& path, int scale_factor) {
|
||||
auto bitmap = Gfx::Bitmap::try_load_from_file(path, scale_factor);
|
||||
if (bitmap) {
|
||||
auto bitmap_format = bitmap->format();
|
||||
if (m_format == Gfx::BitmapFormat::Invalid || m_format == bitmap_format) {
|
||||
if (m_format == Gfx::BitmapFormat::Invalid)
|
||||
m_format = bitmap_format;
|
||||
auto bitmap_or_error = Gfx::Bitmap::try_load_from_file(path, scale_factor);
|
||||
if (bitmap_or_error.is_error())
|
||||
return;
|
||||
auto bitmap = bitmap_or_error.release_value_but_fixme_should_propagate_errors();
|
||||
auto bitmap_format = bitmap->format();
|
||||
if (m_format == Gfx::BitmapFormat::Invalid || m_format == bitmap_format) {
|
||||
if (m_format == Gfx::BitmapFormat::Invalid)
|
||||
m_format = bitmap_format;
|
||||
|
||||
did_load_any = true;
|
||||
m_bitmaps.set(scale_factor, bitmap.release_nonnull());
|
||||
} else {
|
||||
// Gracefully ignore, we have at least one bitmap already
|
||||
dbgln("Bitmap {} (scale {}) has format inconsistent with the other per-scale bitmaps", path, bitmap->scale());
|
||||
}
|
||||
did_load_any = true;
|
||||
m_bitmaps.set(scale_factor, move(bitmap));
|
||||
} else {
|
||||
// Gracefully ignore, we have at least one bitmap already
|
||||
dbgln("Bitmap {} (scale {}) has format inconsistent with the other per-scale bitmaps", path, bitmap->scale());
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -28,49 +28,49 @@ static String default_window_icon_path()
|
|||
|
||||
static Gfx::Bitmap& default_window_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file(default_window_icon_path()).leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file(default_window_icon_path()).release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& minimize_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/downward-triangle.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/downward-triangle.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& maximize_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/upward-triangle.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/upward-triangle.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& restore_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-restore.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-restore.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& close_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-close.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-close.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& pin_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-pin.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-pin.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue