diff --git a/src/backends/native/meta-backend-native-private.h b/src/backends/native/meta-backend-native-private.h index 2a945f4b8..510fef8dc 100644 --- a/src/backends/native/meta-backend-native-private.h +++ b/src/backends/native/meta-backend-native-private.h @@ -33,7 +33,9 @@ MetaBarrierManagerNative *meta_backend_native_get_barrier_manager (MetaBackendNa META_EXPORT_TEST MetaDevicePool * meta_backend_native_get_device_pool (MetaBackendNative *native); -MetaRenderDevice * meta_backend_native_take_render_device (MetaBackendNative *backend_native, - const char *device_path); + +MetaRenderDevice * meta_backend_native_take_render_device (MetaBackendNative *backend_native, + const char *device_path, + GError **error); #endif /* META_BACKEND_NATIVE_PRIVATE_H */ diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index c86c72dc5..8a4dbd730 100644 --- a/src/backends/native/meta-backend-native.c +++ b/src/backends/native/meta-backend-native.c @@ -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); + } } diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c index c7181106d..e27805d91 100644 --- a/src/backends/native/meta-renderer-native.c +++ b/src/backends/native/meta-renderer-native.c @@ -1781,11 +1781,10 @@ meta_renderer_native_create_renderer_gpu_data (MetaRendererNative *renderer_nat device_path = meta_gpu_kms_get_file_path (gpu_kms); render_device = meta_backend_native_take_render_device (backend_native, - device_path); + device_path, + error); if (!render_device) { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, - "No render device found for %s", device_path); return NULL; }