e - randr allow you to turn off screens and keep them off if config says so

This commit is contained in:
Carsten Haitzler 2015-07-19 22:41:48 +09:00
parent 94a15856bd
commit ee16a11455
2 changed files with 49 additions and 35 deletions

View File

@ -370,6 +370,44 @@ _config_update(E_Randr2 *r, E_Config_Randr2 *cfg)
printf("--------------------------------------------------\n");
}
static void
_config_really_apply(E_Randr2_Screen *s, E_Config_Randr2_Screen *cs)
{
if (cs)
{
s->config.enabled = EINA_TRUE;
s->config.mode.w = cs->mode_w;
s->config.mode.h = cs->mode_h;
s->config.mode.refresh = cs->mode_refresh;
s->config.mode.preferred = EINA_FALSE;
s->config.rotation = cs->rotation;
s->config.priority = cs->priority;
free(s->config.relative.to);
if (cs->rel_to) s->config.relative.to = strdup(cs->rel_to);
else s->config.relative.to = NULL;
s->config.relative.mode = cs->rel_mode;
s->config.relative.align = cs->rel_align;
}
else
{
s->config.enabled = EINA_FALSE;
s->config.geom.x = 0;
s->config.geom.y = 0;
s->config.geom.w = 0;
s->config.geom.h = 0;
s->config.mode.w = 0;
s->config.mode.h = 0;
s->config.mode.refresh = 0.0;
s->config.mode.preferred = EINA_FALSE;
s->config.rotation = 0;
s->config.priority = 0;
free(s->config.relative.to);
s->config.relative.to = NULL;
s->config.relative.mode = E_RANDR2_RELATIVE_NONE;
s->config.relative.align = 0.0;
}
}
static void
_config_apply(E_Randr2 *r, E_Config_Randr2 *cfg)
{
@ -388,22 +426,12 @@ _config_apply(E_Randr2 *r, E_Config_Randr2 *cfg)
if ((cs) && (cs->enabled))
{
printf("RRR: ... enabled\n");
s->config.enabled = EINA_TRUE;
s->config.mode.w = cs->mode_w;
s->config.mode.h = cs->mode_h;
s->config.mode.refresh = cs->mode_refresh;
s->config.mode.preferred = EINA_FALSE;
s->config.rotation = cs->rotation;
s->config.priority = cs->priority;
printf("RRR: ... priority = %i\n", cs->priority);
free(s->config.relative.to);
if (cs->rel_to) s->config.relative.to = strdup(cs->rel_to);
else s->config.relative.to = NULL;
s->config.relative.mode = cs->rel_mode;
s->config.relative.align = cs->rel_align;
_config_really_apply(s, cs);
}
else
else if (!cs)
{
printf("RRR: ... no config found...\n");
cs2 = NULL;
if (s->info.connected)
{
@ -432,13 +460,7 @@ _config_apply(E_Randr2 *r, E_Config_Randr2 *cfg)
if (cs2)
{
printf("RRR: ... enabled - fallback clone\n");
s->config.enabled = EINA_TRUE;
s->config.mode.w = cs2->mode_w;
s->config.mode.h = cs2->mode_h;
s->config.mode.refresh = cs2->mode_refresh;
s->config.mode.preferred = EINA_FALSE;
s->config.rotation = cs2->rotation;
s->config.priority = cs2->priority;
_config_really_apply(s, cs2);
free(s->config.relative.to);
s->config.relative.to = strdup(cs2->id);
printf("RRR: ... clone = %s\n", s->config.relative.to);
@ -448,23 +470,14 @@ _config_apply(E_Randr2 *r, E_Config_Randr2 *cfg)
else
{
printf("RRR: ... disabled\n");
s->config.enabled = EINA_FALSE;
s->config.geom.x = 0;
s->config.geom.y = 0;
s->config.geom.w = 0;
s->config.geom.h = 0;
s->config.mode.w = 0;
s->config.mode.h = 0;
s->config.mode.refresh = 0.0;
s->config.mode.preferred = EINA_FALSE;
s->config.rotation = 0;
s->config.priority = 0;
free(s->config.relative.to);
s->config.relative.to = NULL;
s->config.relative.mode = E_RANDR2_RELATIVE_NONE;
s->config.relative.align = 0.0;
_config_really_apply(s, NULL);
}
}
else
{
printf("RRR: ... disabled\n");
_config_really_apply(s, NULL);
}
s->config.configured = EINA_TRUE;
}
}

View File

@ -506,6 +506,7 @@ _cb_enabled_changed(void *data, Evas_Object *obj, void *event EINA_UNUSED)
E_Config_Randr2_Screen *cs = _config_screen_find(cfdata);
if (!cs) return;
cs->enabled = elm_check_state_get(obj);
printf("RR: enabled = %i\n", cs->enabled);
e_config_dialog_changed_set(cfdata->cfd, EINA_TRUE);
}