コード例 #1
0
ファイル: adaptor-impl.cpp プロジェクト: Tarnyko/dali-adaptor
void Adaptor::ProcessCoreEventsFromIdle()
{
  ProcessCoreEvents();

  // the idle handle automatically un-installs itself
  mNotificationOnIdleInstalled = false;
}
コード例 #2
0
ファイル: adaptor-impl.cpp プロジェクト: Tarnyko/dali-adaptor
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();
  }
}
コード例 #3
0
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);
}
コード例 #4
0
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();
  }
}
コード例 #5
0
ファイル: adaptor-impl.cpp プロジェクト: Tarnyko/dali-adaptor
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);
}
コード例 #6
0
ファイル: adaptor-impl.cpp プロジェクト: Tarnyko/dali-adaptor
// 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
  }
}