Disable e_randr refresh on startup, because runtime settings get lost

SVN revision: 68169
This commit is contained in:
Leif Middelschulte 2012-02-20 19:14:16 +00:00
parent 147659280f
commit f4820b562e
4 changed files with 44 additions and 40 deletions

View File

@ -121,7 +121,7 @@ create_data(E_Config_Dialog *cfd)
// Prove we got all things to get going // Prove we got all things to get going
EINA_SAFETY_ON_TRUE_RETURN_VAL(!E_RANDR_12, NULL); EINA_SAFETY_ON_TRUE_RETURN_VAL(!E_RANDR_12, NULL);
e_randr_screen_info_refresh(); //e_randr_screen_info_refresh();
e_config_runtime_info = E_NEW(E_Config_Dialog_Data, 1); e_config_runtime_info = E_NEW(E_Config_Dialog_Data, 1);
e_config_runtime_info->cfd = cfd; e_config_runtime_info->cfd = cfd;

View File

@ -220,15 +220,14 @@ _dialog_subdialog_arrangement_rep_add(Evas *canvas, E_Config_Randr_Dialog_Output
//Try to get the name of the monitor connected to the output's last output via edid //Try to get the name of the monitor connected to the output's last output via edid
//else use the output's name //else use the output's name
if (output_dialog_data->crtc) if (output_dialog_data->crtc)
output_info = (E_Randr_Output_Info *)eina_list_data_get(eina_list_last(output_dialog_data->crtc->outputs)); output_info = (E_Randr_Output_Info *)eina_list_data_get(output_dialog_data->crtc->outputs);
else else
output_info = output_dialog_data->output; output_info = output_dialog_data->output;
if (output_info) if (output_info)
{ {
if (output_info->monitor && if (output_info->monitor)
ecore_x_randr_edid_has_valid_header(output_info->monitor->edid, output_info->monitor->edid_length))
output_name = ecore_x_randr_edid_display_name_get(output_info->monitor->edid, output_info->monitor->edid_length); output_name = ecore_x_randr_edid_display_name_get(output_info->monitor->edid, output_info->monitor->edid_length);
else if (output_info->name) if (!output_name && output_info->name)
output_name = output_info->name; output_name = output_info->name;
} }
if (output_name) if (output_name)

View File

@ -15,7 +15,7 @@ Eina_Bool dialog_subdialog_orientation_basic_apply_data(E_Config_Dialog *cfd,
void dialog_subdialog_orientation_update_radio_buttons(Evas_Object *crtc); void dialog_subdialog_orientation_update_radio_buttons(Evas_Object *crtc);
void dialog_subdialog_orientation_update_edje(Evas_Object *crtc); void dialog_subdialog_orientation_update_edje(Evas_Object *crtc);
//static void _dialog_subdialog_orientation_policy_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); //static void _dialog_subdialog_orientation_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
extern E_Config_Dialog_Data *e_config_runtime_info; extern E_Config_Dialog_Data *e_config_runtime_info;
extern char _theme_file_path[]; extern char _theme_file_path[];
@ -23,12 +23,12 @@ extern char _theme_file_path[];
static void static void
_dialog_subdialog_orientation_radio_add_callbacks(void) _dialog_subdialog_orientation_radio_add_callbacks(void)
{ {
evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_reflect_vertical, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_policy_mouse_up_cb, NULL); evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_reflect_vertical, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_mouse_up_cb, NULL);
evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_reflect_horizontal, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_policy_mouse_up_cb, NULL); evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_reflect_horizontal, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_mouse_up_cb, NULL);
evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_rot270, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_policy_mouse_up_cb, NULL); evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_rot270, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_mouse_up_cb, NULL);
evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_rot180, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_policy_mouse_up_cb, NULL); evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_rot180, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_mouse_up_cb, NULL);
evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_rot90, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_policy_mouse_up_cb, NULL); evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_rot90, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_mouse_up_cb, NULL);
evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_normal, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_policy_mouse_up_cb, NULL); evas_object_event_callback_add (e_config_runtime_info->gui.subdialogs.orientation.radio_normal, EVAS_CALLBACK_MOUSE_UP, _dialog_subdialog_orientation_mouse_up_cb, NULL);
} }
*/ */
@ -122,7 +122,7 @@ _dialog_subdialog_orientation_radio_add_fail:
#if 0 #if 0
static void static void
_dialog_subdialog_orientation_policy_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) _dialog_subdialog_orientation_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{ {
char signal[40]; char signal[40];
int orientation = ECORE_X_RANDR_ORIENTATION_ROT_0; int orientation = ECORE_X_RANDR_ORIENTATION_ROT_0;

View File

@ -19,19 +19,19 @@ Eina_Bool dialog_subdialog_policies_create_data(E_Config_Dialog_Data *e_confi
Eina_Bool dialog_subdialog_policies_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); Eina_Bool dialog_subdialog_policies_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
Eina_Bool dialog_subdialog_policies_basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); Eina_Bool dialog_subdialog_policies_basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
Eina_Bool dialog_subdialog_policies_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); Eina_Bool dialog_subdialog_policies_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
void dialog_subdialog_policies_update_radio_buttons(Evas_Object *crtc); void dialog_subdialog_policies_update_radio_buttons(Evas_Object *rep);
//static void _dialog_subdialog_policies_policy_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); //static void _dialog_subdialog_policies_policy_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
extern E_Config_Dialog_Data *e_config_runtime_info; extern E_Config_Dialog_Data *e_config_runtime_info;
extern char _theme_file_path[]; extern char _theme_file_path[];
static const char *_ECORE_X_RANDR_POLICIES_STRINGS[] = { static const char *_POLICIES_STRINGS[] = {
"ECORE_X_RANDR_OUTPUT_POLICY_ABOVE", "ABOVE",
"ECORE_X_RANDR_OUTPUT_POLICY_RIGHT", "RIGHT",
"ECORE_X_RANDR_OUTPUT_POLICY_BELOW", "BELOW",
"ECORE_X_RANDR_OUTPUT_POLICY_LEFT", "LEFT",
"ECORE_X_RANDR_OUTPUT_POLICY_CLONE", "CLONE",
"ECORE_X_RANDR_OUTPUT_POLICY_NONE"}; "NONE"};
/* /*
@ -51,20 +51,21 @@ Eina_Bool
dialog_subdialog_policies_create_data(E_Config_Dialog_Data *e_config_runtime_info) dialog_subdialog_policies_create_data(E_Config_Dialog_Data *e_config_runtime_info)
{ {
E_Config_Randr_Dialog_Output_Dialog_Data *odd; E_Config_Randr_Dialog_Output_Dialog_Data *odd;
E_Randr_Output_Info *oi;
Eina_List *iter; Eina_List *iter;
if (!e_config_runtime_info || !e_config_runtime_info->output_dialog_data_list) return EINA_FALSE; if (!e_config_runtime_info || !e_config_runtime_info->output_dialog_data_list) return EINA_FALSE;
EINA_LIST_FOREACH(e_config_runtime_info->output_dialog_data_list, iter, odd) EINA_LIST_FOREACH(e_config_runtime_info->output_dialog_data_list, iter, odd)
{ {
E_Randr_Output_Info *oi;
if (odd->crtc) if (odd->crtc)
oi = eina_list_data_get(eina_list_last(odd->crtc->outputs)); oi = eina_list_data_get(odd->crtc->outputs);
else if (odd->output) else if (odd->output)
oi = odd->output; oi = odd->output;
else continue; else continue;
odd->previous_policy = oi->policy; odd->previous_policy = oi->policy;
odd->new_policy = oi->policy; odd->new_policy = oi->policy;
fprintf(stderr, "CONF_RANDR: Read in policy of %d as %s.\n", oi->xid, _POLICIES_STRINGS[odd->new_policy - 1]);
} }
return EINA_TRUE; return EINA_TRUE;
@ -205,7 +206,7 @@ dialog_subdialog_policies_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Co
//policy update //policy update
e_config_runtime_info->gui.selected_output_dd->previous_policy = e_config_runtime_info->gui.selected_output_dd->new_policy; e_config_runtime_info->gui.selected_output_dd->previous_policy = e_config_runtime_info->gui.selected_output_dd->new_policy;
e_config_runtime_info->gui.selected_output_dd->new_policy = e_config_runtime_info->gui.subdialogs.policies.radio_val; e_config_runtime_info->gui.selected_output_dd->new_policy = e_config_runtime_info->gui.subdialogs.policies.radio_val;
fprintf(stderr, "CONF_RANDR: 'New display attached'-policy set to %s.\n", _ECORE_X_RANDR_POLICIES_STRINGS[e_config_runtime_info->gui.selected_output_dd->new_policy - 1]); fprintf(stderr, "CONF_RANDR: 'New display attached'-policy set to %s.\n", _POLICIES_STRINGS[e_config_runtime_info->gui.selected_output_dd->new_policy - 1]);
return EINA_TRUE; return EINA_TRUE;
} }
@ -219,14 +220,13 @@ dialog_subdialog_policies_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E
} }
void void
dialog_subdialog_policies_update_radio_buttons(Evas_Object *crtc) dialog_subdialog_policies_update_radio_buttons(Evas_Object *rep)
{ {
E_Config_Randr_Dialog_Output_Dialog_Data *output_dialog_data; E_Config_Randr_Dialog_Output_Dialog_Data *output_dialog_data;
E_Randr_Output_Info *output = NULL;
Ecore_X_Randr_Output_Policy policy; Ecore_X_Randr_Output_Policy policy;
//disable widgets, if no crtc is selected //disable widgets, if no rep is selected
if (!crtc || !(output_dialog_data = evas_object_data_get(crtc, "rep_info"))) if (!rep || !(output_dialog_data = evas_object_data_get(rep, "rep_info")))
{ {
//Evas_Object *radio_above, *radio_right, *radio_below, *radio_left, *radio_clone, *radio_none; //Evas_Object *radio_above, *radio_right, *radio_below, *radio_left, *radio_clone, *radio_none;
e_widget_disabled_set(e_config_runtime_info->gui.subdialogs.policies.radio_above, EINA_TRUE); e_widget_disabled_set(e_config_runtime_info->gui.subdialogs.policies.radio_above, EINA_TRUE);
@ -247,17 +247,7 @@ dialog_subdialog_policies_update_radio_buttons(Evas_Object *crtc)
e_widget_disabled_set(e_config_runtime_info->gui.subdialogs.policies.radio_none, EINA_FALSE); e_widget_disabled_set(e_config_runtime_info->gui.subdialogs.policies.radio_none, EINA_FALSE);
} }
if (output_dialog_data->crtc && output_dialog_data->crtc->outputs) policy = output_dialog_data->new_policy;
{
output = (E_Randr_Output_Info *)eina_list_data_get(eina_list_last(output_dialog_data->crtc->outputs));
}
else if (output_dialog_data->output)
{
output = output_dialog_data->output;
}
if (!output) return;
policy = output->policy;
e_config_runtime_info->gui.selected_output_dd = output_dialog_data; e_config_runtime_info->gui.selected_output_dd = output_dialog_data;
//toggle the switch of the currently used policies //toggle the switch of the currently used policies
switch (policy) switch (policy)
@ -291,11 +281,26 @@ void
dialog_subdialog_policies_keep_changes(E_Config_Dialog_Data *cfdata) dialog_subdialog_policies_keep_changes(E_Config_Dialog_Data *cfdata)
{ {
E_Config_Randr_Dialog_Output_Dialog_Data *odd; E_Config_Randr_Dialog_Output_Dialog_Data *odd;
E_Randr_Output_Info *oi;
Eina_List *iter;
if (!cfdata || !cfdata->gui.selected_output_dd || !cfdata->gui.selected_output_dd->output) return; if (!cfdata || !cfdata->gui.selected_output_dd || !cfdata->gui.selected_output_dd->output) return;
odd = cfdata->gui.selected_output_dd; odd = cfdata->gui.selected_output_dd;
odd->previous_policy = odd->new_policy; odd->previous_policy = odd->new_policy;
odd->output->policy = odd->new_policy; if (odd->crtc)
{
EINA_LIST_FOREACH(odd->crtc->outputs, iter, oi)
{
oi->policy = odd->new_policy;
fprintf(stderr, "CONF_RANDR: Policy change to %s kept for output %d.\n", _POLICIES_STRINGS[odd->new_policy - 1], oi->xid);
}
}
else if (odd->output)
{
odd->output->policy = odd->new_policy;
fprintf(stderr, "CONF_RANDR: Policy change to %s kept for output %d.\n", _POLICIES_STRINGS[odd->new_policy - 1], odd->output->xid);
}
} }
void void