From f4820b562ea3c80e58ad9b0173926d3173e84e0b Mon Sep 17 00:00:00 2001 From: Leif Middelschulte Date: Mon, 20 Feb 2012 19:14:16 +0000 Subject: [PATCH] Disable e_randr refresh on startup, because runtime settings get lost SVN revision: 68169 --- src/modules/conf_randr/e_int_config_randr.c | 2 +- .../e_int_config_randr_arrangement.c | 7 +-- .../e_int_config_randr_orientation.c | 16 ++--- .../conf_randr/e_int_config_randr_policies.c | 59 ++++++++++--------- 4 files changed, 44 insertions(+), 40 deletions(-) diff --git a/src/modules/conf_randr/e_int_config_randr.c b/src/modules/conf_randr/e_int_config_randr.c index d453a524d..3c0010a16 100644 --- a/src/modules/conf_randr/e_int_config_randr.c +++ b/src/modules/conf_randr/e_int_config_randr.c @@ -121,7 +121,7 @@ create_data(E_Config_Dialog *cfd) // Prove we got all things to get going 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->cfd = cfd; diff --git a/src/modules/conf_randr/e_int_config_randr_arrangement.c b/src/modules/conf_randr/e_int_config_randr_arrangement.c index 0fc35dfc2..5d4d6da7c 100644 --- a/src/modules/conf_randr/e_int_config_randr_arrangement.c +++ b/src/modules/conf_randr/e_int_config_randr_arrangement.c @@ -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 //else use the output's name 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 output_info = output_dialog_data->output; if (output_info) { - if (output_info->monitor && - ecore_x_randr_edid_has_valid_header(output_info->monitor->edid, output_info->monitor->edid_length)) + if (output_info->monitor) 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; } if (output_name) diff --git a/src/modules/conf_randr/e_int_config_randr_orientation.c b/src/modules/conf_randr/e_int_config_randr_orientation.c index 41f1c9213..2e5973863 100644 --- a/src/modules/conf_randr/e_int_config_randr_orientation.c +++ b/src/modules/conf_randr/e_int_config_randr_orientation.c @@ -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_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 char _theme_file_path[]; @@ -23,12 +23,12 @@ extern char _theme_file_path[]; static 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_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_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_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_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_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_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_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_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_mouse_up_cb, NULL); } */ @@ -122,7 +122,7 @@ _dialog_subdialog_orientation_radio_add_fail: #if 0 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]; int orientation = ECORE_X_RANDR_ORIENTATION_ROT_0; diff --git a/src/modules/conf_randr/e_int_config_randr_policies.c b/src/modules/conf_randr/e_int_config_randr_policies.c index 2e7171175..9a21772ef 100644 --- a/src/modules/conf_randr/e_int_config_randr_policies.c +++ b/src/modules/conf_randr/e_int_config_randr_policies.c @@ -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_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); -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); extern E_Config_Dialog_Data *e_config_runtime_info; extern char _theme_file_path[]; -static const char *_ECORE_X_RANDR_POLICIES_STRINGS[] = { - "ECORE_X_RANDR_OUTPUT_POLICY_ABOVE", - "ECORE_X_RANDR_OUTPUT_POLICY_RIGHT", - "ECORE_X_RANDR_OUTPUT_POLICY_BELOW", - "ECORE_X_RANDR_OUTPUT_POLICY_LEFT", - "ECORE_X_RANDR_OUTPUT_POLICY_CLONE", - "ECORE_X_RANDR_OUTPUT_POLICY_NONE"}; +static const char *_POLICIES_STRINGS[] = { + "ABOVE", + "RIGHT", + "BELOW", + "LEFT", + "CLONE", + "NONE"}; /* @@ -51,20 +51,21 @@ Eina_Bool dialog_subdialog_policies_create_data(E_Config_Dialog_Data *e_config_runtime_info) { E_Config_Randr_Dialog_Output_Dialog_Data *odd; + E_Randr_Output_Info *oi; Eina_List *iter; 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) { - E_Randr_Output_Info *oi; 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) oi = odd->output; else continue; odd->previous_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; @@ -205,7 +206,7 @@ dialog_subdialog_policies_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Co //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->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; } @@ -219,14 +220,13 @@ dialog_subdialog_policies_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E } 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_Randr_Output_Info *output = NULL; Ecore_X_Randr_Output_Policy policy; - //disable widgets, if no crtc is selected - if (!crtc || !(output_dialog_data = evas_object_data_get(crtc, "rep_info"))) + //disable widgets, if no rep is selected + 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; 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); } - if (output_dialog_data->crtc && output_dialog_data->crtc->outputs) - { - 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; + policy = output_dialog_data->new_policy; e_config_runtime_info->gui.selected_output_dd = output_dialog_data; //toggle the switch of the currently used policies switch (policy) @@ -291,11 +281,26 @@ void dialog_subdialog_policies_keep_changes(E_Config_Dialog_Data *cfdata) { 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; odd = cfdata->gui.selected_output_dd; 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