X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fcombined-update-render-controller.cpp;h=60ce74ce9b98c87a537ebd15fa7fee4d30d4c70d;hb=783e17c94e8adc4bd624031af599922c9eb1e0c6;hp=72aa9da0b5c846ffedd82dde016fee5fa6fe6147;hpb=d1bed93e9d4a31d67937c42ae0a4c511efe3cf92;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/adaptor/common/combined-update-render-controller.cpp b/dali/internal/adaptor/common/combined-update-render-controller.cpp index 72aa9da..60ce74c 100644 --- a/dali/internal/adaptor/common/combined-update-render-controller.cpp +++ b/dali/internal/adaptor/common/combined-update-render-controller.cpp @@ -96,6 +96,7 @@ CombinedUpdateRenderController::CombinedUpdateRenderController( AdaptorInternalS mEnvironmentOptions( environmentOptions ), mNotificationTrigger( adaptorInterfaces.GetProcessCoreEventsTrigger() ), mSleepTrigger( NULL ), + mPreRenderCallback( NULL ), mUpdateRenderThread( NULL ), mDefaultFrameDelta( 0.0f ), mDefaultFrameDurationMilliseconds( 0u ), @@ -137,6 +138,7 @@ CombinedUpdateRenderController::~CombinedUpdateRenderController() Stop(); + delete mPreRenderCallback; delete mSleepTrigger; } @@ -314,6 +316,19 @@ void CombinedUpdateRenderController::SetRenderRefreshRate( unsigned int numberOf LOG_EVENT( "mDefaultFrameDelta(%.6f), mDefaultFrameDurationMilliseconds(%lld), mDefaultFrameDurationNanoseconds(%lld)", mDefaultFrameDelta, mDefaultFrameDurationMilliseconds, mDefaultFrameDurationNanoseconds ); } +void CombinedUpdateRenderController::SetPreRenderCallback( CallbackBase* callback ) +{ + LOG_EVENT_TRACE; + LOG_EVENT( "Set PreRender Callback" ); + + ConditionalWait::ScopedLock updateLock( mUpdateRenderThreadWaitCondition ); + if( mPreRenderCallback ) + { + delete mPreRenderCallback; + } + mPreRenderCallback = callback; +} + /////////////////////////////////////////////////////////////////////////////////////////////////// // EVENT THREAD /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -502,6 +517,15 @@ void CombinedUpdateRenderController::UpdateRenderThread() ////////////////////////////// mRenderHelper.ConsumeEvents(); + if( mPreRenderCallback != NULL ) + { + bool keepCallback = CallbackBase::ExecuteReturn(*mPreRenderCallback); + if( ! keepCallback ) + { + delete mPreRenderCallback; + mPreRenderCallback = NULL; + } + } mRenderHelper.PreRender(); Integration::RenderStatus renderStatus;