Removing dependencies on MainWindow.

This commit is contained in:
Ben Vanik
2015-07-01 08:02:22 -07:00
parent 4732378ba9
commit 9efccc5f4a
17 changed files with 123 additions and 98 deletions

View File

@@ -42,21 +42,22 @@ enum Commands {
const std::wstring kBaseTitle = L"xenia";
MainWindow::MainWindow(Emulator* emulator)
: PlatformWindow(kBaseTitle),
: PlatformWindow(&loop_, kBaseTitle),
emulator_(emulator),
main_menu_(MenuItem::Type::kNormal),
fullscreen_(false) {}
main_menu_(MenuItem::Type::kNormal) {}
MainWindow::~MainWindow() = default;
void MainWindow::Start() {
std::unique_ptr<PlatformWindow> MainWindow::Create(Emulator* emulator) {
std::unique_ptr<MainWindow> main_window(new MainWindow(emulator));
xe::threading::Fence fence;
loop_.Post([&]() {
main_window->loop()->Post([&main_window, &fence]() {
xe::threading::set_name("Win32 Loop");
xe::Profiler::ThreadEnter("Win32 Loop");
if (!Initialize()) {
if (!main_window->Initialize()) {
XEFATAL("Failed to initialize main window");
exit(1);
}
@@ -65,6 +66,8 @@ void MainWindow::Start() {
});
fence.Wait();
return std::unique_ptr<PlatformWindow>(main_window.release());
}
bool MainWindow::Initialize() {
@@ -98,8 +101,8 @@ bool MainWindow::Initialize() {
} break;
case 0x1B: { // VK_ESCAPE
// Allow users to escape fullscreen (but not enter it).
if (fullscreen_) {
ToggleFullscreen();
if (is_fullscreen()) {
ToggleFullscreen(false);
}
} break;
@@ -187,7 +190,7 @@ bool MainWindow::Initialize() {
}
main_menu_.AddChild(std::move(help_menu));
SetMenu(&main_menu_);
set_menu(&main_menu_);
Resize(1280, 720);
@@ -204,11 +207,6 @@ void MainWindow::UpdateTitle() {
set_title(title);
}
void MainWindow::ToggleFullscreen() {
fullscreen_ = !fullscreen_;
SetFullscreen(fullscreen_);
}
void MainWindow::OnClose() {
loop_.Quit();
@@ -250,7 +248,7 @@ void MainWindow::OnCommand(int id) {
} break;
case IDC_WINDOW_FULLSCREEN: {
ToggleFullscreen();
ToggleFullscreen(!is_fullscreen());
} break;
case IDC_HELP_WEBSITE: {