// 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 ), FileDescriptorMonitor::FD_READABLE );
}
else
{
TriggerEvent::~TriggerEvent()
{
- if (mFileDescriptorMonitor)
- {
- delete mFileDescriptorMonitor;
- mFileDescriptorMonitor = NULL;
- }
+ delete mFileDescriptorMonitor;
+ delete mCallback;
if (mFileDescriptor >= 0)
{
}
}
-void TriggerEvent::Triggered()
+void TriggerEvent::Triggered( FileDescriptorMonitor::EventType eventBitMask )
{
+ if( !( eventBitMask & FileDescriptorMonitor::FD_READABLE ) )
+ {
+ DALI_ASSERT_ALWAYS( 0 && "Trigger event file descriptor error");
+ return;
+ }
+
// Reading from the file descriptor resets the event counter, we can ignore the count.
uint64_t receivedData;
size_t size;
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 )