diff options
author | Jonas Ã…dahl <jadahl@gmail.com> | 2020-02-25 20:30:46 +0100 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-06-10 18:54:50 +0000 |
commit | b69111d8e6c06f3a27c81f80a1f1e76d24051372 (patch) | |
tree | c491e6d3009b369b86048d5665ff930e4ccdaeee /src/backends/x11/meta-monitor-manager-xrandr.c | |
parent | f71316c8508b3864876fc5ef9fb8e59a97c24f87 (diff) | |
download | mutter-b69111d8e6c06f3a27c81f80a1f1e76d24051372.tar.gz |
monitor-manager: Rename *Info structs to *Assignment
MetaCrtcInfo and MetaOutputInfo did not represent information about
MetaCrtc and MetaOutput, but the result of the monitor configuration
assignment algorithm, thus rename it to MetaCrtcAssignment and
MetaOutputAssignment.
The purpose for this is to be able to introduce a struct that actually
carries information about the CRTCs and outputs, as retrieved from the
backend implementations.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1287
Diffstat (limited to 'src/backends/x11/meta-monitor-manager-xrandr.c')
-rw-r--r-- | src/backends/x11/meta-monitor-manager-xrandr.c | 176 |
1 files changed, 92 insertions, 84 deletions
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c index eab5f55ec..cccc07fe4 100644 --- a/src/backends/x11/meta-monitor-manager-xrandr.c +++ b/src/backends/x11/meta-monitor-manager-xrandr.c @@ -241,52 +241,52 @@ xrandr_set_crtc_config (MetaMonitorManagerXrandr *manager_xrandr, } static gboolean -is_crtc_assignment_changed (MetaCrtc *crtc, - MetaCrtcInfo **crtc_infos, - unsigned int n_crtc_infos) +is_crtc_assignment_changed (MetaCrtc *crtc, + MetaCrtcAssignment **crtc_assignments, + unsigned int n_crtc_assignments) { unsigned int i; - for (i = 0; i < n_crtc_infos; i++) + for (i = 0; i < n_crtc_assignments; i++) { - MetaCrtcInfo *crtc_info = crtc_infos[i]; + MetaCrtcAssignment *crtc_assignment = crtc_assignments[i]; - if (crtc_info->crtc != crtc) + if (crtc_assignment->crtc != crtc) continue; - return meta_crtc_xrandr_is_assignment_changed (crtc, crtc_info); + return meta_crtc_xrandr_is_assignment_changed (crtc, crtc_assignment); } return !!meta_crtc_xrandr_get_current_mode (crtc); } static gboolean -is_output_assignment_changed (MetaOutput *output, - MetaCrtcInfo **crtc_infos, - unsigned int n_crtc_infos, - MetaOutputInfo **output_infos, - unsigned int n_output_infos) +is_output_assignment_changed (MetaOutput *output, + MetaCrtcAssignment **crtc_assignments, + unsigned int n_crtc_assignments, + MetaOutputAssignment **output_assignments, + unsigned int n_output_assignments) { MetaCrtc *assigned_crtc; gboolean output_is_found = FALSE; unsigned int i; - for (i = 0; i < n_output_infos; i++) + for (i = 0; i < n_output_assignments; i++) { - MetaOutputInfo *output_info = output_infos[i]; + MetaOutputAssignment *output_assignment = output_assignments[i]; - if (output_info->output != output) + if (output_assignment->output != output) continue; - if (meta_output_is_primary (output) != output_info->is_primary) + if (meta_output_is_primary (output) != output_assignment->is_primary) return TRUE; if (meta_output_is_presentation (output) != - output_info->is_presentation) + output_assignment->is_presentation) return TRUE; if (meta_output_is_underscanning (output) != - output_info->is_underscanning) + output_assignment->is_underscanning) return TRUE; output_is_found = TRUE; @@ -297,18 +297,18 @@ is_output_assignment_changed (MetaOutput *output, if (!output_is_found) return assigned_crtc != NULL; - for (i = 0; i < n_crtc_infos; i++) + for (i = 0; i < n_crtc_assignments; i++) { - MetaCrtcInfo *crtc_info = crtc_infos[i]; + MetaCrtcAssignment *crtc_assignment = crtc_assignments[i]; unsigned int j; - for (j = 0; j < crtc_info->outputs->len; j++) + for (j = 0; j < crtc_assignment->outputs->len; j++) { - MetaOutput *crtc_info_output = - ((MetaOutput**) crtc_info->outputs->pdata)[j]; + MetaOutput *crtc_assignment_output = + ((MetaOutput**) crtc_assignment->outputs->pdata)[j]; - if (crtc_info_output == output && - crtc_info->crtc == assigned_crtc) + if (crtc_assignment_output == output && + crtc_assignment->crtc == assigned_crtc) return FALSE; } } @@ -326,11 +326,11 @@ meta_monitor_manager_xrandr_get_gpu (MetaMonitorManagerXrandr *manager_xrandr) } static gboolean -is_assignments_changed (MetaMonitorManager *manager, - MetaCrtcInfo **crtc_infos, - unsigned int n_crtc_infos, - MetaOutputInfo **output_infos, - unsigned int n_output_infos) +is_assignments_changed (MetaMonitorManager *manager, + MetaCrtcAssignment **crtc_assignments, + unsigned int n_crtc_assignments, + MetaOutputAssignment **output_assignments, + unsigned int n_output_assignments) { MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager); @@ -341,7 +341,7 @@ is_assignments_changed (MetaMonitorManager *manager, { MetaCrtc *crtc = l->data; - if (is_crtc_assignment_changed (crtc, crtc_infos, n_crtc_infos)) + if (is_crtc_assignment_changed (crtc, crtc_assignments, n_crtc_assignments)) return TRUE; } @@ -350,10 +350,10 @@ is_assignments_changed (MetaMonitorManager *manager, MetaOutput *output = l->data; if (is_output_assignment_changed (output, - crtc_infos, - n_crtc_infos, - output_infos, - n_output_infos)) + crtc_assignments, + n_crtc_assignments, + output_assignments, + n_output_assignments)) return TRUE; } @@ -361,12 +361,12 @@ is_assignments_changed (MetaMonitorManager *manager, } static void -apply_crtc_assignments (MetaMonitorManager *manager, - gboolean save_timestamp, - MetaCrtcInfo **crtcs, - unsigned int n_crtcs, - MetaOutputInfo **outputs, - unsigned int n_outputs) +apply_crtc_assignments (MetaMonitorManager *manager, + gboolean save_timestamp, + MetaCrtcAssignment **crtcs, + unsigned int n_crtcs, + MetaOutputAssignment **outputs, + unsigned int n_outputs) { MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager); MetaGpu *gpu = meta_monitor_manager_xrandr_get_gpu (manager_xrandr); @@ -385,18 +385,18 @@ apply_crtc_assignments (MetaMonitorManager *manager, width = 0; height = 0; for (i = 0; i < n_crtcs; i++) { - MetaCrtcInfo *crtc_info = crtcs[i]; - MetaCrtc *crtc = crtc_info->crtc; + MetaCrtcAssignment *crtc_assignment = crtcs[i]; + MetaCrtc *crtc = crtc_assignment->crtc; - if (crtc_info->mode == NULL) + if (crtc_assignment->mode == NULL) continue; to_disable_crtcs = g_list_remove (to_disable_crtcs, crtc); - width = MAX (width, (int) roundf (crtc_info->layout.origin.x + - crtc_info->layout.size.width)); - height = MAX (height, (int) roundf (crtc_info->layout.origin.y + - crtc_info->layout.size.height)); + width = MAX (width, (int) roundf (crtc_assignment->layout.origin.x + + crtc_assignment->layout.size.width)); + height = MAX (height, (int) roundf (crtc_assignment->layout.origin.y + + crtc_assignment->layout.size.height)); } /* Second disable all newly disabled CRTCs, or CRTCs that in the previous @@ -406,8 +406,8 @@ apply_crtc_assignments (MetaMonitorManager *manager, */ for (i = 0; i < n_crtcs; i++) { - MetaCrtcInfo *crtc_info = crtcs[i]; - MetaCrtc *crtc = crtc_info->crtc; + MetaCrtcAssignment *crtc_assignment = crtcs[i]; + MetaCrtc *crtc = crtc_assignment->crtc; MetaCrtcConfig *crtc_config; int x2, y2; @@ -420,7 +420,7 @@ apply_crtc_assignments (MetaMonitorManager *manager, y2 = (int) roundf (crtc_config->layout.origin.y + crtc_config->layout.size.height); - if (!crtc_info->mode || x2 > width || y2 > height) + if (!crtc_assignment->mode || x2 > width || y2 > height) { xrandr_set_crtc_config (manager_xrandr, crtc, @@ -468,45 +468,52 @@ apply_crtc_assignments (MetaMonitorManager *manager, for (i = 0; i < n_crtcs; i++) { - MetaCrtcInfo *crtc_info = crtcs[i]; - MetaCrtc *crtc = crtc_info->crtc; + MetaCrtcAssignment *crtc_assignment = crtcs[i]; + MetaCrtc *crtc = crtc_assignment->crtc; - if (crtc_info->mode != NULL) + if (crtc_assignment->mode != NULL) { MetaCrtcMode *mode; g_autofree xcb_randr_output_t *output_ids = NULL; unsigned int j, n_output_ids; + xcb_randr_crtc_t crtc_id; + int x, y; xcb_randr_rotation_t rotation; - mode = crtc_info->mode; + mode = crtc_assignment->mode; - n_output_ids = crtc_info->outputs->len; + n_output_ids = crtc_assignment->outputs->len; output_ids = g_new (xcb_randr_output_t, n_output_ids); for (j = 0; j < n_output_ids; j++) { MetaOutput *output; - MetaOutputInfo *output_info; + MetaOutputAssignment *output_assignment; - output = ((MetaOutput**)crtc_info->outputs->pdata)[j]; + output = ((MetaOutput**)crtc_assignment->outputs->pdata)[j]; to_configure_outputs = g_list_remove (to_configure_outputs, output); - output_info = meta_find_output_info (outputs, n_outputs, output); - meta_output_assign_crtc (output, crtc, output_info); + output_assignment = meta_find_output_assignment (outputs, + n_outputs, + output); + meta_output_assign_crtc (output, crtc, output_assignment); output_ids[j] = meta_output_get_id (output); } - rotation = meta_monitor_transform_to_xrandr (crtc_info->transform); + crtc_id = (xcb_randr_crtc_t) meta_crtc_get_id (crtc); + x = (int) roundf (crtc_assignment->layout.origin.x); + y = (int) roundf (crtc_assignment->layout.origin.y); + rotation = + meta_monitor_transform_to_xrandr (crtc_assignment->transform); if (!xrandr_set_crtc_config (manager_xrandr, crtc, save_timestamp, - (xcb_randr_crtc_t) meta_crtc_get_id (crtc), + crtc_id, XCB_CURRENT_TIME, - (int) roundf (crtc_info->layout.origin.x), - (int) roundf (crtc_info->layout.origin.y), + x, y, (xcb_randr_mode_t) mode->mode_id, rotation, output_ids, n_output_ids)) @@ -515,23 +522,23 @@ apply_crtc_assignments (MetaMonitorManager *manager, (unsigned) meta_crtc_get_id (crtc), (unsigned) mode->mode_id, mode->width, mode->height, (float)mode->refresh_rate, - (int) roundf (crtc_info->layout.origin.x), - (int) roundf (crtc_info->layout.origin.y), - crtc_info->transform); + (int) roundf (crtc_assignment->layout.origin.x), + (int) roundf (crtc_assignment->layout.origin.y), + crtc_assignment->transform); continue; } meta_crtc_set_config (crtc, - &crtc_info->layout, + &crtc_assignment->layout, mode, - crtc_info->transform); + crtc_assignment->transform); } } for (i = 0; i < n_outputs; i++) { - MetaOutputInfo *output_info = outputs[i]; - MetaOutput *output = output_info->output; + MetaOutputAssignment *output_assignment = outputs[i]; + MetaOutput *output = output_assignment->output; meta_output_xrandr_apply_mode (output); } @@ -581,8 +588,8 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana MetaMonitorsConfigMethod method, GError **error) { - GPtrArray *crtc_infos; - GPtrArray *output_infos; + GPtrArray *crtc_assignments; + GPtrArray *output_assignments; if (!config) { @@ -591,7 +598,8 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana } if (!meta_monitor_config_manager_assign (manager, config, - &crtc_infos, &output_infos, + &crtc_assignments, + &output_assignments, error)) return FALSE; @@ -606,17 +614,17 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana * just update the logical state. */ if (is_assignments_changed (manager, - (MetaCrtcInfo **) crtc_infos->pdata, - crtc_infos->len, - (MetaOutputInfo **) output_infos->pdata, - output_infos->len)) + (MetaCrtcAssignment **) crtc_assignments->pdata, + crtc_assignments->len, + (MetaOutputAssignment **) output_assignments->pdata, + output_assignments->len)) { apply_crtc_assignments (manager, TRUE, - (MetaCrtcInfo **) crtc_infos->pdata, - crtc_infos->len, - (MetaOutputInfo **) output_infos->pdata, - output_infos->len); + (MetaCrtcAssignment **) crtc_assignments->pdata, + crtc_assignments->len, + (MetaOutputAssignment **) output_assignments->pdata, + output_assignments->len); } else { @@ -624,8 +632,8 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana } } - g_ptr_array_free (crtc_infos, TRUE); - g_ptr_array_free (output_infos, TRUE); + g_ptr_array_free (crtc_assignments, TRUE); + g_ptr_array_free (output_assignments, TRUE); return TRUE; } |