summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2017-04-27 16:43:06 -0500
committerDerek Foreman <derekf@osg.samsung.com>2017-05-04 16:51:18 -0500
commit005a878759ba78491198582ba2d5bf80a9ca2e8f (patch)
treee45eaf63bdf931611dd98e17dcc19624c8d44694
parentc3149a89874a50624b92ef565b942064a5e060ea (diff)
downloadefl-005a878759ba78491198582ba2d5bf80a9ca2e8f.tar.gz
ecore_drm2: Replace output fbs with state structs
next, pending, and current are going to have to deal with atomic state instead of just fbs soon
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_fb.c66
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_outputs.c18
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_private.h2
3 files changed, 43 insertions, 43 deletions
diff --git a/src/lib/ecore_drm2/ecore_drm2_fb.c b/src/lib/ecore_drm2/ecore_drm2_fb.c
index 52cf55af9a..1a3b40c5f8 100644
--- a/src/lib/ecore_drm2/ecore_drm2_fb.c
+++ b/src/lib/ecore_drm2/ecore_drm2_fb.c
@@ -220,12 +220,12 @@ ecore_drm2_fb_flip_complete(Ecore_Drm2_Output *output)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
- if (output->current && (output->current != output->pending))
- _release_buffer(output, output->current);
- output->current = output->pending;
- output->pending = NULL;
+ if (output->current.fb && (output->current.fb != output->pending.fb))
+ _release_buffer(output, output->current.fb);
+ output->current.fb = output->pending.fb;
+ output->pending.fb = NULL;
- return !!output->next;
+ return !!output->next.fb;
}
Eina_Bool
@@ -375,29 +375,29 @@ _fb_flip(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb)
int count = 0;
int ret = 0;
- if (output->pending)
+ if (output->pending.fb)
{
- if (output->next) _release_buffer(output, output->next);
- output->next = fb;
- if (output->next) output->next->busy = EINA_TRUE;
+ if (output->next.fb) _release_buffer(output, output->next.fb);
+ output->next.fb = fb;
+ if (output->next.fb) output->next.fb->busy = EINA_TRUE;
return 0;
}
- if (!fb) fb = output->next;
+ if (!fb) fb = output->next.fb;
/* So we can generate a tick by flipping to the current fb */
- if (!fb) fb = output->current;
+ if (!fb) fb = output->current.fb;
- if (output->next)
+ if (output->next.fb)
{
- output->next->busy = EINA_FALSE;
- output->next = NULL;
+ output->next.fb->busy = EINA_FALSE;
+ output->next.fb = NULL;
}
/* If we don't have an fb to set by now, BAIL! */
if (!fb) return -1;
- if ((!output->current) ||
- (output->current->strides[0] != fb->strides[0]))
+ if ((!output->current.fb) ||
+ (output->current.fb->strides[0] != fb->strides[0]))
{
ret =
sym_drmModeSetCrtc(fb->fd, output->crtc_id, fb->id,
@@ -411,10 +411,10 @@ _fb_flip(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb)
return ret;
}
- if (output->current) _release_buffer(output, output->current);
- output->current = fb;
- output->current->busy = EINA_TRUE;
- output->next = NULL;
+ if (output->current.fb) _release_buffer(output, output->current.fb);
+ output->current.fb = fb;
+ output->current.fb->busy = EINA_TRUE;
+ output->next.fb = NULL;
/* We used to return here, but now that the ticker is fixed this
* can leave us hanging waiting for a tick to happen forever.
* Instead, we now fall through the the flip path to make sure
@@ -469,13 +469,13 @@ _fb_flip(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb)
}
else if (ret < 0)
{
- output->next = fb;
- output->next->busy = EINA_TRUE;
+ output->next.fb = fb;
+ output->next.fb->busy = EINA_TRUE;
return 0;
}
- output->pending = fb;
- output->pending->busy = EINA_TRUE;
+ output->pending.fb = fb;
+ output->pending.fb->busy = EINA_TRUE;
return 0;
}
@@ -517,10 +517,10 @@ ecore_drm2_fb_release(Ecore_Drm2_Output *o, Eina_Bool panic)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(o, EINA_FALSE);
- if (o->next)
+ if (o->next.fb)
{
- _release_buffer(o, o->next);
- o->next = NULL;
+ _release_buffer(o, o->next.fb);
+ o->next.fb = NULL;
return EINA_TRUE;
}
if (!panic) return EINA_FALSE;
@@ -533,17 +533,17 @@ ecore_drm2_fb_release(Ecore_Drm2_Output *o, Eina_Bool panic)
/* If we have to release these we're going to see tearing.
* Try to reclaim in decreasing order of visual awfulness
*/
- if (o->current)
+ if (o->current.fb)
{
- _release_buffer(o, o->current);
- o->current = NULL;
+ _release_buffer(o, o->current.fb);
+ o->current.fb = NULL;
return EINA_TRUE;
}
- if (o->pending)
+ if (o->pending.fb)
{
- _release_buffer(o, o->pending);
- o->pending = NULL;
+ _release_buffer(o, o->pending.fb);
+ o->pending.fb = NULL;
return EINA_TRUE;
}
diff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c b/src/lib/ecore_drm2/ecore_drm2_outputs.c
index fa7d223d94..4432380779 100644
--- a/src/lib/ecore_drm2/ecore_drm2_outputs.c
+++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c
@@ -1162,9 +1162,9 @@ EAPI Ecore_Drm2_Fb *
ecore_drm2_output_latest_fb_get(Ecore_Drm2_Output *output)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(output, NULL);
- if (output->pending) return output->pending;
- if (output->current) return output->current;
- return output->next;
+ if (output->pending.fb) return output->pending.fb;
+ if (output->current.fb) return output->current.fb;
+ return output->next.fb;
}
EAPI void
@@ -1233,8 +1233,8 @@ ecore_drm2_output_enabled_set(Ecore_Drm2_Output *output, Eina_Bool enabled)
}
ecore_drm2_output_dpms_set(output, DRM_MODE_DPMS_OFF);
- output->current = NULL;
- /* output->next = NULL; */
+ output->current.fb = NULL;
+ /* output->next.fb = NULL; */
}
_output_event_send(output);
@@ -1370,10 +1370,10 @@ ecore_drm2_output_mode_set(Ecore_Drm2_Output *output, Ecore_Drm2_Output_Mode *mo
{
unsigned int buffer = 0;
- if (output->current)
- buffer = output->current->id;
- else if (output->next)
- buffer = output->next->id;
+ if (output->current.fb)
+ buffer = output->current.fb->id;
+ else if (output->next.fb)
+ buffer = output->next.fb->id;
else
buffer = output->ocrtc->buffer_id;
diff --git a/src/lib/ecore_drm2/ecore_drm2_private.h b/src/lib/ecore_drm2/ecore_drm2_private.h
index d97b7cddef..3bef9fe5bd 100644
--- a/src/lib/ecore_drm2/ecore_drm2_private.h
+++ b/src/lib/ecore_drm2/ecore_drm2_private.h
@@ -772,7 +772,7 @@ struct _Ecore_Drm2_Output
* attempted to commit */
Ecore_Drm2_Output_State prep;
- Ecore_Drm2_Fb *current, *next, *pending;
+ Ecore_Drm2_Output_State current, next, pending;
Eina_Matrix4 matrix, inverse;
Ecore_Drm2_Transform transform;