From 21b323824ab4bbe550558eca9d8e68e381f82fab Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Fri, 21 Aug 2020 08:39:07 +0900 Subject: [PATCH] DSDisplayDeviceHWC: register the acquirable buffer Register the acquirable buffer and write the value to event fd. Change-Id: I8bea0e945fbcfd7cea5ef110b154189f01b86346 --- src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.cpp | 11 +++++++++++ src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.h | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.cpp b/src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.cpp index 11ddef6..a4454e2 100644 --- a/src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.cpp +++ b/src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.cpp @@ -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"); +} + } diff --git a/src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.h b/src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.h index 46bdfe2..70997dc 100644 --- a/src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.h +++ b/src/DSDisplayDevice/DSDisplayDeviceHWCWindowTDMTargetImpl.h @@ -34,7 +34,7 @@ namespace display_server { -class DSDisplayDeviceHWCWindowTDMTargetImpl : public IDSDisplayDeviceHWCWindow +class DSDisplayDeviceHWCWindowTDMTargetImpl : public IDSDisplayDeviceHWCWindow, public DSObject { public: DSDisplayDeviceHWCWindowTDMTargetImpl(IDSDisplayDeviceHWC *deviceHWC, std::shared_ptr __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 __bufferQueue; -- 2.7.4