public Menu( CefApp menuCeffApp, CefMainArgs mainArgs, InputProcessor inputProcessor, MenuBrowserClient browserClient, StateManager stateManager, EventBus eventBus ) { // State Initialization _buttons = (GameControllerButton[])Enum.GetValues(typeof(GameControllerButton)); _analogs = (GameControllerAnalog[])Enum.GetValues(typeof(GameControllerAnalog)); _eventTokenList = new List <SubscriptionToken>(); _eventBus = eventBus; #if (DEBUG) var logSeverity = CefLogSeverity.Error; #else var logSeverity = CefLogSeverity.Error; #endif var settings = new CefSettings { WindowlessRenderingEnabled = true, LogSeverity = logSeverity, NoSandbox = true }; CefRuntime.Initialize(mainArgs, settings, menuCeffApp, IntPtr.Zero); // Instruct CEF to not render to a window at all. var cefWindowInfo = CefWindowInfo.Create(); cefWindowInfo.SetAsWindowless(IntPtr.Zero, false); var browserSettings = new CefBrowserSettings() { WindowlessFrameRate = 60, }; _inputProcessor = inputProcessor; _browserClient = browserClient; _browser = CefBrowserHost.CreateBrowserSync( cefWindowInfo, _browserClient, browserSettings, "http://localhost:4200" ); _eventTokenList.Add(_eventBus.Subscribe <OpenMenuEvent>(OnOpenMenuEvent)); _eventTokenList.Add(_eventBus.Subscribe <CloseMenuEvent>(OnCloseMenuEvent)); var game = stateManager.GetGameById("Super Mario World (USA)"); eventBus.Publish(new LoadGameEvent(game)); }
public bool CreateBrowser(BrowserSource browserSource, BrowserConfig browserConfig) { if (browserClient == null) { InitClient(browserSource); } Debug.Assert(browserClient != null); Debug.Assert(browserConfig != null); BrowserConfig = browserConfig; CefWindowInfo windowInfo = CefWindowInfo.Create(); windowInfo.Width = (int)browserConfig.BrowserSourceSettings.Width; windowInfo.Height = (int)browserConfig.BrowserSourceSettings.Height; windowInfo.SetAsWindowless(IntPtr.Zero, true); BrowserInstanceSettings settings = AbstractSettings.DeepClone( BrowserSettings.Instance.InstanceSettings); settings.MergeWith(browserConfig.BrowserInstanceSettings); CefBrowserSettings browserSettings = new CefBrowserSettings { WindowlessFrameRate = browserConfig.BrowserSourceSettings.Fps, ApplicationCache = settings.ApplicationCache, CaretBrowsing = settings.CaretBrowsing, CursiveFontFamily = settings.CursiveFontFamily, Databases = settings.Databases, DefaultEncoding = settings.DefaultEncoding, DefaultFixedFontSize = settings.DefaultFixedFontSize, DefaultFontSize = settings.DefaultFontSize, FantasyFontFamily = settings.FantasyFontFamily, FileAccessFromFileUrls = settings.FileAccessFromFileUrls, FixedFontFamily = settings.FixedFontFamily, ImageLoading = settings.ImageLoading, ImageShrinkStandaloneToFit = settings.ImageShrinkStandaloneToFit, Java = settings.Java, JavaScript = settings.JavaScript, JavaScriptAccessClipboard = settings.JavaScriptAccessClipboard, JavaScriptCloseWindows = settings.JavaScriptCloseWindows, JavaScriptDomPaste = settings.JavaScriptDomPaste, JavaScriptOpenWindows = settings.JavaScriptOpenWindows, LocalStorage = settings.LocalStorage, MinimumFontSize = settings.MinimumFontSize, MinimumLogicalFontSize = settings.MinimumLogicalFontSize, Plugins = settings.Plugins, RemoteFonts = settings.RemoteFonts, SansSerifFontFamily = settings.SansSerifFontFamily, SerifFontFamily = settings.SerifFontFamily, StandardFontFamily = settings.StandardFontFamily, //TabToLinks = settings.TabToLinks, //TextAreaResize = settings.TextAreaResize, UniversalAccessFromFileUrls = settings.UniversalAccessFromFileUrls, WebGL = settings.WebGL, WebSecurity = settings.WebSecurity }; String url = browserConfig.BrowserSourceSettings.Url; if (browserConfig.BrowserSourceSettings.IsApplyingTemplate) { url = "http://absolute"; } lock (browserLock) { ManualResetEventSlim createdBrowserEvent = new ManualResetEventSlim(); CefRuntime.PostTask(CefThreadId.UI, BrowserTask.Create(() => { try { browser = CefBrowserHost.CreateBrowserSync(windowInfo, browserClient, browserSettings, new Uri(url)); BrowserManager.Instance.RegisterBrowser(browser.Identifier, this); // request the render process id for volume control browser.SendProcessMessage(CefProcessId.Renderer, CefProcessMessage.Create("renderProcessIdRequest")); } catch (Exception) { browser = null; } finally { createdBrowserEvent.Set(); } })); createdBrowserEvent.Wait(); } return(browser != null); }