Fix crtc_info_get function (memcpy fails here in some cases, so

manually allocate and copy things over).

Signed-off-by: Christopher Michael <cp.michael@samsung.com>

SVN revision: 83737
This commit is contained in:
Christopher Michael 2013-02-07 12:43:46 +00:00 committed by Christopher Michael
parent ad0bb4c6f6
commit 2fe1fa053f
1 changed files with 32 additions and 1 deletions

View File

@ -1800,7 +1800,38 @@ ecore_x_randr_crtc_info_get(Ecore_X_Window root, const Ecore_X_Randr_Crtc crtc)
if ((info = XRRGetCrtcInfo(_ecore_x_disp, res, crtc)))
{
if ((ret = malloc(sizeof(Ecore_X_Randr_Crtc_Info))))
memcpy(ret, info, sizeof(Ecore_X_Randr_Crtc_Info));
{
/* copy the mode information into our return structure */
ret->timestamp = info->timestamp;
ret->x = info->x;
ret->y = info->y;
ret->width = info->width;
ret->height = info->height;
ret->mode = info->mode;
ret->rotation = info->rotation;
ret->noutput = info->noutput;
ret->npossible = info->npossible;
if ((ret->outputs =
malloc(info->noutput * sizeof(Ecore_X_Randr_Output))))
{
int i = 0;
/* loop the outputs on this crtc */
for (i = 0; i < info->noutput; i++)
ret->outputs[i] = info->outputs[i];
}
if ((ret->possible =
malloc(info->npossible * sizeof(Ecore_X_Randr_Output))))
{
int i = 0;
/* loop the outputs on this crtc */
for (i = 0; i < info->npossible; i++)
ret->possible[i] = info->possible[i];
}
}
/* free the crtc info */
XRRFreeCrtcInfo(info);