winrt: Fix startup orientation handling
Calling QWinRTScreen::onOrientationChanged in the class constructor can lead to situation where QWinRTScreen is expected to be fully constructed. Moving the onOrientationChanged call to QWinRTScreen::initialize ensures that QWinRTScreen is fully constructed when it is called. Task-Id: QTBUG-49470 Change-Id: I52748f33a9011dec3a172c1a74023cad15aae38a Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
This commit is contained in:
parent
3dd6ac244f
commit
aecf3006bd
@ -507,11 +507,7 @@ QWinRTScreen::QWinRTScreen()
|
||||
hr = d->displayInformation->get_NativeOrientation(&displayOrientation);
|
||||
Q_ASSERT_SUCCEEDED(hr);
|
||||
d->nativeOrientation = static_cast<Qt::ScreenOrientation>(static_cast<int>(qtOrientationsFromNative(displayOrientation)));
|
||||
|
||||
// Set initial orientation & pixel density
|
||||
onDpiChanged(Q_NULLPTR, Q_NULLPTR);
|
||||
d->orientation = d->nativeOrientation;
|
||||
onOrientationChanged(Q_NULLPTR, Q_NULLPTR);
|
||||
|
||||
ComPtr<IApplicationViewStatics2> applicationViewStatics;
|
||||
hr = RoGetActivationFactory(HString::MakeReference(RuntimeClass_Windows_UI_ViewManagement_ApplicationView).Get(),
|
||||
@ -757,6 +753,8 @@ void QWinRTScreen::initialize()
|
||||
Q_ASSERT_SUCCEEDED(hr);
|
||||
hr = d->displayInformation->add_DpiChanged(Callback<DisplayInformationHandler>(this, &QWinRTScreen::onDpiChanged).Get(), &d->displayTokens[&IDisplayInformation::remove_DpiChanged]);
|
||||
Q_ASSERT_SUCCEEDED(hr);
|
||||
onDpiChanged(Q_NULLPTR, Q_NULLPTR);
|
||||
onOrientationChanged(Q_NULLPTR, Q_NULLPTR);
|
||||
onVisibilityChanged(nullptr, nullptr);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user