blob: f28c1e4e1a0846b3c7e0c888bb90679af6e8912c [file] [log] [blame]
#ifndef DVR_DISPLAY_MANAGER_CLIENT_H_
#define DVR_DISPLAY_MANAGER_CLIENT_H_
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct DvrDisplayManagerClient DvrDisplayManagerClient;
typedef struct DvrDisplayManagerClientSurfaceList
DvrDisplayManagerClientSurfaceList;
typedef struct DvrDisplayManagerClientSurfaceBuffers
DvrDisplayManagerClientSurfaceBuffers;
DvrDisplayManagerClient* dvrDisplayManagerClientCreate();
void dvrDisplayManagerClientDestroy(DvrDisplayManagerClient* client);
// If successful, populates |surface_list| with a list of application
// surfaces the display is currently using.
//
// @return 0 on success. Otherwise it returns a negative error value.
int dvrDisplayManagerClientGetSurfaceList(
DvrDisplayManagerClient* client,
DvrDisplayManagerClientSurfaceList** surface_list);
void dvrDisplayManagerClientSurfaceListDestroy(
DvrDisplayManagerClientSurfaceList* surface_list);
// @return Returns the number of surfaces in the list.
size_t dvrDisplayManagerClientSurfaceListGetSize(
DvrDisplayManagerClientSurfaceList* surface_list);
// @return Return a unique identifier for a client surface. The identifier can
// be used to query for other surface properties.
int dvrDisplayManagerClientSurfaceListGetSurfaceId(
DvrDisplayManagerClientSurfaceList* surface_list, size_t index);
// @return Returns the stacking order of the client surface at |index|.
int dvrDisplayManagerClientSurfaceListGetClientZOrder(
DvrDisplayManagerClientSurfaceList* surface_list, size_t index);
// @return Returns true if the client surface is visible, false otherwise.
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.
int dvrDisplayManagerClientGetSurfaceBuffers(
DvrDisplayManagerClient* client, int surface_id,
DvrDisplayManagerClientSurfaceBuffers** surface_buffers);
void dvrDisplayManagerClientSurfaceBuffersDestroy(
DvrDisplayManagerClientSurfaceBuffers* surface_buffers);
// @return Returns the number of buffers.
size_t dvrDisplayManagerClientSurfaceBuffersGetSize(
DvrDisplayManagerClientSurfaceBuffers* surface_buffers);
// @return Returns the file descriptor for the buffer consumer at |index|.
int dvrDisplayManagerClientSurfaceBuffersGetFd(
DvrDisplayManagerClientSurfaceBuffers* surface_buffers, size_t index);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // DVR_DISPLAY_MANAGER_CLIENT_H_