{
__eventFd = eventfd(0, EFD_NONBLOCK);
__ecoreFdHandler = ecore_main_fd_handler_add(__eventFd, ECORE_FD_READ, __onFdHandler, this, NULL, NULL);
+ __bufferQueue->registerCallbackAcquirable(this, std::bind(&DSDisplayDeviceHWCWindowTDMTargetImpl::__onAcquirable, this, std::placeholders::_1));
}
DSDisplayDeviceHWCWindowTDMTargetImpl::~DSDisplayDeviceHWCWindowTDMTargetImpl()
return ECORE_CALLBACK_RENEW;
}
+void DSDisplayDeviceHWCWindowTDMTargetImpl::__onAcquirable(void *data)
+{
+ uint64_t value = 1;
+ int ret;
+
+ ret = write(__eventFd, &value, sizeof(value));
+ if (ret == -1)
+ DSLOG_WRN("DSDisplayDeviceHWCWindowTDMTargetImpl", "failed to write a value on event fd:%m");
+}
+
}
namespace display_server
{
-class DSDisplayDeviceHWCWindowTDMTargetImpl : public IDSDisplayDeviceHWCWindow
+class DSDisplayDeviceHWCWindowTDMTargetImpl : public IDSDisplayDeviceHWCWindow, public DSObject
{
public:
DSDisplayDeviceHWCWindowTDMTargetImpl(IDSDisplayDeviceHWC *deviceHWC, std::shared_ptr<IDSBufferQueue> __bufferQueue);
private:
static Eina_Bool __onFdHandler(void *data, Ecore_Fd_Handler *hdlr);
+ void __onAcquirable(void *data);
IDSDisplayDeviceHWC *__deviceHWC;
std::shared_ptr<IDSBufferQueue> __bufferQueue;