void Adaptor::SurfaceResized( const PositionSize& positionSize ) { PositionSize old = mSurface->GetPositionSize(); // Called by an application, when it has resized a window outside of Dali. // The EGL driver automatically detects X Window resize calls, and resizes // the EGL surface for us. mSurface->MoveResize( positionSize ); if(old.width != positionSize.width || old.height != positionSize.height) { SurfaceSizeChanged(positionSize); } }
void Adaptor::ReplaceSurface( Any nativeWindow, RenderSurface& surface ) { mNativeWindow = nativeWindow; mSurface = &surface; SurfaceSizeChanged(mSurface->GetPositionSize()); // flush the event queue to give update and render threads chance // to start processing messages for new camera setup etc as soon as possible ProcessCoreEvents(); // this method blocks until the render thread has completed the replace. mThreadController->ReplaceSurface(mSurface); }
void Adaptor::ReplaceSurface( Dali::RenderSurface& surface ) { // adaptor implementation needs the implementation of RenderSurface* internalSurface = dynamic_cast<Internal::Adaptor::RenderSurface*>( &surface ); DALI_ASSERT_ALWAYS( internalSurface && "Incorrect surface" ); mSurface = internalSurface; SurfaceSizeChanged( internalSurface->GetPositionSize() ); // flush the event queue to give update and render threads chance // to start processing messages for new camera setup etc as soon as possible ProcessCoreEvents(); // this method is synchronous mUpdateRenderController->ReplaceSurface(internalSurface); }
bool Adaptor::MoveResize( const PositionSize& positionSize ) { PositionSize old = mSurface->GetPositionSize(); // just resize the surface. The driver should automatically resize the egl Surface (untested) // EGL Spec says : EGL window surfaces need to be resized when their corresponding native window // is resized. Implementations typically use hooks into the OS and native window // system to perform this resizing on demand, transparently to the client. mSurface->MoveResize( positionSize ); if(old.width != positionSize.width || old.height != positionSize.height) { SurfaceSizeChanged(positionSize); } return true; }