|
@@ -255,12 +255,14 @@ static void Wayland_SortOutputs(SDL_VideoData *vid)
|
|
|
/* Sort the outputs by connector name. */
|
|
|
WAYLAND_wl_list_init(&sorted_list);
|
|
|
wl_list_for_each (c, &vid->output_order, link) {
|
|
|
- wl_list_for_each (d, &vid->output_list, link) {
|
|
|
- if (SDL_strcmp(c->wl_output_name, d->wl_output_name) == 0) {
|
|
|
- /* Remove from the current list and Append the next node to the end of the new list. */
|
|
|
- WAYLAND_wl_list_remove(&d->link);
|
|
|
- WAYLAND_wl_list_insert(sorted_list.prev, &d->link);
|
|
|
- break;
|
|
|
+ if (c->wl_output_name) {
|
|
|
+ wl_list_for_each (d, &vid->output_list, link) {
|
|
|
+ if (d->wl_output_name && SDL_strcmp(c->wl_output_name, d->wl_output_name) == 0) {
|
|
|
+ /* Remove from the current list and Append the next node to the end of the new list. */
|
|
|
+ WAYLAND_wl_list_remove(&d->link);
|
|
|
+ WAYLAND_wl_list_insert(sorted_list.prev, &d->link);
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -565,7 +567,14 @@ static void xdg_output_handle_done(void *data, struct zxdg_output_v1 *xdg_output
|
|
|
static void xdg_output_handle_name(void *data, struct zxdg_output_v1 *xdg_output,
|
|
|
const char *name)
|
|
|
{
|
|
|
+ SDL_DisplayData *driverdata = (SDL_DisplayData *)data;
|
|
|
+
|
|
|
/* Deprecated as of wl_output v4. */
|
|
|
+ if (wl_output_get_version(driverdata->output) < WL_OUTPUT_NAME_SINCE_VERSION &&
|
|
|
+ driverdata->display == 0) {
|
|
|
+ SDL_free(driverdata->wl_output_name);
|
|
|
+ driverdata->wl_output_name = SDL_strdup(name);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void xdg_output_handle_description(void *data, struct zxdg_output_v1 *xdg_output,
|