mOwnSurface(false),
mIsImeWindowSurface(false),
mNeedWindowRotationAcknowledgement(false),
- mIsWindowOrientationChanging(false)
+ mIsWindowOrientationChanging(false),
+ mIsFrontBufferRendering(false),
+ mIsFrontBufferRenderingChanged(false)
{
DALI_LOG_INFO(gWindowRenderSurfaceLogFilter, Debug::Verbose, "Creating Window\n");
Initialize(surface);
// Create the EGL window
EGLNativeWindowType window = mWindowBase->CreateEglWindow(width, height);
+ if(mWindowBase->GetType() == WindowType::IME)
+ {
+ InitializeImeSurface();
+ }
+
auto eglGraphics = static_cast<EglGraphics*>(mGraphics);
Internal::Adaptor::EglImplementation& eglImpl = eglGraphics->GetEglImplementation();
mPositionSize.width = surfaceSize.width;
mPositionSize.height = surfaceSize.height;
- DALI_LOG_RELEASE_INFO("Window is resizing, (%d, %d), [%d x %d]\n", mPositionSize.x, mPositionSize.y, mPositionSize.width, mPositionSize.height);
+ DALI_LOG_RELEASE_INFO("Window is resizing, (%d, %d), [%d x %d], IMEWindow [%d]\n", mPositionSize.x, mPositionSize.y, mPositionSize.width, mPositionSize.height, mIsImeWindowSurface);
// Window rotate or screen rotate
if(mIsWindowOrientationChanging || isScreenOrientationChanging)
SetFullSwapNextFrame();
}
+ // When mIsFrontBufferRendering is not equal to mWindowBase's
+ if(mIsFrontBufferRenderingChanged)
+ {
+ mIsFrontBufferRenderingChanged = false;
+ mWindowBase->SetEglWindowFrontBufferMode(mIsFrontBufferRendering);
+ SetFullSwapNextFrame();
+ }
+
SetBufferDamagedRects(damagedRects, clippingRect);
if(scene)
void WindowRenderSurface::InitializeImeSurface()
{
- mIsImeWindowSurface = true;
- if(!mPostRenderTrigger)
+ if(!mIsImeWindowSurface)
{
- mPostRenderTrigger = std::unique_ptr<TriggerEventInterface>(TriggerEventFactory::CreateTriggerEvent(MakeCallback(this, &WindowRenderSurface::ProcessPostRender),
- TriggerEventInterface::KEEP_ALIVE_AFTER_TRIGGER));
+ mIsImeWindowSurface = true;
+ if(!mPostRenderTrigger)
+ {
+ mPostRenderTrigger = std::unique_ptr<TriggerEventInterface>(TriggerEventFactory::CreateTriggerEvent(MakeCallback(this, &WindowRenderSurface::ProcessPostRender),
+ TriggerEventInterface::KEEP_ALIVE_AFTER_TRIGGER));
+
+ }
}
}
}
}
+void WindowRenderSurface::SetFrontBufferRendering(bool enable)
+{
+ if(mIsFrontBufferRendering != enable)
+ {
+ mIsFrontBufferRendering = enable;
+ mIsFrontBufferRenderingChanged = !mIsFrontBufferRenderingChanged;
+ }
+}
+
} // namespace Adaptor
} // namespace Internal