40 using std::unique_ptr;
44 using lib::RecursiveLock_NoWait;
58 :
theGUI_(
"lumieraorg_Gui", 1, 1,
"lumieraorg_GuiStarterPlugin")
61 bool res = this->
launchUI (terminationHandle);
79 return theGUI_->launchUI (
reinterpret_cast<void*
> (&terminationHandle));
93 public Sync<RecursiveLock_NoWait>
95 operator string()
const {
return "Lumiera GTK GUI"; }
102 INFO (guifacade,
"*not* starting the GUI...");
118 [=,
this] (
string* problemMessage)
121 termNotification(problemMessage);
138 try { GuiNotification::facade().triggerGuiShutdown (
"Application shutdown"); }
156 WARN (guifacade,
"Termination signal invoked, but GUI is currently closed. "
157 "Probably this is due to some broken startup logic and should be fixed.");
172 WARN (guifacade,
"GUI subsystem terminates, but GuiFacade isn't properly closed. "
173 "Closing it forcedly; this indicates broken startup logic and should be fixed.");
194 return theDescriptor();
Access point to singletons and other kinds of dependencies designated by type.
scoped guard to control the actual locking.
Facility for monitor object based locking.
Handle tracking the registration of an interface, deregistering it on deletion.
Frontend for handling the Lumiera application commandline arguments.
Dependencies and lifecycle of a partially independent Subsystem of the Application.
function< void(string *)> SigTerm
Derived specific exceptions within Lumiera's exception hierarchy.
static lumiera::Subsys & getDescriptor()
provide a descriptor for lumiera::AppState, wired accordingly to allow main to load,...
static bool isUp()
weather the GUI has been started and all interfaces are opened
bool shouldStart(lumiera::Option &opts) override
query application option state to determine if this subsystem should be activated.
bool checkRunningState() noexcept override
whether this subsystem is actually operational.
bool start(lumiera::Option &, Subsys::SigTerm termNotification) override
attempt to bring up this subsystem up.
void triggerShutdown() noexcept override
Any copy and copy construction prohibited.
Singleton services and Dependency Injection.
lumiera_err lumiera_error_peek(void)
Check current error state without clearing it Please avoid this function and use lumiera_error() if p...
lumiera_err lumiera_error(void)
Get and clear current error state.
Lumiera error handling (C++ interface).
#define ERROR_LOG_AND_IGNORE(_FLAG_, _OP_DESCR_)
convenience shortcut for a sequence of catch blocks just logging and consuming an error.
Major public Interface of the Lumiera GUI.
Interface for the GUI loader and for accessing the GUI interface from the lower layers of Lumiera.
A handle template for automatically dealing with interface and plugin registration and deregistration...
#define LUMIERA_INTERFACE_INAME(name, version)
Construct a type identifier for an interface.
unique_ptr< GuiRunner > facade
lib::Depend< GuiSubsysDescriptor > theDescriptor
Lumiera GTK UI implementation root.
front-end for handling the commandline arguments.
load and start the GUI as a plugin
InstanceHandle< LUMIERA_INTERFACE_INAME(lumieraorg_Gui, 1)> GuiHandle
GuiRunner(Subsys::SigTerm terminationHandle)
bool launchUI(Subsys::SigTerm &terminationHandle)
start the actual GUI thread(s), after successfully loading the GuiStarterPlugin, that is.
Object Monitor based synchronisation.