forked from enlightenment/enlightenment
parent
95cb1ce29f
commit
e9ecce3b3f
|
@ -150,7 +150,7 @@ struct _E_Randr_Serialized_Crtc
|
||||||
Evas_Coord_Point pos;
|
Evas_Coord_Point pos;
|
||||||
Ecore_X_Randr_Orientation orientation;
|
Ecore_X_Randr_Orientation orientation;
|
||||||
//the serialized mode_info
|
//the serialized mode_info
|
||||||
Ecore_X_Randr_Mode_Info mode_info;
|
Ecore_X_Randr_Mode_Info *mode_info;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _E_Randr_Serialized_Setup_12
|
struct _E_Randr_Serialized_Setup_12
|
||||||
|
|
|
@ -70,11 +70,12 @@ e_randr_12_serialized_output_policy_free(E_Randr_Serialized_Output_Policy *polic
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_serialized_mode_info_free(Ecore_X_Randr_Mode_Info *mode_info)
|
_mode_info_free(Ecore_X_Randr_Mode_Info *mode_info)
|
||||||
{
|
{
|
||||||
EINA_SAFETY_ON_NULL_RETURN(mode_info);
|
EINA_SAFETY_ON_NULL_RETURN(mode_info);
|
||||||
|
|
||||||
free(mode_info->name);
|
free(mode_info->name);
|
||||||
|
free(mode_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -86,7 +87,7 @@ _serialized_crtc_free(E_Randr_Serialized_Crtc *sc)
|
||||||
|
|
||||||
EINA_LIST_FREE (sc->outputs, so)
|
EINA_LIST_FREE (sc->outputs, so)
|
||||||
_serialized_output_free(so);
|
_serialized_output_free(so);
|
||||||
_serialized_mode_info_free(&sc->mode_info);
|
_mode_info_free(sc->mode_info);
|
||||||
free(sc);
|
free(sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,36 +118,35 @@ _eina_list_data_index_get(const Eina_List *list, const void *data)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
Ecore_X_Randr_Mode_Info
|
||||||
_mode_info_clone(Ecore_X_Randr_Mode_Info *dst, const Ecore_X_Randr_Mode_Info *src)
|
*_mode_info_clone(const Ecore_X_Randr_Mode_Info *src)
|
||||||
{
|
{
|
||||||
EINA_SAFETY_ON_NULL_RETURN(dst);
|
Ecore_X_Randr_Mode_Info *mi = NULL;
|
||||||
|
|
||||||
if (!src)
|
EINA_SAFETY_ON_NULL_RETURN_VAL(src, NULL);
|
||||||
{
|
|
||||||
dst->xid = Ecore_X_Randr_None;
|
|
||||||
dst->name = NULL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
dst->xid = src->xid;
|
mi = E_NEW(Ecore_X_Randr_Mode_Info, 1);
|
||||||
dst->width = src->width;
|
|
||||||
dst->height = src->height;
|
mi->xid = src->xid;
|
||||||
dst->dotClock = src->dotClock;
|
mi->width = src->width;
|
||||||
dst->hSyncStart = src->hSyncStart;
|
mi->height = src->height;
|
||||||
dst->hSyncEnd = src->hSyncEnd;
|
mi->dotClock = src->dotClock;
|
||||||
dst->hTotal = src->hTotal;
|
mi->hSyncStart = src->hSyncStart;
|
||||||
dst->hSkew = src->hSkew;
|
mi->hSyncEnd = src->hSyncEnd;
|
||||||
dst->vSyncStart = src->vSyncStart;
|
mi->hTotal = src->hTotal;
|
||||||
dst->vSyncEnd = src->vSyncEnd;
|
mi->hSkew = src->hSkew;
|
||||||
dst->vTotal = src->vTotal;
|
mi->vSyncStart = src->vSyncStart;
|
||||||
|
mi->vSyncEnd = src->vSyncEnd;
|
||||||
|
mi->vTotal = src->vTotal;
|
||||||
if (src->nameLength > 0)
|
if (src->nameLength > 0)
|
||||||
{
|
{
|
||||||
dst->name = malloc(src->nameLength + 1);
|
mi->name = malloc(src->nameLength + 1);
|
||||||
strncpy(dst->name, src->name, src->nameLength);
|
strncpy(mi->name, src->name, src->nameLength);
|
||||||
}
|
}
|
||||||
dst->nameLength = src->nameLength;
|
mi->nameLength = src->nameLength;
|
||||||
dst->modeFlags = src->modeFlags;
|
mi->modeFlags = src->modeFlags;
|
||||||
|
|
||||||
|
return mi;
|
||||||
}
|
}
|
||||||
|
|
||||||
E_Randr_Edid_Hash
|
E_Randr_Edid_Hash
|
||||||
|
@ -224,6 +224,7 @@ _serialized_crtc_new(E_Randr_Crtc_Info *crtc_info)
|
||||||
|
|
||||||
//Get relative index of CRTC
|
//Get relative index of CRTC
|
||||||
sc->index = _eina_list_data_index_get(e_randr_screen_info.rrvd_info.randr_info_12->crtcs, crtc_info);
|
sc->index = _eina_list_data_index_get(e_randr_screen_info.rrvd_info.randr_info_12->crtcs, crtc_info);
|
||||||
|
|
||||||
//Create list of serialized outputs
|
//Create list of serialized outputs
|
||||||
EINA_LIST_FOREACH(crtc_info->outputs, iter, output_info)
|
EINA_LIST_FOREACH(crtc_info->outputs, iter, output_info)
|
||||||
{
|
{
|
||||||
|
@ -236,7 +237,7 @@ _serialized_crtc_new(E_Randr_Crtc_Info *crtc_info)
|
||||||
sc->pos.y = crtc_info->geometry.y;
|
sc->pos.y = crtc_info->geometry.y;
|
||||||
sc->orientation = crtc_info->current_orientation;
|
sc->orientation = crtc_info->current_orientation;
|
||||||
//Clone mode
|
//Clone mode
|
||||||
_mode_info_clone(&sc->mode_info, crtc_info->current_mode);
|
sc->mode_info = _mode_info_clone(crtc_info->current_mode);
|
||||||
|
|
||||||
return sc;
|
return sc;
|
||||||
}
|
}
|
||||||
|
@ -266,7 +267,7 @@ _12_serialized_setup_new(void)
|
||||||
if (!sc)
|
if (!sc)
|
||||||
continue;
|
continue;
|
||||||
ss->crtcs = eina_list_append(ss->crtcs, sc);
|
ss->crtcs = eina_list_append(ss->crtcs, sc);
|
||||||
fprintf(stderr, "E_RANDR: Serialized CRTC %d (index %d) in mode %s.\n", ci->xid, sc->index, sc->mode_info.name ? sc->mode_info.name : "(disabled)");
|
fprintf(stderr, "E_RANDR: Serialized CRTC %d (index %d) in mode %s.\n", ci->xid, sc->index, (sc->mode_info ? sc->mode_info->name : "(disabled)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -395,7 +396,7 @@ _12_try_restore_configuration(void)
|
||||||
E_Randr_Crtc_Info *ci;
|
E_Randr_Crtc_Info *ci;
|
||||||
Ecore_X_Randr_Output *outputs_array;
|
Ecore_X_Randr_Output *outputs_array;
|
||||||
E_Randr_Output_Info *output_info;
|
E_Randr_Output_Info *output_info;
|
||||||
Ecore_X_Randr_Mode_Info *mi;
|
Ecore_X_Randr_Mode_Info *mi = NULL;
|
||||||
Ecore_X_Randr_Mode mode;
|
Ecore_X_Randr_Mode mode;
|
||||||
Eina_List *iter, *outputs_list, *outputs_iter;
|
Eina_List *iter, *outputs_list, *outputs_iter;
|
||||||
Eina_Bool ret = EINA_TRUE;
|
Eina_Bool ret = EINA_TRUE;
|
||||||
|
@ -413,12 +414,12 @@ _12_try_restore_configuration(void)
|
||||||
outputs_list = _find_matching_outputs(sc->outputs);
|
outputs_list = _find_matching_outputs(sc->outputs);
|
||||||
outputs_array = _outputs_to_array(outputs_list);
|
outputs_array = _outputs_to_array(outputs_list);
|
||||||
fprintf(stderr, "E_RANDR: \tSerialized mode ");
|
fprintf(stderr, "E_RANDR: \tSerialized mode ");
|
||||||
if (sc->mode_info.xid == Ecore_X_Randr_None)
|
if (!sc->mode_info)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "was disabled.\n");
|
fprintf(stderr, "was disabled.\n");
|
||||||
mode = Ecore_X_Randr_None;
|
mode = Ecore_X_Randr_None;
|
||||||
}
|
}
|
||||||
else if ((mi = _find_matching_mode_info(&sc->mode_info)))
|
else if ((mi = _find_matching_mode_info(sc->mode_info)))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "is now known under the name %s.\n", mi->name);
|
fprintf(stderr, "is now known under the name %s.\n", mi->name);
|
||||||
mode = mi->xid;
|
mode = mi->xid;
|
||||||
|
@ -428,8 +429,8 @@ _12_try_restore_configuration(void)
|
||||||
// The serialized mode is no longer available
|
// The serialized mode is no longer available
|
||||||
mi->name = malloc(MODE_STR_LENGTH_MAX);
|
mi->name = malloc(MODE_STR_LENGTH_MAX);
|
||||||
//IMPROVABLE: Use random string, like mktemp for files
|
//IMPROVABLE: Use random string, like mktemp for files
|
||||||
snprintf(mi->name, (MODE_STR_LENGTH_MAX - 1), "%ux%u,%lu,%lu", sc->mode_info.width, sc->mode_info.height, sc->mode_info.dotClock, sc->mode_info.modeFlags);
|
snprintf(mi->name, (MODE_STR_LENGTH_MAX - 1), "%ux%u,%lu,%lu", sc->mode_info->width, sc->mode_info->height, sc->mode_info->dotClock, sc->mode_info->modeFlags);
|
||||||
mi = &sc->mode_info;
|
mi = sc->mode_info;
|
||||||
mode = ecore_x_randr_mode_info_add(e_randr_screen_info.root, mi);
|
mode = ecore_x_randr_mode_info_add(e_randr_screen_info.root, mi);
|
||||||
if (mode == Ecore_X_Randr_None)
|
if (mode == Ecore_X_Randr_None)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue