public void Initialize(X11PlatformOptions options) { Options = options; XInitThreads(); Display = XOpenDisplay(IntPtr.Zero); DeferredDisplay = XOpenDisplay(IntPtr.Zero); OrphanedWindow = XCreateSimpleWindow(Display, XDefaultRootWindow(Display), 0, 0, 1, 1, 0, IntPtr.Zero, IntPtr.Zero); if (Display == IntPtr.Zero) { throw new Exception("XOpenDisplay failed"); } XError.Init(); Info = new X11Info(Display, DeferredDisplay); Globals = new X11Globals(this); //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 SleepLoopRenderTimer(60)) .Bind <IRenderLoop>().ToConstant(new RenderLoop()) .Bind <PlatformHotkeyConfiguration>().ToConstant(new PlatformHotkeyConfiguration(KeyModifiers.Control)) .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 = Avalonia.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, Options.GlProfiles); } } }
public void Initialize(X11PlatformOptions 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); 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()) .Bind <PlatformHotkeyConfiguration>().ToConstant(new PlatformHotkeyConfiguration(InputModifiers.Control)) .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()); X11Screens = Avalonia.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); } } Options = options; }
public void Initialize(X11PlatformOptions options) { Options = options; bool useXim = false; if (EnableIme(options)) { // Attempt to configure DBus-based input method and check if we can fall back to XIM if (!X11DBusImeHelper.DetectAndRegister() && ShouldUseXim()) { useXim = true; } } // XIM doesn't work at all otherwise if (useXim) { setlocale(0, ""); } XInitThreads(); Display = XOpenDisplay(IntPtr.Zero); if (Display == IntPtr.Zero) { throw new Exception("XOpenDisplay failed"); } DeferredDisplay = XOpenDisplay(IntPtr.Zero); if (DeferredDisplay == IntPtr.Zero) { throw new Exception("XOpenDisplay failed"); } OrphanedWindow = XCreateSimpleWindow(Display, XDefaultRootWindow(Display), 0, 0, 1, 1, 0, IntPtr.Zero, IntPtr.Zero); XError.Init(); Info = new X11Info(Display, DeferredDisplay, useXim); Globals = new X11Globals(this); //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 SleepLoopRenderTimer(60)) .Bind <IRenderLoop>().ToConstant(new RenderLoop()) .Bind <PlatformHotkeyConfiguration>().ToConstant(new PlatformHotkeyConfiguration(KeyModifiers.Control)) .Bind <IKeyboardDevice>().ToFunc(() => KeyboardDevice) .Bind <ICursorFactory>().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 = Avalonia.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) { EglPlatformOpenGlInterface.TryInitialize(); } else { GlxPlatformOpenGlInterface.TryInitialize(Info, Options.GlProfiles); } } }