diff --git a/repos/ports/recipes/src/seoul-nova/used_apis b/repos/ports/recipes/src/seoul-nova/used_apis
index 6611fa4e3..79013acb4 100644
--- a/repos/ports/recipes/src/seoul-nova/used_apis
+++ b/repos/ports/recipes/src/seoul-nova/used_apis
@@ -4,6 +4,7 @@ libc
os
blit
nitpicker_gfx
+nitpicker_session
framebuffer_session
input_session
timer_session
diff --git a/repos/ports/run/seoul-disc.run b/repos/ports/run/seoul-disc.run
index 9574c909e..8448b55c4 100644
--- a/repos/ports/run/seoul-disc.run
+++ b/repos/ports/run/seoul-disc.run
@@ -35,7 +35,7 @@ if {[have_include power_on/qemu]} {
exit 1
}
- append qemu_args " -m 1024 "
+ append qemu_args " -m 1536 "
append qemu_args " -cpu phenom"
append_if $use_block_sata qemu_args " -drive id=disk,file=bin/seoul-disc.raw,format=raw,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0 -boot d"
}
diff --git a/repos/ports/run/seoul.inc b/repos/ports/run/seoul.inc
index dd987bdbf..3dd31a85b 100644
--- a/repos/ports/run/seoul.inc
+++ b/repos/ports/run/seoul.inc
@@ -5,6 +5,11 @@
# \author Alexander Boettcher
# \date 2011-11-21
+create_boot_directory
+
+import_from_depot [depot_user]/src/[base_src] \
+ [depot_user]/src/init \
+ [depot_user]/src/nitpicker
#
# Build
#
@@ -21,7 +26,6 @@ source ${genode_dir}/repos/base/run/platform_drv.inc
proc platform_drv_priority {} { return { priority="-1"} }
set build_components {
- core init timer
drivers/rtc
drivers/input
app/seoul
@@ -35,12 +39,8 @@ lappend_if $use_block_sata build_components drivers/ahci
lappend_if $use_nic_session build_components drivers/nic
lappend_if $use_nic_bridge build_components server/nic_bridge
lappend_if $use_framebuffer build_components drivers/framebuffer
-lappend_if $use_fancy_stuff build_components server/nitpicker
-lappend_if $use_fancy_stuff build_components app/pointer
lappend_if $use_fancy_stuff build_components app/status_bar
-lappend_if $use_fancy_stuff build_components server/liquid_framebuffer
lappend_if $use_fancy_stuff build_components app/launchpad
-lappend_if $use_fancy_stuff build_components server/nitlog
lappend_if $use_fancy_stuff build_components server/report_rom
lappend_if $use_genode_iso build_components server/iso9660
lappend_if $use_genode_iso build_components server/rom_block
@@ -137,8 +137,6 @@ puts $vm_cfg_fd {
}
close $vm_cfg_fd
-create_boot_directory
-
#
# Generate Genode config
#
@@ -193,7 +191,7 @@ append_if $use_block_sata config {
append_if $use_block_ram config {
-
+
}
@@ -244,7 +242,7 @@ append_if $use_framebuffer config {
-
+
}
if {!$use_fancy_stuff} {
@@ -260,8 +258,6 @@ append_if [expr $use_nic_session && $use_nic_bridge] config {
}
append_if [expr $use_nic_session && !$use_nic_bridge] config {
}
-append_if $use_framebuffer config {
- }
append_if $use_genode_iso config {
@@ -284,17 +280,28 @@ append_if $use_usb config {
}
-append_if $use_fancy_stuff config {
+append config {
+
+
+
+ hover="always" xpos="10" ypos="20" height="-20"/>
+
+
+
+
+
@@ -305,22 +312,26 @@ append_if $use_fancy_stuff config {
+
-
-
-
-
-
-
-
+
+ }
+
+append_if $use_fancy_stuff config {
+
+
+
+
+
+
@@ -367,27 +378,12 @@ if {$use_fancy_stuff} {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
@@ -406,8 +402,6 @@ install_config $config
# generic modules
set boot_modules {
- core ld.lib.so init
- timer
rtc_drv
seoul
vm_seoul.cfg
@@ -421,12 +415,8 @@ lappend_if $use_nic_session boot_modules nic_drv
lappend_if $use_nic_bridge boot_modules nic_bridge
lappend_if $use_framebuffer boot_modules fb_drv
-lappend_if $use_fancy_stuff boot_modules nitpicker
-lappend_if $use_fancy_stuff boot_modules pointer
lappend_if $use_fancy_stuff boot_modules status_bar
-lappend_if $use_fancy_stuff boot_modules liquid_fb
lappend_if $use_fancy_stuff boot_modules launchpad
-lappend_if $use_fancy_stuff boot_modules nitlog
lappend_if $use_fancy_stuff boot_modules launchpad-config
lappend_if $use_fancy_stuff boot_modules report_rom
diff --git a/repos/ports/src/app/seoul/console.cc b/repos/ports/src/app/seoul/console.cc
index 446491d2d..55d29943f 100644
--- a/repos/ports/src/app/seoul/console.cc
+++ b/repos/ports/src/app/seoul/console.cc
@@ -373,13 +373,14 @@ bool Seoul::Console::receive(MessageTimeout &msg) {
Seoul::Console::Console(Genode::Env &env, Synced_motherboard &mb,
Motherboard &unsynchronized_motherboard,
- Framebuffer::Connection &framebuffer,
+ Nitpicker::Connection &nitpicker,
Genode::Dataspace_capability guest_fb_ds)
:
_env(env),
_unsynchronized_motherboard(unsynchronized_motherboard),
_motherboard(mb),
- _framebuffer(framebuffer),
+ _framebuffer(*nitpicker.framebuffer()),
+ _input(*nitpicker.input()),
_guest_fb_ds(guest_fb_ds),
_fb_mode(_framebuffer.mode()),
_fb_size(Genode::Dataspace_client(_framebuffer.dataspace()).size()),
diff --git a/repos/ports/src/app/seoul/console.h b/repos/ports/src/app/seoul/console.h
index fa854f632..af17bf72e 100644
--- a/repos/ports/src/app/seoul/console.h
+++ b/repos/ports/src/app/seoul/console.h
@@ -30,6 +30,7 @@
#include
#include
#include
+#include
#include
#include
@@ -47,23 +48,23 @@ class Seoul::Console : public StaticReceiver
{
private:
- Genode::Env &_env;
- Motherboard &_unsynchronized_motherboard;
- Synced_motherboard &_motherboard;
- Framebuffer::Connection &_framebuffer;
- Genode::Dataspace_capability _guest_fb_ds;
- Framebuffer::Mode _fb_mode;
- size_t _fb_size;
- short *_pixels;
- Genode::Surface _surface;
- Input::Connection _input { _env };
- Keyboard _vkeyb { _motherboard };
- char *_guest_fb { nullptr };
- VgaRegs *_regs { nullptr };
- bool _left { false };
- bool _middle { false };
- bool _right { false };
- unsigned _timer { 0 };
+ Genode::Env &_env;
+ Motherboard &_unsynchronized_motherboard;
+ Synced_motherboard &_motherboard;
+ Framebuffer::Session &_framebuffer;
+ Input::Session_client &_input;
+ Genode::Dataspace_capability _guest_fb_ds;
+ Framebuffer::Mode _fb_mode;
+ size_t _fb_size;
+ short *_pixels;
+ Genode::Surface _surface;
+ Keyboard _vkeyb { _motherboard };
+ char *_guest_fb { nullptr };
+ VgaRegs *_regs { nullptr };
+ bool _left { false };
+ bool _middle { false };
+ bool _right { false };
+ unsigned _timer { 0 };
unsigned _input_to_ps2mouse(Input::Event const &);
unsigned _input_to_ps2wheel(Input::Event const &);
@@ -93,7 +94,7 @@ class Seoul::Console : public StaticReceiver
* Constructor
*/
Console(Genode::Env &env, Synced_motherboard &, Motherboard &,
- Framebuffer::Connection &, Genode::Dataspace_capability fb_ds);
+ Nitpicker::Connection &, Genode::Dataspace_capability fb_ds);
};
#endif /* _CONSOLE_H_ */
diff --git a/repos/ports/src/app/seoul/main.cc b/repos/ports/src/app/seoul/main.cc
index 474374643..f7a95ce29 100644
--- a/repos/ports/src/app/seoul/main.cc
+++ b/repos/ports/src/app/seoul/main.cc
@@ -44,7 +44,6 @@
#include
/* os includes */
-#include
#include
#include
#include
@@ -1435,12 +1434,32 @@ void Component::construct(Genode::Env &env)
static Vmm::Virtual_reservation reservation(env, vm_size);
/* setup framebuffer memory for guest */
- static Framebuffer::Connection framebuffer(env, Framebuffer::Mode(0, 0, Framebuffer::Mode::INVALID));
- Framebuffer::Mode const fb_mode = framebuffer.mode();
+ static Nitpicker::Connection nitpicker { env };
+
+ unsigned width = config.xml().attribute_value("width", 1024U);
+ unsigned height = config.xml().attribute_value("height", 768U);
+
+ nitpicker.buffer(Framebuffer::Mode(width, height,
+ Framebuffer::Mode::RGB565), false);
+
+ static Framebuffer::Session &framebuffer { *nitpicker.framebuffer() };
+ Framebuffer::Mode const fb_mode { framebuffer.mode() };
+
size_t const fb_size = Genode::align_addr(fb_mode.width() *
fb_mode.height() *
fb_mode.bytes_per_pixel(), 12);
+ typedef Nitpicker::Session::View_handle View_handle;
+ typedef Nitpicker::Session::Command Command;
+
+ View_handle view = nitpicker.create_view();
+ Nitpicker::Rect rect(Nitpicker::Point(0, 0),
+ Nitpicker::Area(fb_mode.width(), fb_mode.height()));
+
+ nitpicker.enqueue(view, rect);
+ nitpicker.enqueue(view, View_handle());
+ nitpicker.execute();
+
/* setup guest memory */
static Guest_memory guest_memory(env, vm_size, fb_size);
@@ -1496,7 +1515,7 @@ void Component::construct(Genode::Env &env)
/* create console thread */
static Seoul::Console vcon(env, machine.motherboard(),
machine.unsynchronized_motherboard(),
- framebuffer,
+ nitpicker,
guest_memory.fb_ds());
vcon.register_host_operations(machine.unsynchronized_motherboard());