drm-buffer: Don't always generate fb_id on construction
It might not be needed by the user of the buffer, so don't always require it up front. Instead make sure that any user that needs it first calls "meta_drm_buffer_ensure_fb_id()" to create the ID. Only the plain gbm implementation creates the ID lazilly, the other still does it on construction due to the objects used to create them only existing during construction. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1854>
This commit is contained in:
@ -67,9 +67,21 @@ meta_drm_buffer_get_device_file (MetaDrmBuffer *buffer)
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_drm_buffer_ensure_fb_id (MetaDrmBuffer *buffer,
|
||||
const MetaDrmFbArgs *fb_args,
|
||||
GError **error)
|
||||
meta_drm_buffer_ensure_fb_id (MetaDrmBuffer *buffer,
|
||||
GError **error)
|
||||
{
|
||||
MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
|
||||
|
||||
if (priv->fb_id)
|
||||
return TRUE;
|
||||
|
||||
return META_DRM_BUFFER_GET_CLASS (buffer)->ensure_fb_id (buffer, error);
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_drm_buffer_do_ensure_fb_id (MetaDrmBuffer *buffer,
|
||||
const MetaDrmFbArgs *fb_args,
|
||||
GError **error)
|
||||
{
|
||||
MetaDrmBufferPrivate *priv = meta_drm_buffer_get_instance_private (buffer);
|
||||
int fd;
|
||||
|
Reference in New Issue
Block a user