/// <summary>
        /// Initializes the specified options.
        /// </summary>
        /// <param name="options">The options.</param>
        /// <exception cref="Exception">XOpenDisplay failed</exception>
        public void Initialize(X11PlatformOptions options)
        {
            Options = options;
            XInitThreads();
            Display         = XOpenDisplay(IntPtr.Zero);
            DeferredDisplay = XOpenDisplay(IntPtr.Zero);
            if (Display == IntPtr.Zero)
            {
                throw new Exception("XOpenDisplay failed");
            }
            XError.Init();
            Info = new X11Info(Display, DeferredDisplay);
            //TODO: log
            if (options.UseDBusMenu)
            {
                DBusHelper.TryInitialize();
            }
            AvaloniaLocator.CurrentMutable.BindToSelf(this)
            .Bind <IWindowingPlatform>().ToConstant(this)
            .Bind <IPlatformThreadingInterface>().ToConstant(new X11PlatformThreading(this))
            .Bind <IRenderTimer>().ToConstant(new DefaultRenderTimer(60))
            .Bind <IRenderLoop>().ToConstant(new RenderLoop())
#pragma warning disable CS0618 // Type or member is obsolete
            .Bind <PlatformHotkeyConfiguration>().ToConstant(new PlatformHotkeyConfiguration(InputModifiers.Control))
#pragma warning restore CS0618 // Type or member is obsolete
            .Bind <IKeyboardDevice>().ToFunc(() => KeyboardDevice)
            .Bind <IStandardCursorFactory>().ToConstant(new X11CursorFactory(Display))
            .Bind <IClipboard>().ToConstant(new X11Clipboard(this))
            .Bind <IPlatformSettings>().ToConstant(new PlatformSettingsStub())
            .Bind <IPlatformIconLoader>().ToConstant(new X11IconLoader(Info))
            .Bind <ISystemDialogImpl>().ToConstant(new GtkSystemDialog())
            .Bind <IMountedVolumeInfoProvider>().ToConstant(new LinuxMountedVolumeInfoProvider());

            X11Screens = IronyModManager.Platform.x11.X11Screens.Init(this);
            Screens    = new X11Screens(X11Screens);
            if (Info.XInputVersion != null)
            {
                var xi2 = new XI2Manager();
                if (xi2.Init(this))
                {
                    XI2 = xi2;
                }
            }

            if (options.UseGpu)
            {
                if (options.UseEGL)
                {
                    EglGlPlatformFeature.TryInitialize();
                }
                else
                {
                    GlxGlPlatformFeature.TryInitialize(Info);
                }
            }
        }
Example #2
0
 public X11Screens(IX11Screens impl)
 {
     _impl = impl;
 }