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:
parent
4bc6a64d47
commit
5e005316ef
@ -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;
|
||||||
};
|
};
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user