Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
 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
 }