ecore-drm: Fix segfault if sending output event and output has no current mode

Summary: This fixes a segfault which could happen if we enable an
output before setting the output current mode. Now we test for an
output having a current_mode, and if not we use the crtc size when
sending the output event.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2015-05-14 08:36:57 -04:00
parent 2cf0ed49ce
commit eaf2b91a3d
1 changed files with 13 additions and 3 deletions

View File

@ -42,13 +42,23 @@ _ecore_drm_output_event_send(const Ecore_Drm_Output *output, Eina_Bool plug)
if (!(e = calloc(1, sizeof(Ecore_Drm_Event_Output)))) return;
e->plug = plug;
e->id = output->crtc_id;
e->w = output->current_mode->width;
e->h = output->current_mode->height;
if (output->current_mode)
{
e->w = output->current_mode->width;
e->h = output->current_mode->height;
e->refresh = output->current_mode->refresh;
}
else if (output->crtc)
{
e->w = output->crtc->width;
e->h = output->crtc->height;
}
e->x = output->x;
e->y = output->y;
e->phys_width = output->phys_width;
e->phys_height = output->phys_height;
e->refresh = output->current_mode->refresh;
e->subpixel_order = output->subpixel;
e->make = eina_stringshare_ref(output->make);
e->model = eina_stringshare_ref(output->model);