ecore_drm2: Add APIs to support setting display relative properties

This commit is contained in:
Christopher Michael 2023-11-22 06:55:48 -05:00
parent 862115284a
commit 430dee86e4
3 changed files with 34 additions and 0 deletions

View File

@ -28,6 +28,18 @@ typedef enum _Ecore_Drm2_Rotation
ECORE_DRM2_ROTATION_REFLECT_Y = 32
} Ecore_Drm2_Rotation;
/* public enum for relative mode */
typedef enum _Ecore_Drm2_Relative_Mode
{
ECORE_DRM2_RELATIVE_MODE_UNKNOWN,
ECORE_DRM2_RELATIVE_MODE_NONE,
ECORE_DRM2_RELATIVE_MODE_CLONE,
ECORE_DRM2_RELATIVE_MODE_TO_LEFT,
ECORE_DRM2_RELATIVE_MODE_TO_RIGHT,
ECORE_DRM2_RELATIVE_MODE_TO_ABOVE,
ECORE_DRM2_RELATIVE_MODE_TO_BELOW
} Ecore_Drm2_Relative_Mode;
/* opaque structure to represent a drm crtc */
typedef struct _Ecore_Drm2_Crtc Ecore_Drm2_Crtc;
@ -83,6 +95,7 @@ EAPI void ecore_drm2_display_mode_set(Ecore_Drm2_Display *disp, Ecore_Drm2_Displ
EAPI Ecore_Drm2_Crtc *ecore_drm2_display_crtc_get(Ecore_Drm2_Display *disp);
EAPI Eina_Bool ecore_drm2_display_possible_crtc_get(Ecore_Drm2_Display *disp, Ecore_Drm2_Crtc *crtc);
EAPI int ecore_drm2_display_supported_rotations_get(Ecore_Drm2_Display *disp);
EAPI void ecore_drm2_display_relative_to_set(Ecore_Drm2_Display *disp, const char *relative);
# endif

View File

@ -576,6 +576,7 @@ _ecore_drm2_displays_destroy(Ecore_Drm2_Device *dev)
EINA_LIST_FREE(dev->displays, disp)
{
if (disp->thread) ecore_thread_cancel(disp->thread);
eina_stringshare_del(disp->relative.to);
eina_stringshare_del(disp->serial);
eina_stringshare_del(disp->model);
eina_stringshare_del(disp->make);
@ -934,3 +935,17 @@ ecore_drm2_display_supported_rotations_get(Ecore_Drm2_Display *disp)
/* return primary plane state supported_rotations */
return plane->state.current->supported_rotations;
}
EAPI void
ecore_drm2_display_relative_mode_set(Ecore_Drm2_Display *disp, Ecore_Drm2_Relative_Mode mode)
{
EINA_SAFETY_ON_NULL_RETURN(disp);
disp->relative.mode = mode;
}
EAPI void
ecore_drm2_display_relative_to_set(Ecore_Drm2_Display *disp, const char *relative)
{
EINA_SAFETY_ON_NULL_RETURN(disp);
eina_stringshare_replace(&disp->relative.to, relative);
}

View File

@ -263,6 +263,12 @@ struct _Ecore_Drm2_Display
Ecore_Drm2_Backlight_Type type;
} backlight;
struct
{
const char *to;
Ecore_Drm2_Relative_Mode mode;
} relative;
struct
{
Ecore_Drm2_Display_State *current;