1
0
Fork 0

kms/device: Move result queueing to impl device

This means there will be no entry points to the dispatch machinery that
doesn't report about the results.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2855>
This commit is contained in:
Jonas Ådahl 2022-10-20 23:05:53 +02:00 committed by Robert Mader
parent 25172c21c9
commit 90ae14e792
2 changed files with 26 additions and 1 deletions

View file

@ -1000,6 +1000,28 @@ emit_resources_changed_callback (MetaKms *kms,
meta_kms_emit_resources_changed (kms, changes);
}
static void
queue_result_feedback (MetaKmsImplDevice *impl_device,
MetaKmsUpdate *update,
MetaKmsFeedback *feedback)
{
MetaKmsImplDevicePrivate *priv =
meta_kms_impl_device_get_instance_private (impl_device);
MetaKms *kms = meta_kms_device_get_kms (priv->device);
GList *result_listeners;
GList *l;
result_listeners = meta_kms_update_take_result_listeners (update);
for (l = result_listeners; l; l = l->next)
{
MetaKmsResultListener *listener = l->data;
meta_kms_result_listener_set_feedback (listener, feedback);
meta_kms_queue_result_callback (kms, listener);
}
}
MetaKmsFeedback *
meta_kms_impl_device_process_update (MetaKmsImplDevice *impl_device,
MetaKmsUpdate *update,
@ -1024,6 +1046,8 @@ meta_kms_impl_device_process_update (MetaKmsImplDevice *impl_device,
if (!(flags & META_KMS_UPDATE_FLAG_TEST_ONLY))
changes = meta_kms_impl_device_predict_states (impl_device, update);
queue_result_feedback (impl_device, update, feedback);
meta_kms_update_free (update);
if (changes != META_KMS_RESOURCE_CHANGE_NONE)

View file

@ -182,7 +182,8 @@ void meta_kms_impl_device_reload_prop_values (MetaKmsImplDevice *impl_device,
MetaKmsFeedback * meta_kms_impl_device_process_update (MetaKmsImplDevice *impl_device,
MetaKmsUpdate *update,
MetaKmsUpdateFlag flags);
MetaKmsUpdateFlag flags)
G_GNUC_WARN_UNUSED_RESULT;
void meta_kms_impl_device_handle_page_flip_callback (MetaKmsImplDevice *impl_device,
MetaKmsPageFlipData *page_flip_data);