mirror of
https://github.com/brl/mutter.git
synced 2025-02-18 06:04:10 +00:00
monitor-unit-tests: Check monitor mode CRTC mode positions
Check that the crtc mode has the correct intra-monitor position. In effect, this tests that the CRTCs in a tiled monitor are configured with the correct mode on the correct position. https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
parent
e9a8208607
commit
3ae9feef0c
@ -128,6 +128,8 @@ typedef struct _MonitorTestCaseMonitorCrtcMode
|
|||||||
{
|
{
|
||||||
int output;
|
int output;
|
||||||
int crtc_mode;
|
int crtc_mode;
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
} MetaTestCaseMonitorCrtcMode;
|
} MetaTestCaseMonitorCrtcMode;
|
||||||
|
|
||||||
typedef struct _MonitorTestCaseMonitorMode
|
typedef struct _MonitorTestCaseMonitorMode
|
||||||
@ -324,6 +326,31 @@ check_monitor_mode (MetaMonitor *monitor,
|
|||||||
g_assert (monitor_crtc_mode->output == output);
|
g_assert (monitor_crtc_mode->output == output);
|
||||||
g_assert (monitor_crtc_mode->crtc_mode == crtc_mode);
|
g_assert (monitor_crtc_mode->crtc_mode == crtc_mode);
|
||||||
|
|
||||||
|
g_assert_cmpint (monitor_crtc_mode->x, ==, data->expect_crtc_mode_iter->x);
|
||||||
|
g_assert_cmpint (monitor_crtc_mode->y, ==, data->expect_crtc_mode_iter->y);
|
||||||
|
|
||||||
|
data->expect_crtc_mode_iter++;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
check_current_monitor_mode (MetaMonitor *monitor,
|
||||||
|
MetaMonitorMode *mode,
|
||||||
|
MetaMonitorCrtcMode *monitor_crtc_mode,
|
||||||
|
gpointer user_data,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
CheckMonitorModeData *data = user_data;
|
||||||
|
MetaMonitorManager *monitor_manager = data->monitor_manager;
|
||||||
|
MetaOutput *output;
|
||||||
|
|
||||||
|
output = output_from_winsys_id (monitor_manager,
|
||||||
|
data->expect_crtc_mode_iter->output);
|
||||||
|
|
||||||
|
g_assert_nonnull (output->crtc);
|
||||||
|
g_assert (monitor_crtc_mode->crtc_mode == output->crtc->current_mode);
|
||||||
|
|
||||||
data->expect_crtc_mode_iter++;
|
data->expect_crtc_mode_iter++;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -444,6 +471,21 @@ check_monitor_configuration (MonitorTestCase *test_case)
|
|||||||
|
|
||||||
g_assert (current_mode == expected_current_mode);
|
g_assert (current_mode == expected_current_mode);
|
||||||
|
|
||||||
|
if (current_mode)
|
||||||
|
{
|
||||||
|
CheckMonitorModeData data;
|
||||||
|
|
||||||
|
data = (CheckMonitorModeData) {
|
||||||
|
.monitor_manager = monitor_manager,
|
||||||
|
.expect_crtc_mode_iter =
|
||||||
|
test_case->expect.monitors[i].modes[expected_current_mode_index].crtc_modes
|
||||||
|
};
|
||||||
|
meta_monitor_mode_foreach_crtc (monitor, expected_current_mode,
|
||||||
|
check_current_monitor_mode,
|
||||||
|
&data,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
meta_monitor_derive_current_mode (monitor);
|
meta_monitor_derive_current_mode (monitor);
|
||||||
g_assert (current_mode == meta_monitor_get_current_mode (monitor));
|
g_assert (current_mode == meta_monitor_get_current_mode (monitor));
|
||||||
}
|
}
|
||||||
@ -1038,7 +1080,9 @@ meta_test_monitor_tiled_linear_config (void)
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
.output = 1,
|
.output = 1,
|
||||||
.crtc_mode = 0
|
.crtc_mode = 0,
|
||||||
|
.x = 400,
|
||||||
|
.y = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user