kms/impl-device: Don't disable deadline timer due to invalid mode
If crtc->current_state.is_drm_mode_valid happens to be FALSE, meta_kms_crtc_determine_deadline returns G_IO_ERROR_NOT_FOUND. This previously resulted in silently and permanently disabling the deadline timer, which is surprising and undesirable. Bail early from ensure_deadline_timer_armed in this case instead. In turn, G_IO_ERROR_NOT_FOUND from meta_kms_crtc_determine_deadline no longer needs to be treated specially. Fixes: 7493ed39ce20 ("kms/impl-device: Avoid retrying a failing deadline timer") v2: * Stop treating G_IO_ERROR_NOT_FOUND specially. (Sebastian Wick) Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4321>
This commit is contained in:
parent
d5bcce3859
commit
80e66878e8
@ -1382,6 +1382,9 @@ ensure_deadline_timer_armed (MetaKmsImplDevice *impl_device,
|
|||||||
if (crtc_frame->deadline.armed)
|
if (crtc_frame->deadline.armed)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
if (!meta_kms_crtc_get_current_state (crtc_frame->crtc)->is_drm_mode_valid)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (!meta_kms_crtc_determine_deadline (crtc_frame->crtc,
|
if (!meta_kms_crtc_determine_deadline (crtc_frame->crtc,
|
||||||
&next_deadline_us,
|
&next_deadline_us,
|
||||||
&next_presentation_us,
|
&next_presentation_us,
|
||||||
@ -1399,9 +1402,7 @@ ensure_deadline_timer_armed (MetaKmsImplDevice *impl_device,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
|
|
||||||
g_warning ("Failed to determine deadline: %s", local_error->message);
|
g_warning ("Failed to determine deadline: %s", local_error->message);
|
||||||
|
|
||||||
priv->deadline_timer_state = META_DEADLINE_TIMER_STATE_DISABLED;
|
priv->deadline_timer_state = META_DEADLINE_TIMER_STATE_DISABLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user