+private:
+
+ struct FrameCallbackInfo
+ {
+ FrameCallbackInfo( Dali::Integration::Scene::FrameCallbackContainer& callbackList, int fd )
+ : callbacks(),
+ fileDescriptorMonitor(),
+ fileDescriptor( fd )
+ {
+ // Transfer owership of the CallbackBase
+ for( auto&& iter : callbackList )
+ {
+ callbacks.push_back( std::make_pair( std::move( iter.first ), iter.second ) );
+ }
+ }
+
+ ~FrameCallbackInfo()
+ {
+ // Delete FileDescriptorMonitor before close fd.
+ fileDescriptorMonitor.release();
+ close( fileDescriptor );
+ }
+
+ Dali::Integration::Scene::FrameCallbackContainer callbacks;
+ std::unique_ptr< FileDescriptorMonitor > fileDescriptorMonitor;
+ int fileDescriptor;
+ };
+
+ using FrameCallbackInfoContainer = std::vector< std::unique_ptr< FrameCallbackInfo > >;
+