DSBuffer: add canAquireBuffer method in DSBufferQueue 87/241687/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 30 Jul 2020 08:12:05 +0000 (17:12 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 20 Aug 2020 10:04:48 +0000 (19:04 +0900)
Change-Id: Ic7aab2ea2843725a5d85c6a30c257294069f8b67

src/DSBuffer/DSBufferQueueTBMImpl.cpp
src/DSBuffer/DSBufferQueueTBMImpl.h
src/DSBuffer/IDSBufferQueue.h
tests/DSBufferTBMImpl-test.cpp

index 08eb77e..c73e199 100644 (file)
@@ -124,4 +124,14 @@ bool DSBufferQueueTBMImpl::releaseBuffer(std::shared_ptr<IDSBuffer> 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;
+}
+
 }
index a4e06e3..f5919b3 100644 (file)
@@ -24,6 +24,8 @@ public:
        std::shared_ptr<IDSBuffer> acquireBuffer() override;
        bool                       releaseBuffer(std::shared_ptr<IDSBuffer> buffer) override;
 
+       bool                       canAcquireBuffer(bool wait) override;
+
 private:
        int __slotSize;
        int __bufferWidth;
index a3e719d..4750374 100644 (file)
@@ -19,6 +19,8 @@ public:
        virtual bool                       enqueueBuffer(std::shared_ptr<IDSBuffer> ) = 0;
        virtual std::shared_ptr<IDSBuffer> acquireBuffer() = 0;
        virtual bool                       releaseBuffer(std::shared_ptr<IDSBuffer> ) = 0;
+
+       virtual bool                       canAcquireBuffer(bool wait) = 0;
 };
 
 }
index f2758e8..6a96113 100644 (file)
@@ -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<DSBufferQueueTBMImpl>(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));
+}