diff options
author | Andreas Kling <kling@serenityos.org> | 2021-07-24 22:49:48 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-07-25 14:39:25 +0200 |
commit | 143443e0b6412cd7f5a702e5b190bea60da733fe (patch) | |
tree | 5d1490936ab7a056db804c4ba5ffd22558afa429 /Userland/Libraries/LibGfx/ImageDecoder.h | |
parent | 24b5295b3038dc0b7a49367476b5b8594268163d (diff) | |
download | serenity-143443e0b6412cd7f5a702e5b190bea60da733fe.zip |
LibGfx: Make Gfx::Bitmap::set_nonvolatile() report allocation failure
Making a bitmap non-volatile after being volatile may fail to allocate
physical pages after the kernel stole the old pages in a purge.
This is different from the pages being purged, but reallocated. In that
case, they are simply replaced with zero-fill-on-demand pages as if
they were freshly allocated.
Diffstat (limited to 'Userland/Libraries/LibGfx/ImageDecoder.h')
-rw-r--r-- | Userland/Libraries/LibGfx/ImageDecoder.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Userland/Libraries/LibGfx/ImageDecoder.h b/Userland/Libraries/LibGfx/ImageDecoder.h index 0855673871..a22dc3b584 100644 --- a/Userland/Libraries/LibGfx/ImageDecoder.h +++ b/Userland/Libraries/LibGfx/ImageDecoder.h @@ -33,7 +33,7 @@ public: virtual RefPtr<Gfx::Bitmap> bitmap() = 0; virtual void set_volatile() = 0; - [[nodiscard]] virtual bool set_nonvolatile() = 0; + [[nodiscard]] virtual bool set_nonvolatile(bool& was_purged) = 0; virtual bool sniff() = 0; @@ -63,7 +63,7 @@ public: if (m_plugin) m_plugin->set_volatile(); } - [[nodiscard]] bool set_nonvolatile() { return m_plugin ? m_plugin->set_nonvolatile() : false; } + [[nodiscard]] bool set_nonvolatile(bool& was_purged) { return m_plugin ? m_plugin->set_nonvolatile(was_purged) : false; } bool sniff() const { return m_plugin ? m_plugin->sniff() : false; } bool is_animated() const { return m_plugin ? m_plugin->is_animated() : false; } size_t loop_count() const { return m_plugin ? m_plugin->loop_count() : 0; } |