mScreenRotationFinished(true),
mResizeFinished(true),
mDefaultScreenRotationAvailable(false),
- mIsImeWindowSurface(false)
+ mIsImeWindowSurface(false),
+ mNeedWindowRotationAcknowledgement(false)
{
DALI_LOG_INFO(gWindowRenderSurfaceLogFilter, Debug::Verbose, "Creating Window\n");
Initialize(surface);
if(!mPostRenderTrigger)
{
mPostRenderTrigger = std::unique_ptr<TriggerEventInterface>(TriggerEventFactory::CreateTriggerEvent(MakeCallback(this, &WindowRenderSurface::ProcessPostRender),
- TriggerEventInterface::KEEP_ALIVE_AFTER_TRIGGER));
+ TriggerEventInterface::KEEP_ALIVE_AFTER_TRIGGER));
}
mPositionSize.width = width;
GlImplementation& mGLES = eglGraphics->GetGlesInterface();
mGLES.PostRender();
- if((mIsResizing && !mWindowRotationFinished) || mIsImeWindowSurface)
+ bool needWindowRotationCompleted = false;
+
+ if(!mWindowRotationFinished)
+ {
+ if(mNeedWindowRotationAcknowledgement)
+ {
+ Dali::Integration::Scene scene = mScene.GetHandle();
+ if(scene)
+ {
+ if(scene.IsRotationCompletedAcknowledgementSet())
+ {
+ needWindowRotationCompleted = true;
+ }
+ }
+ }
+ else
+ {
+ if(mIsResizing)
+ {
+ needWindowRotationCompleted = true;
+ }
+ }
+ }
+
+ if(needWindowRotationCompleted || mIsImeWindowSurface)
{
if(mThreadSynchronization)
{
}
}
+void WindowRenderSurface::SetNeedsRotationCompletedAcknowledgement(bool needAcknowledgement)
+{
+ mNeedWindowRotationAcknowledgement = needAcknowledgement;
+}
+
void WindowRenderSurface::OutputTransformed()
{
int screenRotationAngle = mWindowBase->GetScreenRotationAngle();