mirror of
https://github.com/brl/mutter.git
synced 2025-01-11 12:12:25 +00:00
kms/mode: Add API to create blob IDs for modes on demand
Will be used by the atomic KMS backend. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1488>
This commit is contained in:
parent
f0d3201dab
commit
eb66449ab7
@ -22,6 +22,9 @@
|
|||||||
|
|
||||||
#include "backends/native/meta-kms-mode.h"
|
#include "backends/native/meta-kms-mode.h"
|
||||||
|
|
||||||
|
uint32_t meta_kms_mode_ensure_blob_id (MetaKmsMode *mode,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
void meta_kms_mode_free (MetaKmsMode *mode);
|
void meta_kms_mode_free (MetaKmsMode *mode);
|
||||||
|
|
||||||
MetaKmsMode * meta_kms_mode_new (MetaKmsImplDevice *impl_device,
|
MetaKmsMode * meta_kms_mode_new (MetaKmsImplDevice *impl_device,
|
||||||
|
@ -27,8 +27,33 @@ struct _MetaKmsMode
|
|||||||
{
|
{
|
||||||
MetaKmsImplDevice *impl_device;
|
MetaKmsImplDevice *impl_device;
|
||||||
drmModeModeInfo drm_mode;
|
drmModeModeInfo drm_mode;
|
||||||
|
uint32_t blob_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
meta_kms_mode_ensure_blob_id (MetaKmsMode *mode,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
fd = meta_kms_impl_device_get_fd (mode->impl_device);
|
||||||
|
|
||||||
|
ret = drmModeCreatePropertyBlob (fd,
|
||||||
|
&mode->drm_mode,
|
||||||
|
sizeof (mode->drm_mode),
|
||||||
|
&mode->blob_id);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
g_set_error (error, G_IO_ERROR, g_io_error_from_errno (-ret),
|
||||||
|
"drmModeCreatePropertyBlob: %s",
|
||||||
|
g_strerror (-ret));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mode->blob_id;
|
||||||
|
}
|
||||||
|
|
||||||
const drmModeModeInfo *
|
const drmModeModeInfo *
|
||||||
meta_kms_mode_get_drm_mode (MetaKmsMode *mode)
|
meta_kms_mode_get_drm_mode (MetaKmsMode *mode)
|
||||||
{
|
{
|
||||||
@ -38,6 +63,15 @@ meta_kms_mode_get_drm_mode (MetaKmsMode *mode)
|
|||||||
void
|
void
|
||||||
meta_kms_mode_free (MetaKmsMode *mode)
|
meta_kms_mode_free (MetaKmsMode *mode)
|
||||||
{
|
{
|
||||||
|
if (mode->blob_id)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
fd = meta_kms_impl_device_get_fd (mode->impl_device);
|
||||||
|
|
||||||
|
drmModeDestroyPropertyBlob (fd, mode->blob_id);
|
||||||
|
}
|
||||||
|
|
||||||
g_free (mode);
|
g_free (mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user