public static void Main(string[] args) { CoreServices.Init(); InitGtk(); /* Init GStreamer */ GStreamer.Init(); //if (!GStreamer.CheckInstallation ()) // return; GLib.ExceptionManager.UnhandledException += new GLib.UnhandledExceptionHandler(OnException); Version version = Assembly.GetExecutingAssembly().GetName().Version; try { AddinsManager.Initialize(Config.PluginsConfigDir, Config.PluginsDir); AddinsManager.LoadConfigModifierAddins(); Config.DrawingToolkit = new CairoBackend(); Config.EventsBroker = new EventsBroker(); Config.MultimediaToolkit = new MultimediaToolkit(); Config.GUIToolkit = new GUIToolkit(version); bool haveCodecs = AddinsManager.RegisterGStreamerPlugins(); AddinsManager.LoadExportProjectAddins(Config.GUIToolkit.MainController); AddinsManager.LoadMultimediaBackendsAddins(Config.MultimediaToolkit); AddinsManager.LoadUIBackendsAddins(Config.GUIToolkit); AddinsManager.LoadServicesAddins(); Config.GUIToolkit.Register <IPlayerView, PlayerView> (0); if (!haveCodecs) { CodecsChoiceDialog ccd = new CodecsChoiceDialog(); int response = ccd.Run(); if (response == (int)ResponseType.Accept) { try { System.Diagnostics.Process.Start(Constants.WEBSITE); } catch { } } ccd.Destroy(); } try { CoreServices.Start(Config.GUIToolkit, Config.MultimediaToolkit); } catch (DBLockedException locked) { string msg = Catalog.GetString("The database seems to be locked by another instance and " + "the application will be closed."); Config.GUIToolkit.ErrorMessage(msg); Log.Exception(locked); return; } AddinsManager.LoadDashboards(Config.CategoriesTemplatesProvider); AddinsManager.LoadImportProjectAddins(CoreServices.ProjectsImporter); ConfigureOSXApp(); Application.Run(); } catch (AddinRequestShutdownException arse) { // Abort gracefully } catch (Exception ex) { ProcessExecutionError(ex); } finally { try { AddinsManager.ShutdownMultimediaBackends(); } catch { } } }