ecore_drm2: Move fb from plane state struct to plane struct
The plane state struct needs the fb id for drm updates, and the plane state can be updated even if it's pointed to by a dead plane. Dead planes need to keep their fb so we can properly handle the fb lifetime.
This commit is contained in:
parent
be90b91ac1
commit
a8c7b89cb7
|
@ -96,7 +96,7 @@ out:
|
||||||
pstate->in_use = EINA_TRUE;
|
pstate->in_use = EINA_TRUE;
|
||||||
pstate->cid.value = output->crtc_id;
|
pstate->cid.value = output->crtc_id;
|
||||||
pstate->fid.value = fb->id;
|
pstate->fid.value = fb->id;
|
||||||
pstate->fb = fb;
|
plane->fb = fb;
|
||||||
|
|
||||||
pstate->sx.value = 0;
|
pstate->sx.value = 0;
|
||||||
pstate->sy.value = 0;
|
pstate->sy.value = 0;
|
||||||
|
@ -130,11 +130,15 @@ out:
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_drm2_plane_release(Ecore_Drm2_Plane *plane)
|
ecore_drm2_plane_release(Ecore_Drm2_Plane *plane)
|
||||||
{
|
{
|
||||||
|
Ecore_Drm2_Fb *fb;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN(plane);
|
EINA_SAFETY_ON_NULL_RETURN(plane);
|
||||||
EINA_SAFETY_ON_TRUE_RETURN(plane->dead);
|
EINA_SAFETY_ON_TRUE_RETURN(plane->dead);
|
||||||
|
|
||||||
|
fb = plane->fb;
|
||||||
|
|
||||||
plane->output->fbs =
|
plane->output->fbs =
|
||||||
eina_list_append(plane->output->fbs, plane->state->fb);
|
eina_list_append(plane->output->fbs, fb);
|
||||||
|
|
||||||
plane->dead = EINA_TRUE;
|
plane->dead = EINA_TRUE;
|
||||||
plane->state->in_use = EINA_FALSE;
|
plane->state->in_use = EINA_FALSE;
|
||||||
|
@ -171,9 +175,9 @@ ecore_drm2_plane_fb_set(Ecore_Drm2_Plane *plane, Ecore_Drm2_Fb *fb)
|
||||||
_ecore_drm2_fb_ref(fb);
|
_ecore_drm2_fb_ref(fb);
|
||||||
|
|
||||||
plane->output->fbs =
|
plane->output->fbs =
|
||||||
eina_list_append(plane->output->fbs, plane->state->fb);
|
eina_list_append(plane->output->fbs, plane->fb);
|
||||||
|
|
||||||
plane->state->fb = fb;
|
plane->fb = fb;
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
plane->state->fid.value = fallback_id;
|
plane->state->fid.value = fallback_id;
|
||||||
|
|
|
@ -104,7 +104,6 @@ typedef struct _Ecore_Drm2_Plane_State
|
||||||
|
|
||||||
/* these are not part of an atomic state, but we store these here
|
/* these are not part of an atomic state, but we store these here
|
||||||
* so that we do not have to refetch properties when iterating planes */
|
* so that we do not have to refetch properties when iterating planes */
|
||||||
Ecore_Drm2_Fb *fb;
|
|
||||||
uint32_t rotation_map[6];
|
uint32_t rotation_map[6];
|
||||||
uint32_t supported_rotations;
|
uint32_t supported_rotations;
|
||||||
|
|
||||||
|
@ -175,6 +174,7 @@ struct _Ecore_Drm2_Plane
|
||||||
int type;
|
int type;
|
||||||
Ecore_Drm2_Plane_State *state;
|
Ecore_Drm2_Plane_State *state;
|
||||||
Ecore_Drm2_Output *output;
|
Ecore_Drm2_Output *output;
|
||||||
|
Ecore_Drm2_Fb *fb;
|
||||||
Eina_Bool dead;
|
Eina_Bool dead;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue