diff --git a/run/pike_loader.run b/run/pike_loader.run deleted file mode 100644 index 0b0dca8..0000000 --- a/run/pike_loader.run +++ /dev/null @@ -1,165 +0,0 @@ -# -# Build -# -if {![have_spec linux]} { - puts "Runs on Linux only" - exit 0 -} - -set build_components { - core init - app/cli_monitor - app/pike_loader - app/pointer - drivers/framebuffer - timer - server/dynamic_rom - server/loader - server/nit_fb - server/nitpicker - server/terminal - test/nitpicker -} - -build $build_components - -create_boot_directory - -# -# Generate config -# - -append config { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -} - -install_config $config - -# -# Boot modules -# - -# generic modules -set boot_modules { - core ld.lib.so init - cli_monitor - fb_sdl - loader - nit_fb - nitpicker - pike_loader - pointer - terminal - testnit - timer -} - - -build_boot_image $boot_modules - -run_genode_until forever diff --git a/src/app/pike_loader/main.cc b/src/app/pike_loader/main.cc deleted file mode 100644 index 757f0ba..0000000 --- a/src/app/pike_loader/main.cc +++ /dev/null @@ -1,274 +0,0 @@ -/* - * \brief Rio inspired launcher - * \author Emery Hemingway - * \date 2017-04-13 - */ - -/* - * Copyright (C) 2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* Genode includes */ -#include -#include -#include -#include -#include -#include - -namespace Morse { - - typedef Nitpicker::Session::View_handle View_handle; - typedef Nitpicker::Session::Command Command; - typedef Genode::String<80> String; - struct Main; - -}; - - -struct Morse::Main -{ - Genode::Env &env; - - Genode::Attached_rom_dataspace config_rom { env, "config" }; - - Nitpicker::Connection nitpicker { env, "input" }; - - Input::Session_client &input = *nitpicker.input(); - - Genode::Reconstructible loader { - env, - Genode::Ram_quota{env.pd().avail_ram().value - 4096}, - Genode::Cap_quota{env.pd().avail_caps().value - 4} }; - - /******************************** - ** State held between signals ** - ********************************/ - - enum Phase { IDLE, ENTER, DRAG, EXIT }; - - Phase phase = IDLE; - - int entry_key = Input::KEY_UNKNOWN; - int entry_count; - int entry_x; - int entry_y; - int exit_x; - int exit_y; - - - /*************** - ** Rendering ** - ***************/ - - Nitpicker::Session::View_handle view_handle = nitpicker.create_view(); - - Nitpicker::Point nit_point() - { - return Nitpicker::Point( - entry_x < exit_x ? entry_x : exit_x, - entry_y < exit_y ? entry_y : exit_y); - } - - - Nitpicker::Area nit_area() - { - return Nitpicker::Area( - entry_x < exit_x ? exit_x - entry_x : entry_x - exit_x, - entry_y < exit_y ? exit_y - entry_y : entry_y - exit_y); - } - - Nitpicker::Rect nit_rect() - { - return Nitpicker::Rect(nit_point(), nit_area()); - } - - void render_drag() - { - nitpicker.enqueue(view_handle, nit_rect()); - nitpicker.execute(); - } - - String loader_binary(Genode::Xml_node const &start_node) - { - using Genode::Xml_node; - String name; - - try { - Xml_node binary = start_node.sub_node("binary"); - binary.attribute("name").value(&name); - } catch (Xml_node::Nonexistent_sub_node) { - start_node.attribute("name").value(&name); - } - return name; - } - - String loader_label(Genode::Xml_node const &start_node) - { - String name; - start_node.attribute("name").value(&name); - return name; - } - - void render_loader() - { - using namespace Nitpicker; - using namespace Genode; - - /* Reduce the view area to zero unit the loader is ready */ - nitpicker.enqueue( - view_handle, Nitpicker::Rect(nit_point(), Nitpicker::Area())); - nitpicker.execute(); - - /* If the selected view is too tiny, back out */ - Nitpicker::Area area = nit_area(); - if (area.w() < 16 && area.h() < 16) - return; - - Xml_node start_node = config_rom.xml().sub_node("start"); - - /* We are only patron of single load, so transfer the slack RAM */ - loader.construct( - env, - Genode::Ram_quota{env.pd().avail_ram().value - 4096}, - Genode::Cap_quota{env.pd().avail_caps().value - 4}); - - try { - Xml_node config_xml = start_node.sub_node("config"); - Attached_dataspace ds( - env.rm(), loader->alloc_rom_module("config", config_xml.size())); - - strncpy(ds.local_addr(), config_xml.addr(), - config_xml.size()+1); - loader->commit_rom_module("config"); - } catch (Xml_node::Nonexistent_sub_node) { } - - - loader->view_ready_sigh(view_ready_handler); - loader->parent_view(nitpicker.view_capability(view_handle)); - - loader->start(loader_binary(start_node).string(), - loader_label(start_node).string()); - } - - - /********************* - ** Signal handling ** - *********************/ - - void handle_input() - { - using namespace Input; - - input.for_each_event([&] (Event const &ev) { - switch (ev.type()) { - case Event::MOTION: - switch (phase) { - case ENTER: - phase = DRAG; - nitpicker.enqueue(view_handle); - entry_x = exit_x = ev.ax(); - entry_y = exit_y = ev.ay(); - break; - case DRAG: - exit_x = ev.ax(); - exit_y = ev.ay(); - break; - default: break; - } - break; - - case Event::PRESS: - switch (phase) { - case IDLE: - phase = ENTER; - loader.destruct(); - entry_key = ev.code(); - entry_count = 1; - entry_x = entry_y = exit_x = exit_y = 0; - break; - default: break; - } - break; - - case Event::RELEASE: - switch (phase) { - case IDLE: - break; - default: - if (entry_key == ev.code()) { - phase = EXIT; - nitpicker.enqueue(view_handle); - } - } - break; - default: break; - } - }); - - switch (phase) { - case DRAG: - render_drag(); - break; - - case EXIT: - phase = IDLE; - render_loader(); - break; - - default: - break; - } - } - - Genode::Signal_handler
input_handler { - env.ep(), *this, &Main::handle_input }; - - void handle_view_ready() - { - Loader::Area const la = loader->view_size(); - Nitpicker::Area const na = nit_area(); - { - using namespace Loader; - - Area area( - Genode::min(la.w(), na.w()), - Genode::min(la.h(), na.h())); - - Rect const rect(Point(), area); - - { - using namespace Nitpicker; - - Point const np = nit_point(); - - Point const offset_point( - rect.w() < na.w() ? np.x() + (na.w() - rect.w()) / 2 : np.x(), - rect.h() < na.h() ? np.y() + (na.h() - rect.h()) / 2 : np.y()); - Rect const offset_rect(offset_point, area); - nitpicker.enqueue( - view_handle, offset_rect); - nitpicker.execute(); - } - - loader->view_geometry(rect, Point()); - } - } - - Genode::Signal_handler
view_ready_handler { - env.ep(), *this, &Main::handle_view_ready }; - - Main(Genode::Env &env) : env(env) - { - input.sigh(input_handler); - } -}; - - -void Component::construct(Genode::Env &env) -{ - static Morse::Main main(env); -} diff --git a/src/app/pike_loader/target.mk b/src/app/pike_loader/target.mk deleted file mode 100644 index 88e4a84..0000000 --- a/src/app/pike_loader/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -TARGET = pike_loader -SRC_CC = main.cc -LIBS = base - -CC_CXX_WARN_STRICT =