diff --git a/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/BoxStream.h b/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/BoxStream.h index 9d17ba23648..5a9783c80d8 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/BoxStream.h +++ b/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/BoxStream.h @@ -6,24 +6,25 @@ #pragma once +#include #include namespace Gfx::ISOBMFF { class BoxStream final : public Stream { public: - explicit BoxStream(Stream& stream, size_t size) - : m_stream(stream) + explicit BoxStream(MaybeOwned stream, size_t size) + : m_stream(move(stream)) , m_data_left(size) { } - virtual bool is_eof() const override { return m_stream.is_eof() || remaining() == 0; } - virtual bool is_open() const override { return m_stream.is_open(); } - virtual void close() override { m_stream.close(); } + virtual bool is_eof() const override { return m_stream->is_eof() || remaining() == 0; } + virtual bool is_open() const override { return m_stream->is_open(); } + virtual void close() override { m_stream->close(); } virtual ErrorOr read_some(Bytes bytes) override { - auto read_bytes = TRY(m_stream.read_some(bytes)); + auto read_bytes = TRY(m_stream->read_some(bytes)); m_data_left -= min(read_bytes.size(), m_data_left); return read_bytes; } @@ -41,7 +42,7 @@ public: } private: - Stream& m_stream; + MaybeOwned m_stream; size_t m_data_left; }; diff --git a/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/Reader.cpp b/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/Reader.cpp index 11188688b66..a91d0822d5e 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/Reader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/Reader.cpp @@ -11,16 +11,16 @@ namespace Gfx::ISOBMFF { ErrorOr Reader::create(MaybeOwned stream) { size_t size = TRY(stream->size()); - return Reader(move(stream), size); + return Reader(make(move(stream), size)); } ErrorOr Reader::read_entire_file() { BoxList top_level_boxes; - while (!m_stream->is_eof()) { - auto box_header = TRY(read_box_header(m_box_stream)); - BoxStream box_stream { m_box_stream, static_cast(box_header.contents_size) }; + while (!m_box_stream->is_eof()) { + auto box_header = TRY(read_box_header(*m_box_stream)); + BoxStream box_stream { MaybeOwned { *m_box_stream }, static_cast(box_header.contents_size) }; switch (box_header.type) { case BoxType::FileTypeBox: diff --git a/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/Reader.h b/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/Reader.h index 68a3cd5c14a..00139c3ee62 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/Reader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/ISOBMFF/Reader.h @@ -20,14 +20,12 @@ public: ErrorOr read_entire_file(); private: - Reader(MaybeOwned stream, size_t size) - : m_stream(move(stream)) - , m_box_stream(*m_stream, size) + Reader(MaybeOwned stream) + : m_box_stream(move(stream)) { } - MaybeOwned m_stream; - BoxStream m_box_stream; + MaybeOwned m_box_stream; }; }