mirror of
https://github.com/brl/mutter.git
synced 2025-02-17 21:54:10 +00:00
kms-impl-simple: Add helper to process update entries
This avoids some loop iteration boiler plate. https://gitlab.gnome.org/GNOME/mutter/merge_requests/930
This commit is contained in:
parent
851024f730
commit
6c1e9b51f9
@ -75,9 +75,10 @@ meta_kms_impl_simple_new (MetaKms *kms,
|
|||||||
static gboolean
|
static gboolean
|
||||||
process_connector_property (MetaKmsImpl *impl,
|
process_connector_property (MetaKmsImpl *impl,
|
||||||
MetaKmsUpdate *update,
|
MetaKmsUpdate *update,
|
||||||
MetaKmsConnectorProperty *connector_property,
|
gpointer update_entry,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
MetaKmsConnectorProperty *connector_property = update_entry;
|
||||||
MetaKmsConnector *connector = connector_property->connector;
|
MetaKmsConnector *connector = connector_property->connector;
|
||||||
MetaKmsDevice *device = meta_kms_connector_get_device (connector);
|
MetaKmsDevice *device = meta_kms_connector_get_device (connector);
|
||||||
MetaKmsImplDevice *impl_device = meta_kms_device_get_impl_device (device);
|
MetaKmsImplDevice *impl_device = meta_kms_device_get_impl_device (device);
|
||||||
@ -180,9 +181,10 @@ fill_connector_ids_array (GList *connectors,
|
|||||||
static gboolean
|
static gboolean
|
||||||
process_mode_set (MetaKmsImpl *impl,
|
process_mode_set (MetaKmsImpl *impl,
|
||||||
MetaKmsUpdate *update,
|
MetaKmsUpdate *update,
|
||||||
MetaKmsModeSet *mode_set,
|
gpointer update_entry,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
MetaKmsModeSet *mode_set = update_entry;
|
||||||
MetaKmsImplSimple *impl_simple = META_KMS_IMPL_SIMPLE (impl);
|
MetaKmsImplSimple *impl_simple = META_KMS_IMPL_SIMPLE (impl);
|
||||||
MetaKmsCrtc *crtc = mode_set->crtc;
|
MetaKmsCrtc *crtc = mode_set->crtc;
|
||||||
MetaKmsDevice *device = meta_kms_crtc_get_device (crtc);
|
MetaKmsDevice *device = meta_kms_crtc_get_device (crtc);
|
||||||
@ -271,9 +273,11 @@ process_mode_set (MetaKmsImpl *impl,
|
|||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
process_crtc_gamma (MetaKmsImpl *impl,
|
process_crtc_gamma (MetaKmsImpl *impl,
|
||||||
MetaKmsCrtcGamma *gamma,
|
MetaKmsUpdate *update,
|
||||||
|
gpointer update_entry,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
MetaKmsCrtcGamma *gamma = update_entry;
|
||||||
MetaKmsCrtc *crtc = gamma->crtc;
|
MetaKmsCrtc *crtc = gamma->crtc;
|
||||||
MetaKmsDevice *device = meta_kms_crtc_get_device (crtc);
|
MetaKmsDevice *device = meta_kms_crtc_get_device (crtc);
|
||||||
MetaKmsImplDevice *impl_device = meta_kms_device_get_impl_device (device);
|
MetaKmsImplDevice *impl_device = meta_kms_device_get_impl_device (device);
|
||||||
@ -610,9 +614,10 @@ mode_set_fallback (MetaKmsImplSimple *impl_simple,
|
|||||||
static gboolean
|
static gboolean
|
||||||
process_page_flip (MetaKmsImpl *impl,
|
process_page_flip (MetaKmsImpl *impl,
|
||||||
MetaKmsUpdate *update,
|
MetaKmsUpdate *update,
|
||||||
MetaKmsPageFlip *page_flip,
|
gpointer update_entry,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
MetaKmsPageFlip *page_flip = update_entry;
|
||||||
MetaKmsImplSimple *impl_simple = META_KMS_IMPL_SIMPLE (impl);
|
MetaKmsImplSimple *impl_simple = META_KMS_IMPL_SIMPLE (impl);
|
||||||
MetaKmsCrtc *crtc;
|
MetaKmsCrtc *crtc;
|
||||||
MetaKmsDevice *device;
|
MetaKmsDevice *device;
|
||||||
@ -721,6 +726,27 @@ discard_page_flip (MetaKmsImpl *impl,
|
|||||||
meta_kms_page_flip_data_unref (page_flip_data);
|
meta_kms_page_flip_data_unref (page_flip_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
process_entries (MetaKmsImpl *impl,
|
||||||
|
MetaKmsUpdate *update,
|
||||||
|
GList *entries,
|
||||||
|
gboolean (* func) (MetaKmsImpl *impl,
|
||||||
|
MetaKmsUpdate *update,
|
||||||
|
gpointer entry_data,
|
||||||
|
GError **error),
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
GList *l;
|
||||||
|
|
||||||
|
for (l = entries; l; l = l->next)
|
||||||
|
{
|
||||||
|
if (!func (impl, update, l->data, error))
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_kms_impl_simple_process_update (MetaKmsImpl *impl,
|
meta_kms_impl_simple_process_update (MetaKmsImpl *impl,
|
||||||
MetaKmsUpdate *update,
|
MetaKmsUpdate *update,
|
||||||
@ -730,37 +756,33 @@ meta_kms_impl_simple_process_update (MetaKmsImpl *impl,
|
|||||||
|
|
||||||
meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl));
|
meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl));
|
||||||
|
|
||||||
for (l = meta_kms_update_get_connector_properties (update); l; l = l->next)
|
if (!process_entries (impl,
|
||||||
{
|
update,
|
||||||
MetaKmsConnectorProperty *connector_property = l->data;
|
meta_kms_update_get_connector_properties (update),
|
||||||
|
process_connector_property,
|
||||||
if (!process_connector_property (impl, update, connector_property, error))
|
error))
|
||||||
goto discard_page_flips;
|
goto discard_page_flips;
|
||||||
}
|
|
||||||
|
|
||||||
for (l = meta_kms_update_get_mode_sets (update); l; l = l->next)
|
if (!process_entries (impl,
|
||||||
{
|
update,
|
||||||
MetaKmsModeSet *mode_set = l->data;
|
meta_kms_update_get_mode_sets (update),
|
||||||
|
process_mode_set,
|
||||||
if (!process_mode_set (impl, update, mode_set, error))
|
error))
|
||||||
goto discard_page_flips;
|
goto discard_page_flips;
|
||||||
}
|
|
||||||
|
|
||||||
for (l = meta_kms_update_get_crtc_gammas (update); l; l = l->next)
|
if (!process_entries (impl,
|
||||||
{
|
update,
|
||||||
MetaKmsCrtcGamma *gamma = l->data;
|
meta_kms_update_get_crtc_gammas (update),
|
||||||
|
process_crtc_gamma,
|
||||||
if (!process_crtc_gamma (impl, gamma, error))
|
error))
|
||||||
goto discard_page_flips;
|
goto discard_page_flips;
|
||||||
}
|
|
||||||
|
|
||||||
for (l = meta_kms_update_get_page_flips (update); l; l = l->next)
|
if (!process_entries (impl,
|
||||||
{
|
update,
|
||||||
MetaKmsPageFlip *page_flip = l->data;
|
meta_kms_update_get_page_flips (update),
|
||||||
|
process_page_flip,
|
||||||
if (!process_page_flip (impl, update, page_flip, error))
|
error))
|
||||||
goto discard_page_flips;
|
goto discard_page_flips;
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user