Fixed issue where UI Responsive events were not fired (#603)

* Fixed the WindowIdLog so that it is updated when a new WindowCreated event is fired

* Updated the windowidlog check in LogWindowCreated to use IsWindowIdInLog
This commit is contained in:
Stephanie Anderl 2019-07-26 11:51:01 -07:00 committed by GitHub
parent 60c5c39ee5
commit 8106691d7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 18 deletions

View File

@ -163,7 +163,7 @@ void ApplicationViewModel::OnModeChanged()
}
else
{
TraceLogger::GetInstance().LogWindowCreated(m_mode);
TraceLogger::GetInstance().LogWindowCreated(m_mode, ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread()));
}
RaisePropertyChanged(ClearMemoryVisibilityPropertyName);

View File

@ -104,25 +104,18 @@ namespace CalculatorApp
#pragma endregion
// return true if windowId is logged once else return false
bool TraceLogger::UpdateWindowIdLog(int windowId)
bool TraceLogger::IsWindowIdInLog(int windowId)
{
// Writer lock for the windowIdLog resource
reader_writer_lock::scoped_lock lock(s_traceLoggerLock);
if (windowIdLog.find(windowId) == windowIdLog.end())
if (find(windowIdLog.begin(), windowIdLog.end(), windowId) == windowIdLog.end())
{
return false;
}
if (windowIdLog[windowId] == false)
{
windowIdLog[windowId] = true;
return true;
}
else
{
return false;
}
}
void TraceLogger::LogVisualStateChanged(ViewMode mode, wstring_view state) const
{
@ -139,8 +132,14 @@ namespace CalculatorApp
LogLevel2Event(EVENT_NAME_VISUAL_STATE_CHANGED, fields);
}
void TraceLogger::LogWindowCreated(ViewMode mode) const
void TraceLogger::LogWindowCreated(ViewMode mode, int windowId)
{
// store windowId in windowIdLog which says we have logged mode for the present windowId.
if (!IsWindowIdInLog(windowId))
{
windowIdLog.push_back(windowId);
}
if (!GetTraceLoggingProviderEnabled())
return;

View File

@ -44,9 +44,9 @@ namespace CalculatorApp
void LogButtonUsage();
void LogDateCalculationModeUsed(bool AddSubtractMode);
void UpdateWindowCount(size_t windowCount = 0);
bool UpdateWindowIdLog(int windowId);
bool IsWindowIdInLog(int windowId);
void LogVisualStateChanged(CalculatorApp::Common::ViewMode mode, std::wstring_view state) const;
void LogWindowCreated(CalculatorApp::Common::ViewMode mode) const;
void LogWindowCreated(CalculatorApp::Common::ViewMode mode, int windowId);
void LogConverterInputReceived(CalculatorApp::Common::ViewMode mode) const;
void LogNavBarOpened() const;
@ -73,7 +73,7 @@ namespace CalculatorApp
winrt::Windows::Foundation::Diagnostics::LoggingChannel g_calculatorProvider;
std::vector<ButtonLog> buttonLog;
std::map<int, bool> windowIdLog;
std::vector<int> windowIdLog;
GUID sessionGuid;
size_t currentWindowCount = 0;

View File

@ -135,7 +135,7 @@ void Calculator::OnLoaded(_In_ Object ^, _In_ RoutedEventArgs ^)
WeakReference weakThis(this);
this->Dispatcher->RunAsync(
CoreDispatcherPriority::Normal, ref new DispatchedHandler([weakThis]() {
if (TraceLogger::GetInstance().UpdateWindowIdLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
if (TraceLogger::GetInstance().IsWindowIdInLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
{
auto refThis = weakThis.Resolve<Calculator>();
if (refThis != nullptr)

View File

@ -251,7 +251,7 @@ void MainPage::OnPageLoaded(_In_ Object ^, _In_ RoutedEventArgs ^ args)
// Delay load things later when we get a chance.
this->Dispatcher->RunAsync(
CoreDispatcherPriority::Normal, ref new DispatchedHandler([]() {
if (TraceLogger::GetInstance().UpdateWindowIdLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
if (TraceLogger::GetInstance().IsWindowIdInLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
{
AppLifecycleLogger::GetInstance().LaunchUIResponsive();
AppLifecycleLogger::GetInstance().LaunchVisibleComplete();