output: Turn winsys_id into a uint64_t

We need a 64 bit field to combine the device id and connector
id into the output id (winsys_id).
This commit is contained in:
Emilio Pozuelo Monfort 2018-10-17 16:55:18 +02:00 committed by Emilio Pozuelo Monfort
parent 4bc6a64d47
commit 5e005316ef
8 changed files with 22 additions and 18 deletions

View File

@ -51,7 +51,7 @@ struct _MetaLogicalMonitor
(it's an attempt to keep windows on the same monitor, and preferably on (it's an attempt to keep windows on the same monitor, and preferably on
the primary one). the primary one).
*/ */
glong winsys_id; uint64_t winsys_id;
GList *monitors; GList *monitors;
}; };

View File

@ -73,7 +73,7 @@ typedef struct _MetaMonitorPrivate
* (it's an attempt to keep windows on the same monitor, and preferably on * (it's an attempt to keep windows on the same monitor, and preferably on
* the primary one). * the primary one).
*/ */
long winsys_id; uint64_t winsys_id;
} MetaMonitorPrivate; } MetaMonitorPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (MetaMonitor, meta_monitor, G_TYPE_OBJECT) G_DEFINE_TYPE_WITH_PRIVATE (MetaMonitor, meta_monitor, G_TYPE_OBJECT)

View File

@ -66,7 +66,7 @@ struct _MetaOutput
MetaGpu *gpu; MetaGpu *gpu;
/* The low-level ID of this output, used to apply back configuration */ /* The low-level ID of this output, used to apply back configuration */
glong winsys_id; uint64_t winsys_id;
char *name; char *name;
char *vendor; char *vendor;
char *product; char *product;

View File

@ -232,7 +232,7 @@ struct _MetaWindow
double tile_hfraction; double tile_hfraction;
int preferred_output_winsys_id; uint64_t preferred_output_winsys_id;
/* Whether we're shaded */ /* Whether we're shaded */
guint shaded : 1; guint shaded : 1;

View File

@ -3798,7 +3798,7 @@ meta_window_get_main_logical_monitor (MetaWindow *window)
static MetaLogicalMonitor * static MetaLogicalMonitor *
find_monitor_by_winsys_id (MetaWindow *window, find_monitor_by_winsys_id (MetaWindow *window,
guint winsys_id) uint64_t winsys_id)
{ {
MetaBackend *backend = meta_get_backend (); MetaBackend *backend = meta_get_backend ();
MetaMonitorManager *monitor_manager = MetaMonitorManager *monitor_manager =
@ -4052,7 +4052,7 @@ meta_window_move_resize_internal (MetaWindow *window,
if (window->monitor) if (window->monitor)
{ {
guint old_output_winsys_id; uint64_t old_output_winsys_id;
old_output_winsys_id = window->monitor->winsys_id; old_output_winsys_id = window->monitor->winsys_id;

View File

@ -136,7 +136,7 @@ typedef struct _MonitorTestCaseSetup
typedef struct _MonitorTestCaseMonitorCrtcMode typedef struct _MonitorTestCaseMonitorCrtcMode
{ {
int output; uint64_t output;
int crtc_mode; int crtc_mode;
} MetaTestCaseMonitorCrtcMode; } MetaTestCaseMonitorCrtcMode;
@ -151,7 +151,7 @@ typedef struct _MonitorTestCaseMonitorMode
typedef struct _MonitorTestCaseMonitor typedef struct _MonitorTestCaseMonitor
{ {
long outputs[MAX_N_OUTPUTS]; uint64_t outputs[MAX_N_OUTPUTS];
int n_outputs; int n_outputs;
MetaMonitorTestCaseMonitorMode modes[MAX_N_MODES]; MetaMonitorTestCaseMonitorMode modes[MAX_N_MODES];
int n_modes; int n_modes;
@ -409,7 +409,7 @@ destroy_monitor_test_clients (void)
static MetaOutput * static MetaOutput *
output_from_winsys_id (MetaMonitorManager *monitor_manager, output_from_winsys_id (MetaMonitorManager *monitor_manager,
long winsys_id) uint64_t winsys_id)
{ {
MetaMonitorManagerTest *monitor_manager_test = MetaMonitorManagerTest *monitor_manager_test =
META_MONITOR_MANAGER_TEST (monitor_manager); META_MONITOR_MANAGER_TEST (monitor_manager);
@ -714,7 +714,7 @@ check_monitor_configuration (MonitorTestCase *test_case)
for (l_output = outputs, j = 0; l_output; l_output = l_output->next, j++) for (l_output = outputs, j = 0; l_output; l_output = l_output->next, j++)
{ {
MetaOutput *output = l_output->data; MetaOutput *output = l_output->data;
long winsys_id = test_case->expect.monitors[i].outputs[j]; uint64_t winsys_id = test_case->expect.monitors[i].outputs[j];
g_assert (output == output_from_winsys_id (monitor_manager, g_assert (output == output_from_winsys_id (monitor_manager,
winsys_id)); winsys_id));

View File

@ -343,6 +343,8 @@ meta_wayland_output_set_logical_monitor (MetaWaylandOutput *wayland_output,
wayland_output->mode_flags |= WL_OUTPUT_MODE_PREFERRED; wayland_output->mode_flags |= WL_OUTPUT_MODE_PREFERRED;
wayland_output->scale = calculate_wayland_output_scale (logical_monitor); wayland_output->scale = calculate_wayland_output_scale (logical_monitor);
wayland_output->refresh_rate = meta_monitor_mode_get_refresh_rate (current_mode); wayland_output->refresh_rate = meta_monitor_mode_get_refresh_rate (current_mode);
wayland_output->winsys_id = logical_monitor->winsys_id;
} }
static void static void
@ -456,25 +458,24 @@ meta_wayland_compositor_update_outputs (MetaWaylandCompositor *compositor,
logical_monitors = logical_monitors =
meta_monitor_manager_get_logical_monitors (monitor_manager); meta_monitor_manager_get_logical_monitors (monitor_manager);
new_table = g_hash_table_new_full (NULL, NULL, NULL, new_table = g_hash_table_new_full (g_int64_hash, g_int64_equal, NULL,
wayland_output_destroy_notify); wayland_output_destroy_notify);
for (l = logical_monitors; l; l = l->next) for (l = logical_monitors; l; l = l->next)
{ {
MetaLogicalMonitor *logical_monitor = l->data; MetaLogicalMonitor *logical_monitor = l->data;
MetaWaylandOutput *wayland_output; MetaWaylandOutput *wayland_output = NULL;
if (logical_monitor->winsys_id == 0) if (logical_monitor->winsys_id == 0)
continue; continue;
wayland_output = wayland_output = g_hash_table_lookup (compositor->outputs,
g_hash_table_lookup (compositor->outputs, &logical_monitor->winsys_id);
GSIZE_TO_POINTER (logical_monitor->winsys_id));
if (wayland_output) if (wayland_output)
{ {
g_hash_table_steal (compositor->outputs, g_hash_table_steal (compositor->outputs,
GSIZE_TO_POINTER (logical_monitor->winsys_id)); &logical_monitor->winsys_id);
} }
else else
{ {
@ -483,7 +484,7 @@ meta_wayland_compositor_update_outputs (MetaWaylandCompositor *compositor,
wayland_output_update_for_output (wayland_output, logical_monitor); wayland_output_update_for_output (wayland_output, logical_monitor);
g_hash_table_insert (new_table, g_hash_table_insert (new_table,
GSIZE_TO_POINTER (logical_monitor->winsys_id), &wayland_output->winsys_id,
wayland_output); wayland_output);
} }
@ -680,7 +681,8 @@ meta_wayland_outputs_init (MetaWaylandCompositor *compositor)
g_signal_connect (monitors, "monitors-changed-internal", g_signal_connect (monitors, "monitors-changed-internal",
G_CALLBACK (on_monitors_changed), compositor); G_CALLBACK (on_monitors_changed), compositor);
compositor->outputs = g_hash_table_new_full (NULL, NULL, NULL, wayland_output_destroy_notify); compositor->outputs = g_hash_table_new_full (g_int64_hash, g_int64_equal, NULL,
wayland_output_destroy_notify);
compositor->outputs = meta_wayland_compositor_update_outputs (compositor, monitors); compositor->outputs = meta_wayland_compositor_update_outputs (compositor, monitors);
wl_global_create (compositor->wayland_display, wl_global_create (compositor->wayland_display,

View File

@ -44,6 +44,8 @@ struct _MetaWaylandOutput
GList *resources; GList *resources;
GList *xdg_output_resources; GList *xdg_output_resources;
uint64_t winsys_id;
}; };
void meta_wayland_outputs_init (MetaWaylandCompositor *compositor); void meta_wayland_outputs_init (MetaWaylandCompositor *compositor);