diff --git a/starboard/shared/starboard/application.cc b/starboard/shared/starboard/application.cc index 10d97fdcf9cd..cdc393250ae0 100644 --- a/starboard/shared/starboard/application.cc +++ b/starboard/shared/starboard/application.cc @@ -410,6 +410,10 @@ bool Application::DispatchAndDelete(Application::Event* event) { } bool Application::HandleEventAndUpdateState(Application::Event* event) { + // Don't accept any events in kStateStopped state + if (state_ == kStateStopped) + return true; + // Ensure the event is deleted unless it is released. scoped_ptr scoped_event(event); diff --git a/starboard/shared/uwp/application_uwp.cc b/starboard/shared/uwp/application_uwp.cc index b0f18dced91e..944d2d71117e 100644 --- a/starboard/shared/uwp/application_uwp.cc +++ b/starboard/shared/uwp/application_uwp.cc @@ -1029,8 +1029,9 @@ void ApplicationUwp::Inject(Application::Event* event) { RunInMainThreadAsync([this, event]() { bool result = DispatchAndDelete(event); if (!result) { - NetLogFlushThenClose(); - CoreApplication::Exit(); + // Release ExtendedResourcesManager. This lets + // ApplicationUwp::InternalMain() to return + ExtendedResourcesManager::GetInstance()->Quit(); } }); } @@ -1332,7 +1333,6 @@ int InternalMain() { extended_resources_manager.Run(); NetLogFlushThenClose(); - CoreApplication::Exit(); MFShutdown(); WSACleanup();