summaryrefslogtreecommitdiffstats
path: root/src/gui/s60framework/qs60mainappui.cpp
diff options
context:
space:
mode:
authorJani Hautakangas <jani.hautakangas@nokia.com>2011-06-16 11:06:36 +0300
committerJani Hautakangas <jani.hautakangas@nokia.com>2011-06-17 09:57:55 +0300
commitf1d0c5bbd4a33bb0f6398915d11dc93dc659ecf6 (patch)
tree661fa5d86b3b48688da3e85f6fc50d028fd298e0 /src/gui/s60framework/qs60mainappui.cpp
parentbe681e71510de948dfc32a647ecef5def6c01118 (diff)
Remove unnecessary resizes during orientation change
Orientation change causes unnecessary resize to top level window on Symbian. This causes recreation of EGL surfaces which is not wanted. Task-number: QTBUG-19911 Reviewed-by: Sami Merila
Diffstat (limited to 'src/gui/s60framework/qs60mainappui.cpp')
-rw-r--r--src/gui/s60framework/qs60mainappui.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gui/s60framework/qs60mainappui.cpp b/src/gui/s60framework/qs60mainappui.cpp
index 4f08fe2620..e2ec78c84b 100644
--- a/src/gui/s60framework/qs60mainappui.cpp
+++ b/src/gui/s60framework/qs60mainappui.cpp
@@ -315,7 +315,21 @@ TRect QS60MainAppUi::ApplicationRect() const
*/
void QS60MainAppUi::HandleScreenDeviceChangedL()
{
+ // This function triggers AppUi relayout which also generates
+ // HandleStatusPaneSizeChange(). We don't want to handle
+ // status pane resizes at this point because it causes
+ // Qt window resize and thus EGL surface resize in the middle of
+ // incomplete layout process causing unnecessary overhead.
+ // To prevent status pane resize handling while layout is still
+ // in progress, we guard relayouting with handleStatusPaneResizeNotifications
+ // flag. QSymbianControl checks this flag before doing Qt window
+ // resize due to status pane change.
+ // Eventually when layout is ready, Symbian framework calls
+ // HandleResourceChangeL(KEikDynamicLayoutVariantSwitch) which triggers
+ // resize to Qt window and to its EGL surface.
+ S60->handleStatusPaneResizeNotifications = false;
QS60MainAppUiBase::HandleScreenDeviceChangedL();
+ S60->handleStatusPaneResizeNotifications = true;
}
/*!