*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
+#include <dali/public-api/signals/callback.h>
// INTERNAL INCLUDES
#include <base/interfaces/trigger-event-interface.h>
/**
* @brief Create a new concrete implementation of the event trigger interface.
- * @param functor the function to call when interface->Trigger() is called
+ * @param callback called when interface->Trigger() is called
* @return pointer to a new trigger event
+ * @note Ownership of callback should be taken over by deriving classes
*/
- virtual TriggerEventInterface* CreateTriggerEvent( boost::function<void()> functor,
+ virtual TriggerEventInterface* CreateTriggerEvent( CallbackBase* callback,
TriggerEventInterface::Options options = TriggerEventInterface::NONE) = 0;
/**
* @brief destroy a trigger event
// CLASS HEADER
#include "abort-handler.h"
+// EXTERNAL INCLUDES
+#include <cstring>
+
namespace Dali
{
namespace Internal
AbortHandler* AbortHandler::gInstance(NULL);
-AbortHandler::AbortHandler(boost::function<void(void)> callback)
+AbortHandler::AbortHandler( CallbackBase* callback )
: mSignalMask( 0 ),
mCallback( callback )
{
AbortHandler::~AbortHandler()
{
+ delete mCallback;
+
int signum;
for ( signum = 1; signum < _NSIG; signum++ )
{
{
if( gInstance->mCallback )
{
- gInstance->mCallback();
+ CallbackBase::Execute( *gInstance->mCallback );
}
}
}
// EXTERNAL INCLUDES
#include <signal.h>
+#include <dali/public-api/signals/callback.h>
// INTERNAL INCLUDES
#include "application.h"
/**
* Constructor
* @param[in] callback The function to call when abort signals occur
+ * @note The ownership of callback is passed onto this class.
*/
- AbortHandler(boost::function<void(void)> callback);
+ AbortHandler( CallbackBase* callback );
/**
* Destructor
SignalHandlerFuncPtr mSignalOldHandlers[_NSIG-1];
unsigned long long mSignalMask;
- boost::function<void(void)> mCallback;
+ CallbackBase* mCallback;
static AbortHandler* gInstance;
};
mObjectProfiler = new ObjectProfiler();
- mNotificationTrigger = new TriggerEvent( boost::bind(&Adaptor::ProcessCoreEvents, this) );
+ mNotificationTrigger = new TriggerEvent( MakeCallback( this, &Adaptor::ProcessCoreEvents ) );
mVSyncMonitor = new VSyncMonitor;
return mTtsPlayers[mode];
}
-bool Adaptor::AddIdle(boost::function<void(void)> callBack)
+bool Adaptor::AddIdle( CallbackBase* callback )
{
bool idleAdded(false);
// Only add an idle if the Adaptor is actually running
if( RUNNING == mState )
{
- idleAdded = mCallbackManager->AddCallback(callBack, CallbackManager::IDLE_PRIORITY);
+ idleAdded = mCallbackManager->AddCallback( callback, CallbackManager::IDLE_PRIORITY );
}
return idleAdded;
}
-bool Adaptor::CallFromMainLoop(boost::function<void(void)> callBack)
+bool Adaptor::CallFromMainLoop( CallbackBase* callback )
{
bool callAdded(false);
// Only allow the callback if the Adaptor is actually running
if ( RUNNING == mState )
{
- callAdded = mCallbackManager->AddCallback(callBack, CallbackManager::DEFAULT_PRIORITY);
+ callAdded = mCallbackManager->AddCallback( callback, CallbackManager::DEFAULT_PRIORITY );
}
return callAdded;
// and we haven't installed the idle notification
if( ( ! mNotificationOnIdleInstalled ) && ( RUNNING == mState ) )
{
- mNotificationOnIdleInstalled = AddIdle( boost::bind( &Adaptor::ProcessCoreEventsFromIdle, this ) );
+ mNotificationOnIdleInstalled = AddIdle( MakeCallback( this, &Adaptor::ProcessCoreEventsFromIdle ) );
}
}
*/
// EXTERNAL INCLUDES
-#include <boost/bind.hpp>
-#include <boost/function.hpp>
-#include <boost/thread.hpp>
-
#include <dali/public-api/common/vector-wrapper.h>
#include <dali/public-api/common/view-mode.h>
#include <dali/public-api/math/rect.h>
+#include <dali/public-api/signals/callback.h>
#include <dali/integration-api/render-controller.h>
// INTERNAL INCLUDES
/**
* @copydoc Dali::Adaptor::AddIdle()
*/
- virtual bool AddIdle( boost::function<void(void)> callBack );
+ virtual bool AddIdle( CallbackBase* callback );
/**
* @copydoc Internal::Framework::CallFromMainLoop()
*/
- virtual bool CallFromMainLoop(boost::function<void(void)> callBack);
+ virtual bool CallFromMainLoop( CallbackBase* callback );
public:
mImpl->Stop();
}
-bool Adaptor::AddIdle( boost::function<void(void)> callBack )
+bool Adaptor::AddIdle( CallbackBase* callback )
{
- return mImpl->AddIdle(callBack);
+ return mImpl->AddIdle( callback );
}
Adaptor::AdaptorSignalType& Adaptor::ResizedSignal()
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
-
+#include <dali/public-api/signals/callback.h>
#include <dali/public-api/signals/dali-signal.h>
#include <dali/public-api/math/rect.h>
#include <dali/public-api/events/touch-event.h>
*
* @param[in] callBack The function to call.
* @return true if added successfully, false otherwise
+ *
+ * @note Ownership of the callback is passed onto this class.
*/
- bool AddIdle( boost::function<void(void)> callBack );
+ bool AddIdle( CallbackBase* callback );
/**
* @brief Get the render surface the adaptor is using to render to.
void Application::Quit()
{
// Actually quit the application.
- AddIdle(boost::bind(&Application::QuitFromMainLoop, this));
+ AddIdle( MakeCallback( this, &Application::QuitFromMainLoop ) );
}
void Application::QuitFromMainLoop()
void Application::OnInit()
{
- mFramework->AddAbortCallback(boost::bind(&Application::QuitFromMainLoop, this));
+ mFramework->AddAbortCallback( MakeCallback( this, &Application::QuitFromMainLoop ) );
CreateWindow();
CreateAdaptor();
mResizeSignal.Emit( application );
}
-bool Application::AddIdle(boost::function<void(void)> callBack)
+bool Application::AddIdle( CallbackBase* callback )
{
- return mAdaptor->AddIdle(callBack);
+ return mAdaptor->AddIdle( callback );
}
Dali::Adaptor& Application::GetAdaptor()
*/
// EXTERNAL INCLUDES
-#include <boost/bind.hpp>
-#include <boost/function.hpp>
-#include <boost/thread.hpp>
-
#include <dali/public-api/math/rect.h>
#include <dali/public-api/object/base-object.h>
/**
* @copydoc Dali::Application::AddIdle()
*/
- bool AddIdle(boost::function<void(void)> callBack);
+ bool AddIdle( CallbackBase* callback );
/**
* @copydoc Dali::Application::GetAdaptor();
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
#include <dali/public-api/common/dali-common.h>
+#include <dali/public-api/signals/callback.h>
namespace Dali
{
public:
- typedef boost::function<void(void)> Callback; ///< Callback typedef
-
/**
* Determines the priority of the call back
*/
* @param priority call back priority
* @return true on success
*/
- virtual bool AddCallback( Callback callback, Priority priority ) = 0;
+ virtual bool AddCallback( CallbackBase* callback, Priority priority ) = 0;
/**
* Adds a call back asynchronously to handle an event.
* @param callback custom call back function
* @return true on success
*/
- virtual bool AddEventCallback( Callback callback, int type, EventControl control ) = 0;
+ virtual bool AddEventCallback( CallbackBase* callback, int type, EventControl control ) = 0;
/**
* Starts the callback manager.
/**
* Constructor
*/
- CallbackData(CallbackManager::Callback callback, CallbackType type):
- mCallback(callback),
+ CallbackData( CallbackBase* callback, CallbackType type )
+ : mCallback(callback),
mType(type),
mIdler(NULL),
mPriority(CallbackManager::DEFAULT_PRIORITY),
mExecute(true),
mEventHandler(NULL),
mEvent(0),
- mEventControl(CallbackManager::CALLBACK_PASS_ON)
+ mEventControl(CallbackManager::CALLBACK_PASS_ON),
+ mRemoveFromContainerFunction(NULL)
{
}
+ /**
+ * Destructor
+ */
+ ~CallbackData()
+ {
+ delete mCallback;
+ delete mRemoveFromContainerFunction;
+ }
+
// Data
- CallbackManager::Callback mCallback; ///< call back
+ CallbackBase* mCallback; ///< call back
CallbackType mType; ///< type of call back
// Data for idle / default call backs
int mEvent; ///< ecore event id
CallbackManager::EventControl mEventControl; ///< event control
- // function typedef to remove the callbackdata from the callback container
- typedef boost::function<void(CallbackData *)> RemoveFromContainerFunction;
-
- RemoveFromContainerFunction mRemoveFromContainerFunction;
+ CallbackBase* mRemoveFromContainerFunction; ///< Called to remove the callbackdata from the callback container
};
namespace
CallbackData *callbackData = static_cast<CallbackData *>(data);
// remove callback data from the container first in case our callback tries to modify the container
- callbackData->mRemoveFromContainerFunction(callbackData);
+ CallbackBase::Execute( *callbackData->mRemoveFromContainerFunction, callbackData );
// run the function
- callbackData->mCallback();
+ CallbackBase::Execute( *callbackData->mCallback );
// remove the idle call back
ecore_idler_del(callbackData->mIdler);
DALI_ASSERT_ALWAYS( type == callbackData->mEvent && "Callback data does not match event" );
// remove callback data from the container first in case our callback tries to modify the container
- callbackData->mRemoveFromContainerFunction(callbackData);
+ CallbackBase::Execute( *callbackData->mRemoveFromContainerFunction, callbackData );
// run the call back
- callbackData->mCallback();
+ CallbackBase::Execute( *callbackData->mCallback );
Eina_Bool returnVal;
// run the call back now, then delete it from the container
if ( callbackData->mExecute )
{
- callbackData->mCallback();
+ CallbackBase::Execute( *callbackData->mCallback );
}
- callbackData->mRemoveFromContainerFunction(callbackData);
+ CallbackBase::Execute( *callbackData->mRemoveFromContainerFunction, callbackData );
delete callbackData;
}
}
ecore_main_loop_thread_safe_call_sync(MainRemoveAllCallback, this);
}
-bool EcoreCallbackManager::AddCallback(Callback callback, Priority priority)
+bool EcoreCallbackManager::AddCallback(CallbackBase* callback, Priority priority)
{
bool added(false);
callbackData->mPriority = priority;
- callbackData->mRemoveFromContainerFunction = boost::bind(&EcoreCallbackManager::RemoveCallbackFromContainer, this,_1);
+ callbackData->mRemoveFromContainerFunction = MakeCallback( this, &EcoreCallbackManager::RemoveCallbackFromContainer );
{ // acquire lock to access container
boost::unique_lock< boost::mutex > lock( mMutex );
return added;
}
-bool EcoreCallbackManager::AddEventCallback(Callback callback, int type, EventControl control)
+bool EcoreCallbackManager::AddEventCallback(CallbackBase* callback, int type, EventControl control)
{
bool added(false);
callbackData->mEventControl = control;
callbackData->mEvent = type;
- callbackData->mRemoveFromContainerFunction = boost::bind(&EcoreCallbackManager::RemoveCallbackFromContainer, this,_1);
+ callbackData->mRemoveFromContainerFunction = MakeCallback( this, &EcoreCallbackManager::RemoveCallbackFromContainer );
{ // acquire lock to access container
boost::unique_lock< boost::mutex > lock( mMutex );
/**
* @copydoc CallbackManager::AddCallback()
*/
- virtual bool AddCallback(Callback callback, Priority priority);
+ virtual bool AddCallback(CallbackBase* callback, Priority priority);
/**
* @copydoc CallbackManager::AddEventCallback()
*/
- virtual bool AddEventCallback(Callback callback, int type, EventControl control);
+ virtual bool AddEventCallback(CallbackBase* callback, int type, EventControl control);
/**
* @copydoc CallbackManager::Start()
#include "gesture-manager.h"
// EXTERNAL INCLUDES
-#include <boost/bind.hpp>
-
#include <dali/integration-api/debug.h>
// INTERNAL INCLUDES
struct FileDescriptorMonitor::Impl
{
// Construction
- Impl(int fileDescriptor, boost::function<void()> functor)
- : mFileDescriptor(fileDescriptor),
- mFunctor(functor),
- mHandler(NULL)
+ Impl( int fileDescriptor, CallbackBase* callback )
+ : mFileDescriptor( fileDescriptor ),
+ mCallback( callback ),
+ mHandler( NULL )
{
}
+ ~Impl()
+ {
+ delete mCallback;
+ }
+
// Data
int mFileDescriptor;
- boost::function<void()> mFunctor;
+ CallbackBase* mCallback;
Ecore_Fd_Handler* mHandler;
// Static Methods
{
Impl* impl = reinterpret_cast<Impl*>(data);
- impl->mFunctor();
+ CallbackBase::Execute( *impl->mCallback );
return ECORE_CALLBACK_RENEW;
}
};
-FileDescriptorMonitor::FileDescriptorMonitor(int fileDescriptor, boost::function<void()> functor)
+FileDescriptorMonitor::FileDescriptorMonitor( int fileDescriptor, CallbackBase* callback )
{
- mImpl = new Impl(fileDescriptor, functor);
+ mImpl = new Impl(fileDescriptor, callback);
if (fileDescriptor >= 0)
{
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
+#include <dali/public-api/signals/callback.h>
namespace Dali
{
{
/**
- * Monitors the given file descriptor and whenever anything is written to it, it calls
- * the given boost function.
+ * @brief Monitors the given file descriptor and whenever anything is written to it, the provided
+ * callback is called
*/
class FileDescriptorMonitor
{
/**
* Constructor
* @param[in] fileDescriptor The file descriptor to monitor
- * @param[in] functor The function to call when anything is written to the file descriptor
+ * @param[in] callback Called when anything is written to the file descriptor
+ * @note The ownership of callback is taken by this class.
*/
- FileDescriptorMonitor(int fileDescriptor, boost::function<void()> functor);
+ FileDescriptorMonitor( int fileDescriptor, CallbackBase* callback );
/**
* Destructor
// EXTERNAL INCLUDES
#include <string>
-#include <boost/function.hpp>
+#include <dali/public-api/signals/callback.h>
// INTERNAL INCLUDES
#include "abort-handler.h"
* If the main loop aborts unexpectedly, then the connected callback function is called.
* @param[in] callBack The function to call.
* @note Only one callback can be registered. The last callback to be set will be called on abort.
+ * @note The ownership of callback is passed onto this class.
*/
- void AddAbortCallback(boost::function<void(void)> callBack);
+ void AddAbortCallback( CallbackBase* callback );
/**
* Gets bundle name which was passed in app_reset callback.
namespace Adaptor
{
-TriggerEventInterface* TriggerEventFactory::CreateTriggerEvent( boost::function<void()> functor, TriggerEventInterface::Options options )
+TriggerEventInterface* TriggerEventFactory::CreateTriggerEvent( CallbackBase* callback, TriggerEventInterface::Options options )
{
- return new TriggerEvent( functor, options );
+ return new TriggerEvent( callback, options );
}
void TriggerEventFactory::DestroyTriggerEvent( TriggerEventInterface* triggerEventInterface )
/**
* @copydoc TriggerEventFactoryInterface::CreateTriggerEvent
*/
- virtual TriggerEventInterface* CreateTriggerEvent( boost::function<void()> functor, TriggerEventInterface::Options options );
+ virtual TriggerEventInterface* CreateTriggerEvent( CallbackBase* callback, TriggerEventInterface::Options options );
/**
// EXTERNAL INCLUDES
#include <sys/eventfd.h>
-#include <boost/bind.hpp>
+#include <unistd.h>
#include <dali/integration-api/debug.h>
namespace Adaptor
{
-TriggerEvent::TriggerEvent( boost::function<void()> functor, TriggerEventInterface::Options options )
-: mFileDescriptorMonitor(NULL),
- mFunctor(functor),
- mFileDescriptor(-1),
+TriggerEvent::TriggerEvent( CallbackBase* callback, TriggerEventInterface::Options options )
+: mFileDescriptorMonitor( NULL ),
+ mCallback( callback ),
+ mFileDescriptor( -1 ),
mOptions( options )
{
// Create accompanying file descriptor.
if (mFileDescriptor >= 0)
{
// Now Monitor the created event file descriptor
- mFileDescriptorMonitor = new FileDescriptorMonitor(mFileDescriptor, boost::bind(&TriggerEvent::Triggered, this));
+ mFileDescriptorMonitor = new FileDescriptorMonitor( mFileDescriptor, MakeCallback( this, &TriggerEvent::Triggered ) );
}
else
{
TriggerEvent::~TriggerEvent()
{
- if (mFileDescriptorMonitor)
- {
- delete mFileDescriptorMonitor;
- mFileDescriptorMonitor = NULL;
- }
+ delete mFileDescriptorMonitor;
+ delete mCallback;
if (mFileDescriptor >= 0)
{
DALI_LOG_WARNING("Unable to read to UpdateEvent File descriptor\n");
}
- // Call the connected boost function.
- mFunctor();
+ // Call the connected callback
+ CallbackBase::Execute( *mCallback );
//check if we should delete ourselves after the trigger
if( mOptions == TriggerEventInterface::DELETE_AFTER_TRIGGER )
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
-
#include <dali/public-api/common/dali-common.h>
+#include <dali/public-api/signals/callback.h>
// INTERNAL INCLUDES
#include <base/interfaces/trigger-event-interface.h>
* Creates an event file descriptor and starts a GSource which reads from the file
* descriptor when there is data.
*
- * @param[in] functor to call
- * @param[in] options, trigger event options.
+ * @param[in] callback The callback to call
+ * @param[in] options Trigger event options.
+ * @note The ownership of callback is taken by this class.
*/
- TriggerEvent( boost::function<void()> functor, TriggerEventInterface::Options options = TriggerEventInterface::NONE );
+ TriggerEvent( CallbackBase* callback, TriggerEventInterface::Options options = TriggerEventInterface::NONE );
/**
* Destructor
private:
FileDescriptorMonitor* mFileDescriptorMonitor;
- boost::function<void()> mFunctor; ///< Function object to call
+ CallbackBase* mCallback;
int mFileDescriptor;
TriggerEventInterface::Options mOptions;
};
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
-
+#include <dali/public-api/events/touch-event.h>
#include <dali/public-api/object/base-handle.h>
#include <dali/public-api/signals/dali-signal.h>
-#include <dali/public-api/events/touch-event.h>
namespace Dali
{
return Orientation();
}
-bool Application::AddIdle(boost::function<void(void)> callBack)
+bool Application::AddIdle( CallbackBase* callback )
{
- return Internal::Adaptor::GetImplementation(*this).AddIdle(callBack);
+ return Internal::Adaptor::GetImplementation(*this).AddIdle( callback );
}
Window Application::GetWindow()
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
#include <string>
-#include <dali/public-api/object/base-handle.h>
#include <dali/public-api/common/view-mode.h>
+#include <dali/public-api/object/base-handle.h>
+#include <dali/public-api/signals/callback.h>
+
// INTERNAL INCLUDES
#include "application-configuration.h"
* void MyFunction();
* @endcode
*
- * @param[in] callBack The function to call.
+ * @param[in] callback The function to call.
* @return true if added successfully, false otherwise
+ *
+ * @note Ownership of the callback is passed onto this class.
*/
- bool AddIdle(boost::function<void(void)> callBack);
+ bool AddIdle( CallbackBase* callback );
/**
* Retrieves the window used by the Application class.
ViewMode GetViewMode() const;
/**
- * Set the stereo base (eye seperation) for stereoscopic 3D
- * @param[in] stereoBase The stereo base (eye seperation) for stereoscopic 3D
+ * Set the stereo base (eye separation) for Stereoscopic 3D
+ *
+ * @param[in] stereoBase The stereo base (eye separation) for Stereoscopic 3D
*/
void SetStereoBase( float stereoBase );
/**
- * Get the stereo base (eye seperation) for stereoscopic 3D
- * @return The stereo base (eye seperation) for stereoscopic 3D
+ * Get the stereo base (eye separation) for Stereoscopic 3D
+ *
+ * @return The stereo base (eye separation) for Stereoscopic 3D
*/
float GetStereoBase() const;
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
-
#include <dali/public-api/object/base-handle.h>
#include <dali/public-api/signals/dali-signal.h>
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
-
#include <dali/public-api/object/base-handle.h>
#include <dali/public-api/signals/dali-signal.h>
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
-
#include <dali/public-api/signals/dali-signal.h>
#include <dali/public-api/object/base-handle.h>
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
#include <string>
#include <dali/public-api/object/base-handle.h>
*/
// EXTERNAL INCLUDES
-#include <boost/function.hpp>
-
#include <dali/public-api/object/base-handle.h>
#include <dali/public-api/signals/dali-signal.h>
#include <app.h>
#include <bundle.h>
#include <Ecore.h>
-#include <boost/bind.hpp>
#include <dali/integration-api/debug.h>
// Constructor
Impl(void* data)
+ : mAbortCallBack( NULL ),
+ mCallbackManager( NULL )
{
mEventCallback.create = AppCreate;
mEventCallback.terminate = AppTerminate;
~Impl()
{
+ delete mAbortCallBack;
+
// we're quiting the main loop so
// mCallbackManager->RemoveAllCallBacks() does not need to be called
// to delete our abort handler
// Data
- boost::function<void(void)> mAbortCallBack;
+ CallbackBase* mAbortCallBack;
app_event_callback_s mEventCallback;
CallbackManager *mCallbackManager;
// Static methods
mName(name),
mBundleName(""),
mBundleId(""),
- mAbortHandler(boost::bind(&Framework::AbortCallback, this)),
+ mAbortHandler( MakeCallback( this, &Framework::AbortCallback ) ),
mImpl(NULL)
{
InitThreads();
return mRunning;
}
-void Framework::AddAbortCallback(boost::function<void(void)> callBack)
+void Framework::AddAbortCallback( CallbackBase* callback )
{
- mImpl->mAbortCallBack = callBack;
+ mImpl->mAbortCallBack = callback;
}
std::string Framework::GetBundleName() const
// if an abort call back has been installed run it.
if (mImpl->mAbortCallBack)
{
- mImpl->mAbortCallBack();
+ CallbackBase::Execute( *mImpl->mAbortCallBack );
}
else
{
// EXTERNAL INCLUDES
#include <Ecore.h>
#include <Elementary.h>
-#include <boost/bind.hpp>
#include <X11/Xlib.h>
#include <dali/integration-api/debug.h>
// Constructor
Impl(void* data)
+ : mAbortCallBack( NULL ),
+ mCallbackManager( CallbackManager::New() )
{
- mCallbackManager = CallbackManager::New();
}
~Impl()
{
+ delete mAbortCallBack;
+
// we're quiting the main loop so
// mCallbackManager->RemoveAllCallBacks() does not need to be called
// to delete our abort handler
// Data
- boost::function<void(void)> mAbortCallBack;
+ CallbackBase* mAbortCallBack;
CallbackManager *mCallbackManager;
// Static methods
mName(name),
mBundleName(""),
mBundleId(""),
- mAbortHandler(boost::bind(&Framework::AbortCallback, this)),
+ mAbortHandler( MakeCallback( this, &Framework::AbortCallback ) ),
mImpl(NULL)
{
InitThreads();
return mRunning;
}
-void Framework::AddAbortCallback(boost::function<void(void)> callBack)
+void Framework::AddAbortCallback( CallbackBase* callback )
{
- mImpl->mAbortCallBack = callBack;
+ mImpl->mAbortCallBack = callback;
}
std::string Framework::GetBundleName() const
// if an abort call back has been installed run it.
if (mImpl->mAbortCallBack)
{
- mImpl->mAbortCallBack();
+ CallbackBase::Execute( *mImpl->mAbortCallBack );
}
else
{
#include <imf-manager-impl.h>
// EXTERNAL INCLUDES
-#include <boost/bind.hpp>
#include <dali/public-api/events/key-event.h>
#include <dali/public-api/object/type-registry.h>
#include <dali/integration-api/debug.h>
#include <imf-manager-impl.h>
// EXTERNAL INCLUDES
-#include <boost/bind.hpp>
#include <dali/public-api/events/key-event.h>
#include <dali/public-api/object/type-registry.h>
#include <dali/integration-api/debug.h>