EGLNativeWindowType cPlatform::CreateWindow(void) { #if HAVE_WAYLAND if (cPlatform::platform == EGL_PLATFORM_WAYLAND) return (EGLNativeWindowType) WaylandInterface.CreateWindow(); #endif #if HAVE_X11 if (cPlatform::platform == EGL_PLATFORM_X11) return (EGLNativeWindowType) XInterface.CreateWindow(); #endif #ifdef ANDROID return (EGLNativeWindowType)Host_GetRenderHandle(); #endif return 0; }
// This is called from the GUI thread. See the booting call schedule in // BootManager.cpp bool Init() { const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; if (s_emu_thread.joinable()) { if (IsRunning()) { PanicAlertT("Emu Thread already running"); return false; } // The Emu Thread was stopped, synchronize with it. s_emu_thread.join(); } Core::UpdateWantDeterminism(/*initial*/ true); INFO_LOG(OSREPORT, "Starting core = %s mode", _CoreParameter.bWii ? "Wii" : "GameCube"); INFO_LOG(OSREPORT, "CPU Thread separate = %s", _CoreParameter.bCPUThread ? "Yes" : "No"); Host_UpdateMainFrame(); // Disable any menus or buttons at boot g_aspect_wide = _CoreParameter.bWii; if (g_aspect_wide) { IniFile gameIni = _CoreParameter.LoadGameIni(); gameIni.GetOrCreateSection("Wii")->Get("Widescreen", &g_aspect_wide, !!SConfig::GetInstance().m_SYSCONF->GetData<u8>("IPL.AR")); } s_window_handle = Host_GetRenderHandle(); // Start the emu thread s_emu_thread = std::thread(EmuThread); return true; }
// This is called from the GUI thread. See the booting call schedule in // BootManager.cpp bool Init() { const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; if (g_EmuThread.joinable()) { PanicAlertT("Emu Thread already running"); return false; } g_CoreStartupParameter = _CoreParameter; INFO_LOG(OSREPORT, "Starting core = %s mode", g_CoreStartupParameter.bWii ? "Wii" : "Gamecube"); INFO_LOG(OSREPORT, "CPU Thread separate = %s", g_CoreStartupParameter.bCPUThread ? "Yes" : "No"); Host_UpdateMainFrame(); // Disable any menus or buttons at boot g_aspect_wide = _CoreParameter.bWii; if (g_aspect_wide) { IniFile gameIni; gameIni.Load(_CoreParameter.m_strGameIni.c_str()); gameIni.Get("Wii", "Widescreen", &g_aspect_wide, !!SConfig::GetInstance().m_SYSCONF-> GetData<u8>("IPL.AR")); } // g_pWindowHandle is first the m_Panel handle, // then it is updated to the render window handle, // within g_video_backend->Initialize() g_pWindowHandle = Host_GetRenderHandle(); // Start the emu thread g_EmuThread = std::thread(EmuThread); return true; }
bool cPlatform::Init(EGLConfig config) { #if HAVE_WAYLAND if (cPlatform::platform == EGL_PLATFORM_WAYLAND) if (!WaylandInterface.Initialize(config)) return false; #endif #if HAVE_X11 if (cPlatform::platform == EGL_PLATFORM_X11) if (!XInterface.Initialize(config)) return false; #endif #ifdef ANDROID EGLint format; eglGetConfigAttrib(GLWin.egl_dpy, config, EGL_NATIVE_VISUAL_ID, &format); ANativeWindow_setBuffersGeometry((EGLNativeWindowType)Host_GetRenderHandle(), 0, 0, format); int none, width, height; Host_GetRenderWindowSize(none, none, width, height); GLWin.width = width; GLWin.height = height; GLInterface->SetBackBufferDimensions(width, height); #endif return true; }