int dvrDisplayManagerClientGetSurfaceBuffers(
DvrDisplayManagerClient* client, int surface_id,
DvrDisplayManagerClientSurfaceBuffers** surface_buffers) {
- std::vector<std::unique_ptr<android::dvr::BufferConsumer>> buffer_list;
- int ret = client->client->GetSurfaceBuffers(surface_id, &buffer_list);
- if (ret < 0)
- return ret;
-
- *surface_buffers =
- new DvrDisplayManagerClientSurfaceBuffers(std::move(buffer_list));
- return ret;
+ // TODO(jwcai, hendrikw) Remove this after we replacing
+ // dvrDisplayManagerClientGetSurfaceBuffers is dvr_api.
+ return -1;
}
void dvrDisplayManagerClientSurfaceBuffersDestroy(
return 0;
}
-int DisplayManagerClient::GetSurfaceBuffers(
- int surface_id, std::vector<std::unique_ptr<BufferConsumer>>* consumers) {
- auto status =
- InvokeRemoteMethod<DisplayManagerRPC::GetSurfaceBuffers>(surface_id);
- if (!status) {
- ALOGE(
- "DisplayManagerClient::GetSurfaceBuffers: Failed to get buffers for "
- "surface_id=%d: %s",
- surface_id, status.GetErrorMessage().c_str());
- return -status.error();
- }
-
- std::vector<std::unique_ptr<BufferConsumer>> consumer_buffers;
- std::vector<LocalChannelHandle> channel_handles = status.take();
- for (auto&& handle : channel_handles) {
- consumer_buffers.push_back(BufferConsumer::Import(std::move(handle)));
- }
-
- *consumers = std::move(consumer_buffers);
- return 0;
-}
-
} // namespace dvr
} // namespace android
bool dvrDisplayManagerClientSurfaceListGetClientIsVisible(
DvrDisplayManagerClientSurfaceList* surface_list, size_t index);
-// Populates |surface_buffers| with the list of buffers for |surface_id|.
-// |surface_id| should be a valid ID from the list of surfaces.
-//
-// @return Returns 0 on success. Otherwise it returns a negative error value.
+// TODO(jwcai, hendrikw) Remove this after we replacing
+// dvrDisplayManagerClientGetSurfaceBuffers is dvr_api.
int dvrDisplayManagerClientGetSurfaceBuffers(
DvrDisplayManagerClient* client, int surface_id,
DvrDisplayManagerClientSurfaceBuffers** surface_buffers);
int GetSurfaceList(std::vector<DisplaySurfaceInfo>* surface_list);
- int GetSurfaceBuffers(
- int surface_id, std::vector<std::unique_ptr<BufferConsumer>>* consumers);
-
using Client::event_fd;
using Client::GetChannel;
// Op codes.
enum {
kOpGetSurfaceList = 0,
- kOpGetSurfaceBuffers,
kOpUpdateSurfaces,
};
// Methods.
PDX_REMOTE_METHOD(GetSurfaceList, kOpGetSurfaceList,
std::vector<DisplaySurfaceInfo>(Void));
- PDX_REMOTE_METHOD(GetSurfaceBuffers, kOpGetSurfaceBuffers,
- std::vector<LocalChannelHandle>(int surface_id));
PDX_REMOTE_METHOD(
UpdateSurfaces, kOpUpdateSurfaces,
int(const std::map<int, DisplaySurfaceAttributes>& updates));
*this, &DisplayManagerService::OnGetSurfaceList, message);
return 0;
- case DisplayManagerRPC::GetSurfaceBuffers::Opcode:
- DispatchRemoteMethod<DisplayManagerRPC::GetSurfaceBuffers>(
- *this, &DisplayManagerService::OnGetSurfaceBuffers, message);
- return 0;
-
case DisplayManagerRPC::UpdateSurfaces::Opcode:
DispatchRemoteMethod<DisplayManagerRPC::UpdateSurfaces>(
*this, &DisplayManagerService::OnUpdateSurfaces, message);
return items;
}
-std::vector<LocalChannelHandle> DisplayManagerService::OnGetSurfaceBuffers(
- pdx::Message& message, int surface_id) {
- std::shared_ptr<DisplaySurface> surface =
- display_service_->GetDisplaySurface(surface_id);
- if (!surface)
- REPLY_ERROR_RETURN(message, ENOENT, {});
-
- std::vector<LocalChannelHandle> consumers;
- int ret = surface->GetConsumers(&consumers);
- if (ret < 0) {
- ALOGE(
- "DisplayManagerService::OnGetDisplaySurfaceBuffers: Failed to get "
- "consumers for surface %d: %s",
- surface_id, strerror(-ret));
- REPLY_ERROR_RETURN(message, -ret, {});
- }
-
- return consumers;
-}
-
int DisplayManagerService::OnUpdateSurfaces(
pdx::Message& /*message*/,
const std::map<int, DisplaySurfaceAttributes>& updates) {
const std::shared_ptr<DisplayService>& display_service);
std::vector<DisplaySurfaceInfo> OnGetSurfaceList(pdx::Message& message);
- std::vector<pdx::LocalChannelHandle> OnGetSurfaceBuffers(
- pdx::Message& message, int surface_id);
int OnUpdateSurfaces(pdx::Message& message,
const std::map<int, DisplaySurfaceAttributes>& updates);
client_blur_behind_ = blur_behind;
}
-size_t DisplaySurface::GetBufferCount() const {
- std::lock_guard<std::mutex> autolock(lock_);
- return buffers_.size();
-}
-
-std::vector<std::shared_ptr<BufferConsumer>> DisplaySurface::GetBuffers() {
- std::lock_guard<std::mutex> autolock(lock_);
- std::vector<std::shared_ptr<BufferConsumer>> return_vector(buffers_.size());
-
- for (const auto pair : buffers_) {
- return_vector.push_back(pair.second);
- }
-
- return return_vector;
-}
-
AcquiredBuffer DisplaySurface::AcquireNewestAvailableBuffer(
AcquiredBuffer* skipped_buffer) {
std::lock_guard<std::mutex> autolock(lock_);
return buffer_id_to_index_[buffer_id];
}
- size_t GetBufferCount() const;
- std::vector<std::shared_ptr<BufferConsumer>> GetBuffers();
-
// Gets a new set of consumers for all of the surface's buffers. These
// consumers are independent from the consumers maintained internally to the
// surface and may be passed to other processes over IPC.