ecore_drm2: Cleanup explicit thread handling
There were cases where the thread queue was not being created, and cases where the thread queue was not being cleaned up properly.
This commit is contained in:
parent
01c6609a82
commit
e21afd5d1a
|
@ -238,6 +238,8 @@ _ecore_drm2_connectors_create(Ecore_Drm2_Device *dev)
|
|||
return EINA_TRUE;
|
||||
|
||||
err:
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
_ecore_drm2_connectors_destroy(dev);
|
||||
sym_drmModeFreeConnector(conn);
|
||||
sym_drmModeFreeResources(res);
|
||||
|
@ -257,6 +259,9 @@ _ecore_drm2_connectors_destroy(Ecore_Drm2_Device *dev)
|
|||
free(conn);
|
||||
}
|
||||
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
if (thq)
|
||||
{
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -219,6 +219,8 @@ _ecore_drm2_crtcs_create(Ecore_Drm2_Device *dev)
|
|||
return EINA_TRUE;
|
||||
|
||||
err:
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
_ecore_drm2_crtcs_destroy(dev);
|
||||
sym_drmModeFreeCrtc(c);
|
||||
sym_drmModeFreeResources(res);
|
||||
|
@ -238,8 +240,11 @@ _ecore_drm2_crtcs_destroy(Ecore_Drm2_Device *dev)
|
|||
free(crtc);
|
||||
}
|
||||
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
if (thq)
|
||||
{
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -449,6 +449,8 @@ _ecore_drm2_displays_create(Ecore_Drm2_Device *dev)
|
|||
Ecore_Drm2_Crtc *crtc;
|
||||
Eina_List *l = NULL, *ll = NULL;
|
||||
|
||||
thq = eina_thread_queue_new();
|
||||
|
||||
/* go through list of connectors and create displays */
|
||||
EINA_LIST_FOREACH(dev->conns, l, c)
|
||||
{
|
||||
|
@ -517,8 +519,11 @@ _ecore_drm2_displays_destroy(Ecore_Drm2_Device *dev)
|
|||
free(disp);
|
||||
}
|
||||
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
if (thq)
|
||||
{
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -265,6 +265,8 @@ _ecore_drm2_planes_create(Ecore_Drm2_Device *dev)
|
|||
pres = sym_drmModeGetPlaneResources(dev->fd);
|
||||
if (!pres) return EINA_FALSE;
|
||||
|
||||
thq = eina_thread_queue_new();
|
||||
|
||||
for (; i < pres->count_planes; i++)
|
||||
{
|
||||
/* try to get this plane from drm */
|
||||
|
@ -286,6 +288,8 @@ _ecore_drm2_planes_create(Ecore_Drm2_Device *dev)
|
|||
return EINA_TRUE;
|
||||
|
||||
err:
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
_ecore_drm2_planes_destroy(dev);
|
||||
sym_drmModeFreePlane(p);
|
||||
sym_drmModeFreePlaneResources(pres);
|
||||
|
@ -305,6 +309,9 @@ _ecore_drm2_planes_destroy(Ecore_Drm2_Device *dev)
|
|||
free(plane);
|
||||
}
|
||||
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
if (thq)
|
||||
{
|
||||
eina_thread_queue_free(thq);
|
||||
thq = NULL;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue