Add function code for functions:

ecore_drm_device_close, ecore_drm_device_master_get,
ecore_drm_device_master_set, ecore_drm_device_master_drop

This functions will be used for drm rendering to set the drm device as
master, or to drop being master, etc, etc.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2013-12-10 13:50:25 +00:00
parent 3b79d6841b
commit 54c4a4675d
1 changed files with 88 additions and 1 deletions

View File

@ -222,8 +222,95 @@ ecore_drm_device_open(Ecore_Drm_Device *dev)
EAPI Eina_Bool
ecore_drm_device_close(Ecore_Drm_Device *dev)
{
Eina_Bool ret = EINA_FALSE;
void *data;
/* check for valid device */
if (!dev) return EINA_TRUE;
if (!dev) return EINA_FALSE;
/* try to close the device */
_ecore_drm_message_send(ECORE_DRM_OP_DEVICE_CLOSE, &dev->fd, sizeof(int));
/* get the result of the close operation */
ret = _ecore_drm_message_receive(ECORE_DRM_OP_DEVICE_CLOSE, &data, sizeof(int));
if (!ret) return EINA_FALSE;
/* reset device fd */
dev->fd = -1;
return EINA_TRUE;
}
/**
* Get if a given Ecore_Drm_Device is master
*
* This function will check if the given drm device is set to master
*
* @param dev The Ecore_Drm_Device to check
*
* @return EINA_TRUE if device is master, EINA_FALSE otherwise
*
* @ingroup Ecore_Drm_Device_Group
*/
EAPI Eina_Bool
ecore_drm_device_master_get(Ecore_Drm_Device *dev)
{
drm_magic_t mag;
int gret = 0, aret = 0;
/* check for valid device */
if ((!dev) || (dev->fd < 0)) return EINA_FALSE;
/* get if we are master or not */
if ((drmGetMagic(dev->fd, &mag) == 0) &&
(drmAuthMagic(dev->fd, msg) == 0))
return EINA_TRUE;
return EINA_FALSE;
}
/**
* Set a given Ecore_Drm_Device to master
*
* This function will attempt to set a given drm device to be master
*
* @param dev The Ecore_Drm_Device to set
*
* @return EINA_TRUE on success, EINA_FALSE on failure
*
* @ingroup Ecore_Drm_Device_Group
*/
EAPI Eina_Bool
ecore_drm_device_master_set(Ecore_Drm_Device *dev)
{
/* check for valid device */
if ((!dev) || (dev->fd < 0)) return EINA_FALSE;
/* try to set master */
if (drmSetMaster(dev->fd) == 0) return EINA_TRUE;
return EINA_FALSE;
}
/**
* Tell a given Ecore_Drm_Device to stop being master
*
* This function will attempt to ask a drm device to stop being master
*
* @param dev The Ecore_Drm_Device to set
*
* @return EINA_TRUE on success, EINA_FALSE on failure
*
* @ingroup Ecore_Drm_Device_Group
*/
EAPI Eina_Bool
ecore_drm_device_master_drop(Ecore_Drm_Device *dev)
{
/* check for valid device */
if ((!dev) || (dev->fd < 0)) return EINA_FALSE;
/* try to drop being master */
if (drmDropMaster(dev->fd) == 0) return EINA_TRUE;
return EINA_FALSE;
}