(char *)(&(eroc.edid)) - (char *)(&(eroc)),
(char *)(&(eroc.edid_count)) -
(char *)(&(eroc)), NULL, NULL);
+ eet_data_descriptor_element_add(D, "clones", EET_T_UINT, EET_G_VAR_ARRAY,
+ (char *)(&(eroc.clones)) - (char *)(&(eroc)),
+ (char *)(&(eroc.clone_count)) -
+ (char *)(&(eroc)), NULL, NULL);
/* define edd for crtc config */
_e_randr_crtc_edd =
ecore_x_randr_output_edid_get(root, outputs[j],
&output_cfg->edid_count);
+ /* get the clones for this output */
+ output_cfg->clones =
+ ecore_x_randr_output_clones_get(root, outputs[i],
+ &output_cfg->clone_count);
+
/* add this output to the list for this crtc */
crtc_cfg->outputs =
eina_list_append(crtc_cfg->outputs, output_cfg);
/* loop the config outputs on this crtc and free them */
EINA_LIST_FREE(crtc->outputs, output)
{
+ if (output->clones) free(output->clones);
if (output->edid) free(output->edid);
+
E_FREE(output);
}
unsigned char primary; // flag to indicate if primary output
unsigned long edid_count; // monitor's edid length
unsigned char *edid; // monitor's edid
+ unsigned int *clones; // array of clones (each element of type ecore_x_randr output id (xid)
+ unsigned long clone_count; // number of clones
};
struct _E_Randr_Crtc_Config