Beispiel #1
0
int
main (int argc, char **argv)
{
  GOptionContext *ctx;
  GError *error = NULL;

  ctx = meta_get_option_context ();
  g_option_context_add_main_entries (ctx, mutter_options, GETTEXT_PACKAGE);
  if (!g_option_context_parse (ctx, &argc, &argv, &error))
    {
      g_printerr ("mutter: %s\n", error->message);
      exit (1);
    }

  if (mutter_plugins)
    {
      MetaPluginManager *mgr;
      char **plugins = g_strsplit (mutter_plugins, ",", -1); 
      char **plugin;

      mgr = meta_plugin_manager_get_default ();
      for (plugin = plugins; *plugin; plugin++)
        {
          g_strstrip (*plugin);
          meta_plugin_manager_load (mgr, *plugin);
        }
      g_strfreev (plugins);
    }

  meta_init ();
  return meta_run ();
}
Beispiel #2
0
/**
 * meta_plugin_type_register:
 * @plugin_type: a #MetaPlugin type
 *
 * Register @plugin_type as a compositor plugin type to be used.
 * You must call this before calling meta_init().
 */
void
meta_plugin_type_register (GType plugin_type)
{
  MetaPluginManager *plugin_manager;

  plugin_manager = meta_plugin_manager_get_default ();
  meta_plugin_manager_register (plugin_manager, plugin_type);
}
Beispiel #3
0
MetaPluginManager *
meta_plugin_manager_get (MetaScreen *screen)
{
  MetaPluginManager *plugin_mgr;

  plugin_mgr = g_object_get_data (G_OBJECT (screen), "meta-plugin-manager");
  if (plugin_mgr)
    return plugin_mgr;

  if (!default_plugin_manager)
    meta_plugin_manager_get_default ();

  if (!default_plugin_manager->screen)
    {
      /* The default plugin manager is so far unused, we can recycle it */
      default_plugin_manager->screen = screen;
      g_object_set_data (G_OBJECT (screen), "meta-plugin-manager", default_plugin_manager);

      return default_plugin_manager;
    }
  else
    {
      GSList *iter;
      GType plugin_type;
      MetaPlugin *plugin;

      plugin_mgr = meta_plugin_manager_new (screen);

      for (iter = plugin_types; iter; iter = iter->next)
        {
          plugin_type = (GType)GPOINTER_TO_SIZE (iter->data);
          plugin = g_object_new (plugin_type, "screen", screen,  NULL);
          plugin_mgr->plugins = g_list_prepend (plugin_mgr->plugins, plugin);
        }

      return plugin_mgr;
    }
}