X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fwindow-system%2Fcommon%2Fwindow-render-surface.cpp;h=0d6dbdb3c4a1b9ebeb5017e95c13483f9ebfd03e;hb=738fd571c706537f8897163684fcb9d3fd9d535e;hp=1f9dcfcbe6a87ac64c81b03101550ea7973057c4;hpb=edbe893196ec3ccb6ba9bc0249d40bd4875da353;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/window-system/common/window-render-surface.cpp b/dali/internal/window-system/common/window-render-surface.cpp index 1f9dcfc..0d6dbdb 100644 --- a/dali/internal/window-system/common/window-render-surface.cpp +++ b/dali/internal/window-system/common/window-render-surface.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -175,7 +176,9 @@ WindowRenderSurface::WindowRenderSurface(Dali::PositionSize positionSize, Any su 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); @@ -343,6 +346,11 @@ void WindowRenderSurface::CreateSurface() // Create the EGL window EGLNativeWindowType window = mWindowBase->CreateEglWindow(width, height); + if(mWindowBase->GetType() == WindowType::IME) + { + InitializeImeSurface(); + } + auto eglGraphics = static_cast(mGraphics); Internal::Adaptor::EglImplementation& eglImpl = eglGraphics->GetEglImplementation(); @@ -546,7 +554,7 @@ bool WindowRenderSurface::PreRender(bool resizingSurface, const std::vectorSetEglWindowFrontBufferMode(mIsFrontBufferRendering); + SetFullSwapNextFrame(); + } + SetBufferDamagedRects(damagedRects, clippingRect); if(scene) @@ -705,11 +721,15 @@ Integration::StencilBufferAvailable WindowRenderSurface::GetStencilBufferRequire void WindowRenderSurface::InitializeImeSurface() { - mIsImeWindowSurface = true; - if(!mPostRenderTrigger) + if(!mIsImeWindowSurface) { - mPostRenderTrigger = std::unique_ptr(TriggerEventFactory::CreateTriggerEvent(MakeCallback(this, &WindowRenderSurface::ProcessPostRender), - TriggerEventInterface::KEEP_ALIVE_AFTER_TRIGGER)); + mIsImeWindowSurface = true; + if(!mPostRenderTrigger) + { + mPostRenderTrigger = std::unique_ptr(TriggerEventFactory::CreateTriggerEvent(MakeCallback(this, &WindowRenderSurface::ProcessPostRender), + TriggerEventInterface::KEEP_ALIVE_AFTER_TRIGGER)); + + } } } @@ -763,9 +783,7 @@ void WindowRenderSurface::ProcessFrameCallback() { if(!iter->fileDescriptorMonitor) { - iter->fileDescriptorMonitor = std::unique_ptr(new FileDescriptorMonitor(iter->fileDescriptor, - MakeCallback(this, &WindowRenderSurface::OnFileDescriptorEventDispatched), - FileDescriptorMonitor::FD_READABLE)); + iter->fileDescriptorMonitor = Dali::Internal::Adaptor::GetSystemFactory()->CreateFileDescriptorMonitor(iter->fileDescriptor, MakeCallback(this, &WindowRenderSurface::OnFileDescriptorEventDispatched), FileDescriptorMonitor::FD_READABLE); DALI_LOG_RELEASE_INFO("WindowRenderSurface::ProcessFrameCallback: Add handler [%d]\n", iter->fileDescriptor); } @@ -936,6 +954,15 @@ void WindowRenderSurface::SwapBuffers(const std::vector>& damagedRects } } +void WindowRenderSurface::SetFrontBufferRendering(bool enable) +{ + if(mIsFrontBufferRendering != enable) + { + mIsFrontBufferRendering = enable; + mIsFrontBufferRenderingChanged = !mIsFrontBufferRenderingChanged; + } +} + } // namespace Adaptor } // namespace Internal