From: SooChan Lim Date: Thu, 30 Jul 2020 08:12:05 +0000 (+0900) Subject: DSBuffer: add canAquireBuffer method in DSBufferQueue X-Git-Tag: accepted/tizen/unified/20200820.213435~188 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=63ce11bb090d2eee5a3d80018bf4e7460f6c2679;p=platform%2Fcore%2Fuifw%2Flibds.git DSBuffer: add canAquireBuffer method in DSBufferQueue Change-Id: Ic7aab2ea2843725a5d85c6a30c257294069f8b67 --- diff --git a/src/DSBuffer/DSBufferQueueTBMImpl.cpp b/src/DSBuffer/DSBufferQueueTBMImpl.cpp index 08eb77e..c73e199 100644 --- a/src/DSBuffer/DSBufferQueueTBMImpl.cpp +++ b/src/DSBuffer/DSBufferQueueTBMImpl.cpp @@ -124,4 +124,14 @@ bool DSBufferQueueTBMImpl::releaseBuffer(std::shared_ptr buffer) return true; } +bool DSBufferQueueTBMImpl::canAcquireBuffer(bool wait) +{ + if (!tbm_surface_queue_can_acquire(__tqueue, wait)) { + DSLOG_ERR("BuffeQueueTBM", "tbm_surface_queue_can_acquire fails."); + return false; + } + + return true; +} + } diff --git a/src/DSBuffer/DSBufferQueueTBMImpl.h b/src/DSBuffer/DSBufferQueueTBMImpl.h index a4e06e3..f5919b3 100644 --- a/src/DSBuffer/DSBufferQueueTBMImpl.h +++ b/src/DSBuffer/DSBufferQueueTBMImpl.h @@ -24,6 +24,8 @@ public: std::shared_ptr acquireBuffer() override; bool releaseBuffer(std::shared_ptr buffer) override; + bool canAcquireBuffer(bool wait) override; + private: int __slotSize; int __bufferWidth; diff --git a/src/DSBuffer/IDSBufferQueue.h b/src/DSBuffer/IDSBufferQueue.h index a3e719d..4750374 100644 --- a/src/DSBuffer/IDSBufferQueue.h +++ b/src/DSBuffer/IDSBufferQueue.h @@ -19,6 +19,8 @@ public: virtual bool enqueueBuffer(std::shared_ptr ) = 0; virtual std::shared_ptr acquireBuffer() = 0; virtual bool releaseBuffer(std::shared_ptr ) = 0; + + virtual bool canAcquireBuffer(bool wait) = 0; }; } diff --git a/tests/DSBufferTBMImpl-test.cpp b/tests/DSBufferTBMImpl-test.cpp index f2758e8..6a96113 100644 --- a/tests/DSBufferTBMImpl-test.cpp +++ b/tests/DSBufferTBMImpl-test.cpp @@ -103,4 +103,15 @@ TEST_F(DSBufferTBMImplTest, DequeueBuffer_4Times) EXPECT_TRUE(bufferQueue->releaseBuffer(buffer4)); EXPECT_TRUE(bufferQueue->releaseBuffer(buffer5)); EXPECT_TRUE(bufferQueue->releaseBuffer(buffer6)); -} \ No newline at end of file +} + +TEST_F(DSBufferTBMImplTest, CanAcquireBuffer) +{ + auto bufferQueue = std::make_unique(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue.get() != nullptr); + + auto buffer1 = bufferQueue->dequeueBuffer(); + EXPECT_TRUE(buffer1 != nullptr); + EXPECT_TRUE(bufferQueue->enqueueBuffer(buffer1)); + EXPECT_TRUE(bufferQueue->canAcquireBuffer(true)); +}