/// <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); } } }
public X11Screens(IX11Screens impl) { _impl = impl; }