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

Commit c17eae88 authored by Corey Tabaka's avatar Corey Tabaka Committed by android-build-merger
Browse files

Merge "Fix missing check on buffer import." into oc-dr1-dev

am: e018119b

Change-Id: I6adb37b5f821338608ed19ce35384a63f4d5f7ba
parents ebc55de1 e018119b
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -613,6 +613,12 @@ Status<size_t> ConsumerQueue::ImportBuffers() {


    std::unique_ptr<BufferConsumer> buffer_consumer =
    std::unique_ptr<BufferConsumer> buffer_consumer =
        BufferConsumer::Import(std::move(buffer_handle_slot.first));
        BufferConsumer::Import(std::move(buffer_handle_slot.first));
    if (!buffer_consumer) {
      ALOGE("ConsumerQueue::ImportBuffers: Failed to import buffer: slot=%zu",
            buffer_handle_slot.second);
      last_error = ErrorStatus(EPIPE);
      continue;
    }


    // Setup ignore state before adding buffer to the queue.
    // Setup ignore state before adding buffer to the queue.
    if (ignore_on_import_) {
    if (ignore_on_import_) {
+3 −0
Original line number Original line Diff line number Diff line
@@ -194,6 +194,7 @@ std::shared_ptr<ConsumerQueue> ApplicationDisplaySurface::GetQueue(
           "ApplicationDisplaySurface::GetQueue: surface_id=%d queue_id=%d",
           "ApplicationDisplaySurface::GetQueue: surface_id=%d queue_id=%d",
           surface_id(), queue_id);
           surface_id(), queue_id);


  std::lock_guard<std::mutex> autolock(lock_);
  auto search = consumer_queues_.find(queue_id);
  auto search = consumer_queues_.find(queue_id);
  if (search != consumer_queues_.end())
  if (search != consumer_queues_.end())
    return search->second;
    return search->second;
@@ -202,6 +203,7 @@ std::shared_ptr<ConsumerQueue> ApplicationDisplaySurface::GetQueue(
}
}


std::vector<int32_t> ApplicationDisplaySurface::GetQueueIds() const {
std::vector<int32_t> ApplicationDisplaySurface::GetQueueIds() const {
  std::lock_guard<std::mutex> autolock(lock_);
  std::vector<int32_t> queue_ids;
  std::vector<int32_t> queue_ids;
  for (const auto& entry : consumer_queues_)
  for (const auto& entry : consumer_queues_)
    queue_ids.push_back(entry.first);
    queue_ids.push_back(entry.first);
@@ -270,6 +272,7 @@ void ApplicationDisplaySurface::OnQueueEvent(
}
}


std::vector<int32_t> DirectDisplaySurface::GetQueueIds() const {
std::vector<int32_t> DirectDisplaySurface::GetQueueIds() const {
  std::lock_guard<std::mutex> autolock(lock_);
  std::vector<int32_t> queue_ids;
  std::vector<int32_t> queue_ids;
  if (direct_queue_)
  if (direct_queue_)
    queue_ids.push_back(direct_queue_->id());
    queue_ids.push_back(direct_queue_->id());
+1 −0
Original line number Original line Diff line number Diff line
@@ -133,6 +133,7 @@ class ApplicationDisplaySurface : public DisplaySurface {
  void OnQueueEvent(const std::shared_ptr<ConsumerQueue>& consumer_queue,
  void OnQueueEvent(const std::shared_ptr<ConsumerQueue>& consumer_queue,
                    int events) override;
                    int events) override;


  // Accessed by both message dispatch thread and epoll event thread.
  std::unordered_map<int32_t, std::shared_ptr<ConsumerQueue>> consumer_queues_;
  std::unordered_map<int32_t, std::shared_ptr<ConsumerQueue>> consumer_queues_;
};
};