mirror of
https://github.com/brl/mutter.git
synced 2025-06-14 01:09:30 +00:00
monitor: Allow monitor mode foreach crtc iterator failable
Allow the function used to iterate over the CRTC modes of a monitor mode to fail, causing the iteration to fail as well. https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
@ -576,11 +576,12 @@ meta_monitor_mode_get_refresh_rate (MetaMonitorMode *monitor_mode)
|
||||
return monitor_mode->spec.refresh_rate;
|
||||
}
|
||||
|
||||
void
|
||||
gboolean
|
||||
meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
|
||||
MetaMonitorMode *mode,
|
||||
MetaMonitorModeFunc func,
|
||||
gpointer user_data)
|
||||
gpointer user_data,
|
||||
GError **error)
|
||||
{
|
||||
MetaMonitorPrivate *monitor_priv =
|
||||
meta_monitor_get_instance_private (monitor);
|
||||
@ -591,6 +592,9 @@ meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
|
||||
{
|
||||
MetaMonitorCrtcMode *monitor_crtc_mode = &mode->crtc_modes[i];
|
||||
|
||||
func (monitor, mode, monitor_crtc_mode, user_data);
|
||||
if (!func (monitor, mode, monitor_crtc_mode, user_data, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -51,10 +51,11 @@ typedef struct _MetaMonitorCrtcMode
|
||||
MetaCrtcMode *crtc_mode;
|
||||
} MetaMonitorCrtcMode;
|
||||
|
||||
typedef void (* MetaMonitorModeFunc) (MetaMonitor *monitor,
|
||||
MetaMonitorMode *mode,
|
||||
MetaMonitorCrtcMode *monitor_crtc_mode,
|
||||
gpointer user_data);
|
||||
typedef gboolean (* MetaMonitorModeFunc) (MetaMonitor *monitor,
|
||||
MetaMonitorMode *mode,
|
||||
MetaMonitorCrtcMode *monitor_crtc_mode,
|
||||
gpointer user_data,
|
||||
GError **error);
|
||||
|
||||
#define META_TYPE_MONITOR (meta_monitor_get_type ())
|
||||
G_DECLARE_DERIVABLE_TYPE (MetaMonitor, meta_monitor, META, MONITOR, GObject)
|
||||
@ -120,10 +121,11 @@ void meta_monitor_mode_get_resolution (MetaMonitorMode *monitor_mode,
|
||||
|
||||
float meta_monitor_mode_get_refresh_rate (MetaMonitorMode *monitor_mode);
|
||||
|
||||
void meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
|
||||
MetaMonitorMode *mode,
|
||||
MetaMonitorModeFunc func,
|
||||
gpointer user_data);
|
||||
gboolean meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
|
||||
MetaMonitorMode *mode,
|
||||
MetaMonitorModeFunc func,
|
||||
gpointer user_data,
|
||||
GError **error);
|
||||
|
||||
MetaMonitorSpec * meta_monitor_spec_clone (MetaMonitorSpec *monitor_id);
|
||||
|
||||
|
Reference in New Issue
Block a user