LumieraPlugin lumiera_plugin_load_DYNLIB (const char* name) { TRACE (pluginloader_dbg, "load DYNLIB: %s", name); REQUIRE (name); LumieraPlugin self = lumiera_plugin_new (name); LumieraInterface plugin = NULL; void* handle = dlopen (name, RTLD_LAZY|RTLD_LOCAL); if (handle) { plugin = (LumieraInterface) dlsym (handle, LUMIERA_INTERFACE_DSTRING (lumieraorg__plugin, 0, lumieraorg_plugin)); if (!plugin) LUMIERA_ERROR_SET (pluginloader, PLUGIN_WTF, name); } else LUMIERA_ERROR_SET (pluginloader_dbg, PLUGIN_OPEN, lumiera_tmpbuf_snprintf (4096, "%s: %s", name, dlerror())); return lumiera_plugin_init (self, handle, plugin); }
bool kickOff (Subsys::SigTerm& terminationHandle) { try { Thread ("GUI-Main", bind (&runGUI, terminationHandle)); return true; // if we reach this line... } catch(...) { if (!lumiera_error_peek()) LUMIERA_ERROR_SET (gui, STATE, "unexpected error when starting the GUI thread"); return false; } // note: lumiera_error state remains set }