kms/impl-device: Move fd hold to update when processing
This will let us move the update ownership to the backend, allowing it to handle it with less restrictions. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2855>
This commit is contained in:
parent
6d043e6a8f
commit
25172c21c9
@ -1018,11 +1018,11 @@ meta_kms_impl_device_process_update (MetaKmsImplDevice *impl_device,
|
||||
return meta_kms_feedback_new_failed (NULL, g_steal_pointer (&error));
|
||||
}
|
||||
|
||||
meta_kms_impl_device_hold_fd (impl_device);
|
||||
meta_kms_update_realize (update, impl_device);
|
||||
|
||||
feedback = klass->process_update (impl_device, update, flags);
|
||||
if (!(flags & META_KMS_UPDATE_FLAG_TEST_ONLY))
|
||||
changes = meta_kms_impl_device_predict_states (impl_device, update);
|
||||
meta_kms_impl_device_unhold_fd (impl_device);
|
||||
|
||||
meta_kms_update_free (update);
|
||||
|
||||
|
@ -197,6 +197,9 @@ void meta_kms_result_listener_free (MetaKmsResultListener *listener);
|
||||
|
||||
void meta_kms_custom_page_flip_free (MetaKmsCustomPageFlip *custom_page_flip);
|
||||
|
||||
void meta_kms_update_realize (MetaKmsUpdate *update,
|
||||
MetaKmsImplDevice *impl_device);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MetaKmsPlaneFeedback,
|
||||
meta_kms_plane_feedback_free)
|
||||
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "backends/meta-display-config-shared.h"
|
||||
#include "backends/native/meta-kms-connector.h"
|
||||
#include "backends/native/meta-kms-crtc.h"
|
||||
#include "backends/native/meta-kms-impl-device.h"
|
||||
#include "backends/native/meta-kms-mode-private.h"
|
||||
#include "backends/native/meta-kms-plane.h"
|
||||
#include "backends/native/meta-kms-private.h"
|
||||
@ -44,6 +45,8 @@ struct _MetaKmsUpdate
|
||||
|
||||
GList *page_flip_listeners;
|
||||
GList *result_listeners;
|
||||
|
||||
MetaKmsImplDevice *impl_device;
|
||||
};
|
||||
|
||||
void
|
||||
@ -902,6 +905,9 @@ meta_kms_update_new (MetaKmsDevice *device)
|
||||
void
|
||||
meta_kms_update_free (MetaKmsUpdate *update)
|
||||
{
|
||||
if (update->impl_device)
|
||||
meta_kms_impl_device_unhold_fd (update->impl_device);
|
||||
|
||||
g_list_free_full (update->result_listeners,
|
||||
(GDestroyNotify) meta_kms_result_listener_free);
|
||||
g_list_free_full (update->plane_assignments,
|
||||
@ -917,3 +923,11 @@ meta_kms_update_free (MetaKmsUpdate *update)
|
||||
|
||||
g_free (update);
|
||||
}
|
||||
|
||||
void
|
||||
meta_kms_update_realize (MetaKmsUpdate *update,
|
||||
MetaKmsImplDevice *impl_device)
|
||||
{
|
||||
update->impl_device = impl_device;
|
||||
meta_kms_impl_device_hold_fd (impl_device);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user