DSDisplayDeviceHWC: register the acquirable buffer 08/242008/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 20 Aug 2020 23:39:07 +0000 (08:39 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Fri, 21 Aug 2020 10:07:02 +0000 (19:07 +0900)
Register the acquirable buffer and write the value to event fd.

Change-Id: I8bea0e945fbcfd7cea5ef110b154189f01b86346

src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.cpp
src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.h

index 11ddef6..a4454e2 100644 (file)
@@ -35,6 +35,7 @@ DSDisplayDeviceHWCWindowTDMTargetImpl::DSDisplayDeviceHWCWindowTDMTargetImpl(IDS
 {
        __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()
@@ -98,4 +99,14 @@ Eina_Bool DSDisplayDeviceHWCWindowTDMTargetImpl::__onFdHandler(void *data, Ecore
        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");
+}
+
 }
index 46bdfe2..70997dc 100644 (file)
@@ -34,7 +34,7 @@
 
 namespace display_server
 {
-class DSDisplayDeviceHWCWindowTDMTargetImpl : public IDSDisplayDeviceHWCWindow
+class DSDisplayDeviceHWCWindowTDMTargetImpl : public IDSDisplayDeviceHWCWindow, public DSObject
 {
 public:
        DSDisplayDeviceHWCWindowTDMTargetImpl(IDSDisplayDeviceHWC *deviceHWC, std::shared_ptr<IDSBufferQueue> __bufferQueue);
@@ -46,6 +46,7 @@ public:
 
 private:
        static Eina_Bool __onFdHandler(void *data, Ecore_Fd_Handler *hdlr);
+       void __onAcquirable(void *data);
 
        IDSDisplayDeviceHWC *__deviceHWC;
        std::shared_ptr<IDSBufferQueue> __bufferQueue;