void Adaptor::ProcessCoreEventsFromIdle() { ProcessCoreEvents(); // the idle handle automatically un-installs itself mNotificationOnIdleInstalled = false; }
void Adaptor::Start() { // it doesn't support restart after stop at this moment // to support restarting, need more testing if( READY != mState ) { return; } // Start the callback manager mCallbackManager->Start(); // create event handler mEventHandler = new EventHandler( mSurface, *this, *mGestureManager, *this, mDragAndDropDetector ); if( mDeferredRotationObserver != NULL ) { mEventHandler->SetRotationObserver(mDeferredRotationObserver); mDeferredRotationObserver = NULL; } // guarantee map the surface before starting render-thread. mSurface->Map(); // NOTE: dpi must be set before starting the render thread // use default or command line settings if not run on device #ifdef __arm__ // set the DPI value for font rendering unsigned int dpiHor, dpiVer; dpiHor = dpiVer = 0; mSurface->GetDpi(dpiHor, dpiVer); // tell core about the value mCore->SetDpi(dpiHor, dpiVer); #else mCore->SetDpi(mHDpi, mVDpi); #endif // Tell the core the size of the surface just before we start the render-thread PositionSize size = mSurface->GetPositionSize(); mCore->SurfaceResized( size.width, size.height ); // Start the update & render threads mUpdateRenderController->Start(); mState = RUNNING; ProcessCoreEvents(); // Ensure any startup messages are processed. if ( !mFeedbackController ) { // Start sound & haptic feedback mFeedbackController = new FeedbackController( *mDaliFeedbackPlugin ); } for ( ObserverContainer::iterator iter = mObservers.begin(), endIter = mObservers.end(); iter != endIter; ++iter ) { (*iter)->OnStart(); } }
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::Start() { // it doesn't support restart after stop at this moment // to support restarting, need more testing if( READY != mState ) { return; } // Start the callback manager mCallbackManager->Start(); // create event handler mEventHandler = new EventHandler( mSurface, *this, *mGestureManager, *this, mDragAndDropDetector ); if( mDeferredRotationObserver != NULL ) { mEventHandler->SetRotationObserver(mDeferredRotationObserver); mDeferredRotationObserver = NULL; } unsigned int dpiHor, dpiVer; dpiHor = dpiVer = 0; Dali::DisplayConnection::GetDpi(dpiHor, dpiVer); // tell core about the DPI value mCore->SetDpi(dpiHor, dpiVer); // set the DPI value for font rendering FontClient fontClient = FontClient::Get(); fontClient.SetDpi( dpiHor, dpiVer ); // Tell the core the size of the surface just before we start the render-thread PositionSize size = mSurface->GetPositionSize(); mCore->SurfaceResized( size.width, size.height ); // Initialize the thread controller mThreadController->Initialize(); mState = RUNNING; ProcessCoreEvents(); // Ensure any startup messages are processed. for ( ObserverContainer::iterator iter = mObservers.begin(), endIter = mObservers.end(); iter != endIter; ++iter ) { (*iter)->OnStart(); } }
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); }
// Dali::Internal::Adaptor::Adaptor::Resume void Adaptor::Resume() { // Only resume the adaptor if we are in the suspended state. if( PAUSED == mState ) { mCore->Resume(); mUpdateRenderController->Resume(); mState = RUNNING; // Reset the event handler when adaptor resumed if( mEventHandler ) { mEventHandler->Reset(); } // Inform observers that we have resumed. for( ObserverContainer::iterator iter = mObservers.begin(), endIter = mObservers.end(); iter != endIter; ++iter ) { (*iter)->OnResume(); } ProcessCoreEvents(); // Ensure any outstanding messages are processed } }