94 lines
2.8 KiB
C++
94 lines
2.8 KiB
C++
/*
|
|
* \brief Qt Launchpad main program
|
|
* \author Christian Prochaska
|
|
* \date 2008-04-05
|
|
*/
|
|
|
|
/* local includes */
|
|
#include "qt_launchpad.h"
|
|
|
|
/* Qt includes */
|
|
#include <QtGui>
|
|
#include <QApplication>
|
|
|
|
/* Genode includes */
|
|
#include <libc/component.h>
|
|
#include <base/attached_rom_dataspace.h>
|
|
|
|
namespace Qt_launchpad_namespace {
|
|
struct Local_env;
|
|
using namespace Genode;
|
|
}
|
|
|
|
struct Qt_launchpad_namespace::Local_env : Genode::Env
|
|
{
|
|
Genode::Env &genode_env;
|
|
|
|
Genode::Entrypoint local_ep { genode_env,
|
|
2*1024*sizeof(addr_t),
|
|
"qt_launchpad_ep",
|
|
Affinity::Location() };
|
|
|
|
Local_env(Env &genode_env) : genode_env(genode_env) { }
|
|
|
|
Parent &parent() override { return genode_env.parent(); }
|
|
Cpu_session &cpu() override { return genode_env.cpu(); }
|
|
Region_map &rm() override { return genode_env.rm(); }
|
|
Pd_session &pd() override { return genode_env.pd(); }
|
|
Entrypoint &ep() override { return local_ep; }
|
|
Cpu_session_capability cpu_session_cap() override { return genode_env.cpu_session_cap(); }
|
|
Pd_session_capability pd_session_cap() override { return genode_env.pd_session_cap(); }
|
|
Id_space<Parent::Client> &id_space() override { return genode_env.id_space(); }
|
|
|
|
Session_capability session(Parent::Service_name const &service_name,
|
|
Parent::Client::Id id,
|
|
Parent::Session_args const &session_args,
|
|
Affinity const &affinity) override
|
|
{ return genode_env.session(service_name, id, session_args, affinity); }
|
|
|
|
void upgrade(Parent::Client::Id id, Parent::Upgrade_args const &args) override
|
|
{ return genode_env.upgrade(id, args); }
|
|
|
|
void close(Parent::Client::Id id) override { return genode_env.close(id); }
|
|
|
|
void exec_static_constructors() override { }
|
|
|
|
void reinit(Native_capability::Raw raw) override {
|
|
genode_env.reinit(raw);
|
|
}
|
|
|
|
void reinit_main_thread(Capability<Region_map> &stack_area_rm) override {
|
|
genode_env.reinit_main_thread(stack_area_rm);
|
|
}
|
|
};
|
|
|
|
extern void initialize_qt_gui(Genode::Env &);
|
|
|
|
void Libc::Component::construct(Libc::Env &env)
|
|
{
|
|
Libc::with_libc([&] {
|
|
|
|
initialize_qt_gui(env);
|
|
|
|
Qt_launchpad_namespace::Local_env local_env(env);
|
|
|
|
int argc = 1;
|
|
char const *argv[] = { "qt_launchpad", 0 };
|
|
|
|
QApplication a(argc, (char**)argv);
|
|
|
|
Qt_launchpad launchpad(local_env, env.pd().avail_ram().value);
|
|
|
|
Genode::Attached_rom_dataspace config(env, "config");
|
|
|
|
try { launchpad.process_config(config.xml()); } catch (...) { }
|
|
|
|
launchpad.move(300,100);
|
|
launchpad.show();
|
|
|
|
a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
|
|
|
|
a.exec();
|
|
});
|
|
}
|