52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
#include "include/private/dvr/display_manager_client.h"
|
|
|
|
#include <pdx/default_transport/client_channel_factory.h>
|
|
#include <private/dvr/buffer_hub_queue_client.h>
|
|
#include <private/dvr/display_protocol.h>
|
|
#include <utils/Log.h>
|
|
|
|
using android::pdx::ErrorStatus;
|
|
using android::pdx::LocalChannelHandle;
|
|
using android::pdx::Transaction;
|
|
|
|
namespace android {
|
|
namespace dvr {
|
|
namespace display {
|
|
|
|
DisplayManagerClient::DisplayManagerClient()
|
|
: BASE(pdx::default_transport::ClientChannelFactory::Create(
|
|
DisplayManagerProtocol::kClientPath)) {}
|
|
|
|
DisplayManagerClient::~DisplayManagerClient() {}
|
|
|
|
pdx::Status<std::vector<display::SurfaceState>>
|
|
DisplayManagerClient::GetSurfaceState() {
|
|
auto status = InvokeRemoteMethod<DisplayManagerProtocol::GetSurfaceState>();
|
|
if (!status) {
|
|
ALOGE(
|
|
"DisplayManagerClient::GetSurfaceState: Failed to get surface info: %s",
|
|
status.GetErrorMessage().c_str());
|
|
}
|
|
|
|
return status;
|
|
}
|
|
|
|
pdx::Status<std::unique_ptr<ConsumerQueue>>
|
|
DisplayManagerClient::GetSurfaceQueue(int surface_id, int queue_id) {
|
|
auto status = InvokeRemoteMethod<DisplayManagerProtocol::GetSurfaceQueue>(
|
|
surface_id, queue_id);
|
|
if (!status) {
|
|
ALOGE(
|
|
"DisplayManagerClient::GetSurfaceQueue: Failed to get queue for "
|
|
"surface_id=%d queue_id=%d: %s",
|
|
surface_id, queue_id, status.GetErrorMessage().c_str());
|
|
return status.error_status();
|
|
}
|
|
|
|
return {ConsumerQueue::Import(status.take())};
|
|
}
|
|
|
|
} // namespace display
|
|
} // namespace dvr
|
|
} // namespace android
|