diff --git a/repos/gems/include/nano3d/scene.h b/repos/gems/include/nano3d/scene.h index 0254985f8..5b0ef27dd 100644 --- a/repos/gems/include/nano3d/scene.h +++ b/repos/gems/include/nano3d/scene.h @@ -69,6 +69,8 @@ class Nano3d::Scene { enum { NUM_BUFFERS = 3 }; + Genode::Region_map &rm; + static Framebuffer::Session & _init_framebuffer(Nitpicker::Connection &nitpicker, Nitpicker::Area const size) @@ -104,7 +106,7 @@ class Nano3d::Scene return Nitpicker::Area(mode.width(), mode.height()/NUM_BUFFERS); } - Genode::Attached_dataspace ds { framebuffer.dataspace() }; + Genode::Attached_dataspace ds { rm, framebuffer.dataspace() }; PT *pixel_base(unsigned i) { @@ -134,12 +136,13 @@ class Nano3d::Scene NUM_BUFFERS*size().count()); } - Mapped_framebuffer(Nitpicker::Connection &nitpicker, Nitpicker::Area size) + Mapped_framebuffer(Nitpicker::Connection &nitpicker, Nitpicker::Area size, + Genode::Region_map &rm) : - framebuffer(_init_framebuffer(nitpicker, size)) + rm(rm), framebuffer(_init_framebuffer(nitpicker, size)) { } - } _framebuffer { _nitpicker, _size }; + } _framebuffer { _nitpicker, _size, _env.rm() }; Nitpicker::Session::View_handle _view_handle = _nitpicker.create_view(); @@ -189,7 +192,7 @@ class Nano3d::Scene Timer::Connection _timer { _env }; - Genode::Attached_dataspace _input_ds { _nitpicker.input()->dataspace() }; + Genode::Attached_dataspace _input_ds { _env.rm(), _nitpicker.input()->dataspace() }; Input_handler *_input_handler_callback = nullptr; diff --git a/repos/gems/src/app/nano3d/main.cc b/repos/gems/src/app/nano3d/main.cc index 42256a6da..656cbdc2e 100644 --- a/repos/gems/src/app/nano3d/main.cc +++ b/repos/gems/src/app/nano3d/main.cc @@ -12,6 +12,7 @@ */ /* Genode includes */ +#include #include #include #include @@ -33,7 +34,8 @@ class Scene : public Nano3d::Scene private: - Genode::Env &_env; + Genode::Env &_env; + Genode::Heap _heap { _env.ram(), _env.rm() }; Nitpicker::Area const _size; @@ -114,10 +116,8 @@ class Scene : public Nano3d::Scene private: - Polygon::Shaded_painter _shaded_painter { - *Genode::env()->heap(), _size.h() }; - Polygon::Textured_painter _textured_painter { - *Genode::env()->heap(), _size.h() }; + Polygon::Shaded_painter _shaded_painter { _heap, _size.h() }; + Polygon::Textured_painter _textured_painter { _heap, _size.h() }; Nano3d::Cube_shape const _cube { 7000 }; Nano3d::Dodecahedron_shape const _dodecahedron { 10000 };