forked from enlightenment/enlightenment
Fix rare bug where getting refresh rate may cause a crash if
mode->name is NULL by checking mode id instead of name. Also if we are disabling a monitor, set current mode to 0. Signed-off-by: Chris Michael <devilhorns@comcast.net>
This commit is contained in:
parent
87dd451353
commit
ee0a87773c
|
@ -836,6 +836,7 @@ e_smart_monitor_changes_apply(Evas_Object *obj)
|
||||||
noutputs = 0;
|
noutputs = 0;
|
||||||
if (outputs) free(outputs);
|
if (outputs) free(outputs);
|
||||||
outputs = NULL;
|
outputs = NULL;
|
||||||
|
sd->current.mode = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
cx = sd->current.x;
|
cx = sd->current.x;
|
||||||
|
@ -862,15 +863,12 @@ e_smart_monitor_changes_apply(Evas_Object *obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// else
|
|
||||||
{
|
|
||||||
/* try to apply the settings */
|
/* try to apply the settings */
|
||||||
printf("Applying Settings: %d %d %d %d\n", sd->crtc.id, cx, cy, mode);
|
printf("Applying Settings: %d %d %d %d\n", sd->crtc.id, cx, cy, mode);
|
||||||
|
|
||||||
if (!ecore_x_randr_crtc_settings_set(root, sd->crtc.id, outputs,
|
if (!ecore_x_randr_crtc_settings_set(root, sd->crtc.id, outputs,
|
||||||
noutputs, cx, cy, mode, orient))
|
noutputs, cx, cy, mode, orient))
|
||||||
printf("FAILED TO APPLY MONITOR SETTINGS !!!\n");
|
printf("FAILED TO APPLY MONITOR SETTINGS !!!\n");
|
||||||
}
|
|
||||||
|
|
||||||
/* free any allocated memory from ecore_x_randr */
|
/* free any allocated memory from ecore_x_randr */
|
||||||
if (outputs) free(outputs);
|
if (outputs) free(outputs);
|
||||||
|
@ -1556,8 +1554,8 @@ _e_smart_monitor_mode_refresh_rates_fill(Evas_Object *obj)
|
||||||
/* loop the modes and find the current one */
|
/* loop the modes and find the current one */
|
||||||
EINA_LIST_FOREACH(sd->modes, m, mode)
|
EINA_LIST_FOREACH(sd->modes, m, mode)
|
||||||
{
|
{
|
||||||
/* compare mode names */
|
/* compare mode IDs */
|
||||||
if (!strcmp(cmode->name, mode->name))
|
if (cmode->xid == mode->xid)
|
||||||
{
|
{
|
||||||
Evas_Object *ow;
|
Evas_Object *ow;
|
||||||
double rate = 0.0;
|
double rate = 0.0;
|
||||||
|
|
Loading…
Reference in New Issue