Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 97274870 authored by Jiwen 'Steve' Cai's avatar Jiwen 'Steve' Cai
Browse files

Add dvrReadBufferQueueGetEventFd

We need to expose the read queue's event fd, so that a caller can epoll
on a set of queues' fd for efficient buffer acquisition.

Bug: 62359843
Test: dvrapi-test

Change-Id: I1b9271afed9ee6c6675551402cd3f5a66e98ebe2
parent de1ad9de
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -302,6 +302,13 @@ int dvrReadBufferQueueGetId(DvrReadBufferQueue* read_queue) {
  return read_queue->id();
  return read_queue->id();
}
}


int dvrReadBufferQueueGetEventFd(DvrReadBufferQueue* read_queue) {
  if (!read_queue)
    return -EINVAL;

  return read_queue->event_fd();
}

int dvrReadBufferQueueCreateReadQueue(DvrReadBufferQueue* read_queue,
int dvrReadBufferQueueCreateReadQueue(DvrReadBufferQueue* read_queue,
                                      DvrReadBufferQueue** out_read_queue) {
                                      DvrReadBufferQueue** out_read_queue) {
  if (!read_queue || !out_read_queue)
  if (!read_queue || !out_read_queue)
+1 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,7 @@ struct DvrReadBufferQueue {
      const std::shared_ptr<ConsumerQueue>& consumer_queue);
      const std::shared_ptr<ConsumerQueue>& consumer_queue);


  int id() const { return consumer_queue_->id(); }
  int id() const { return consumer_queue_->id(); }
  int event_fd() const { return consumer_queue_->queue_fd(); }
  size_t capacity() const { return consumer_queue_->capacity(); }
  size_t capacity() const { return consumer_queue_->capacity(); }


  int CreateReadQueue(DvrReadBufferQueue** out_read_queue);
  int CreateReadQueue(DvrReadBufferQueue** out_read_queue);
+1 −0
Original line number Original line Diff line number Diff line
@@ -177,6 +177,7 @@ typedef void (*DvrReadBufferQueueDestroyPtr)(DvrReadBufferQueue* read_queue);
typedef ssize_t (*DvrReadBufferQueueGetCapacityPtr)(
typedef ssize_t (*DvrReadBufferQueueGetCapacityPtr)(
    DvrReadBufferQueue* read_queue);
    DvrReadBufferQueue* read_queue);
typedef int (*DvrReadBufferQueueGetIdPtr)(DvrReadBufferQueue* read_queue);
typedef int (*DvrReadBufferQueueGetIdPtr)(DvrReadBufferQueue* read_queue);
typedef int (*DvrReadBufferQueueGetEventFdPtr)(DvrReadBufferQueue* read_queue);
typedef int (*DvrReadBufferQueueCreateReadQueuePtr)(
typedef int (*DvrReadBufferQueueCreateReadQueuePtr)(
    DvrReadBufferQueue* read_queue, DvrReadBufferQueue** out_read_queue);
    DvrReadBufferQueue* read_queue, DvrReadBufferQueue** out_read_queue);
typedef int (*DvrReadBufferQueueDequeuePtr)(DvrReadBufferQueue* read_queue,
typedef int (*DvrReadBufferQueueDequeuePtr)(DvrReadBufferQueue* read_queue,
+3 −0
Original line number Original line Diff line number Diff line
@@ -157,3 +157,6 @@ DVR_V1_API_ENTRY(PerformanceSetSchedulerPolicy);


// Pose client
// Pose client
DVR_V1_API_ENTRY(PoseClientSensorsEnable);
DVR_V1_API_ENTRY(PoseClientSensorsEnable);

// Read buffer queue
DVR_V1_API_ENTRY(ReadBufferQueueGetEventFd);
+8 −0
Original line number Original line Diff line number Diff line
@@ -102,6 +102,14 @@ ssize_t dvrReadBufferQueueGetCapacity(DvrReadBufferQueue* read_queue);
// @return Queue id on success; or negative error code.
// @return Queue id on success; or negative error code.
int dvrReadBufferQueueGetId(DvrReadBufferQueue* read_queue);
int dvrReadBufferQueueGetId(DvrReadBufferQueue* read_queue);


// Get the event fd that signals when queue updates occur.
//
// Use ReadBufferQueueHandleEvents to trigger registered event callbacks.
//
// @param read_queue The DvrReadBufferQueue of interest.
// @return Fd on success; or negative error code.
int dvrReadBufferQueueGetEventFd(DvrReadBufferQueue* read_queue);

// Create a read buffer queue from an existing read buffer queue.
// Create a read buffer queue from an existing read buffer queue.
//
//
// @param read_queue The DvrReadBufferQueue of interest.
// @param read_queue The DvrReadBufferQueue of interest.
Loading