49 using std::unique_ptr;
53 using lib::RecursiveLock_NoWait;
66 GuiRunner (Subsys::SigTerm terminationHandle)
67 : theGUI_(
"lumieraorg_Gui", 1, 1,
"lumieraorg_GuiStarterPlugin")
70 bool res = this->
launchUI (terminationHandle);
86 bool launchUI (Subsys::SigTerm& terminationHandle)
88 return theGUI_->launchUI (reinterpret_cast<void*> (&terminationHandle));
97 unique_ptr<GuiRunner> facade;
102 public Sync<RecursiveLock_NoWait>
104 operator string()
const {
return "Lumiera GTK GUI"; }
111 INFO (guifacade,
"*not* starting the GUI...");
127 [=] (
string* problemMessage)
130 termNotification(problemMessage);
165 WARN (guifacade,
"Termination signal invoked, but GUI is currently closed. " 166 "Probably this is due to some broken startup logic and should be fixed.");
169 facade.reset (
nullptr);
181 WARN (guifacade,
"GUI subsystem terminates, but GuiFacade isn't properly closed. " 182 "Closing it forcedly; this indicates broken startup logic and should be fixed.");
183 try { facade.reset (0); }
203 return theDescriptor();
Facility for monitor object based locking.
Dependencies and lifecycle of a partially independent Subsystem of the Application.
lumiera_err lumiera_error_peek(void)
Check current error state without clearing it Please avoid this function and use lumiera_error() if p...
Major public Interface of the Lumiera GUI.
#define ERROR_LOG_AND_IGNORE(_FLAG_, _OP_DESCR_)
convenience shortcut for a sequence of catch blocks just logging and consuming an error...
Any copy and copy construction prohibited.
bool launchUI(Subsys::SigTerm &terminationHandle)
start the actual GUI thread(s), after successfully loading the GuiStarterPlugin, that is...
scoped guard to control the actual locking.
Frontend for handling the Lumiera application commandline arguments.
Access point to singletons and other kinds of dependencies designated by type.
static lumiera::Subsys & getDescriptor()
provide a descriptor for lumiera::AppState, wired accordingly to allow main to load, start and stop the Lumiera GTK GUI.
Object Monitor based synchronisation.
Derived specific exceptions within Lumiera's exception hierarchy.
Lumiera GTK UI implementation root.
lumiera_err lumiera_error(void)
Get and clear current error state.
front-end for handling the commandline arguments.
bool shouldStart(lumiera::Option &opts) override
query application option state to determine if this subsystem should be activated.
Singleton services and Dependency Injection.
static bool isUp()
weather the GUI has been started and all interfaces are opened
Lumiera error handling (C++ interface).
Handle tracking the registration of an interface, deregistering it on deletion.
void triggerShutdown() noexcept override
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...
static lib::Depend< GuiNotification > facade
static storage for the facade access front-end
bool checkRunningState() noexcept override
whether this subsystem is actually operational.
load and start the GUI as a plugin
bool start(lumiera::Option &, Subsys::SigTerm termNotification) override
attempt to bring up this subsystem up.