backend/native: Create MetaRenderDevice on_gpu_added when it does not exists

Fixes GNOME/mutter#2481

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2676>
This commit is contained in:
Łukasz Spintzyk
2022-10-26 09:22:24 +02:00
parent 986d3be7ac
commit c57a500ccb
3 changed files with 27 additions and 9 deletions

View File

@ -991,9 +991,21 @@ void meta_backend_native_resume (MetaBackendNative *native)
clutter_seat_ensure_a11y_state (CLUTTER_SEAT (seat));
}
static MetaRenderDevice *
meta_backend_native_create_render_device (MetaBackendNative *backend_native,
const char *device_path,
GError **error)
{
g_autoptr (MetaRenderDevice) render_device = NULL;
render_device = create_render_device (backend_native, device_path, error);
return g_steal_pointer (&render_device);
}
MetaRenderDevice *
meta_backend_native_take_render_device (MetaBackendNative *backend_native,
const char *device_path)
meta_backend_native_take_render_device (MetaBackendNative *backend_native,
const char *device_path,
GError **error)
{
MetaRenderDevice *render_device;
@ -1001,7 +1013,12 @@ meta_backend_native_take_render_device (MetaBackendNative *backend_native,
device_path,
NULL,
(gpointer *) &render_device))
return render_device;
{
return render_device;
}
else
return NULL;
{
return meta_backend_native_create_render_device (backend_native,
device_path, error);
}
}