ui/winui/toolkit.cpp

branch
newapi
changeset 221
a82d9beaa94a
parent 213
7e39db525fd9
child 229
a952760955b4
--- a/ui/winui/toolkit.cpp	Tue Oct 17 21:50:48 2023 +0200
+++ b/ui/winui/toolkit.cpp	Thu Oct 19 18:30:19 2023 +0200
@@ -180,6 +180,7 @@
 }
 
 void ui_main() {
+	/*
 	init_apartment();
 	//Application::Start([](auto&&) {make<App>(); });
 
@@ -188,6 +189,28 @@
 		{
 			::winrt::make<::winrt::winui::implementation::App>();
 		});
+		*/
+	{
+		void (WINAPI * pfnXamlCheckProcessRequirements)();
+		auto module = ::LoadLibrary(L"Microsoft.ui.xaml.dll");
+		if (module)
+		{
+			pfnXamlCheckProcessRequirements = reinterpret_cast<decltype(pfnXamlCheckProcessRequirements)>(GetProcAddress(module, "XamlCheckProcessRequirements"));
+			if (pfnXamlCheckProcessRequirements)
+			{
+				(*pfnXamlCheckProcessRequirements)();
+			}
+
+			::FreeLibrary(module);
+		}
+	}
+
+	winrt::init_apartment(winrt::apartment_type::single_threaded);
+	::winrt::Microsoft::UI::Xaml::Application::Start(
+		[](auto&&)
+		{
+			::winrt::make<::winrt::winui::implementation::App>();
+		});
 }
 
 class UiWin {

mercurial