diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index 27dda3e8..39d7db58 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -3142,6 +3142,13 @@ static bool sna_probe_initial_configuration(struct sna *sna) return scrn->modes != NULL; } +static void +sna_crtc_config_notify(ScreenPtr screen) +{ + DBG(("%s\n", __FUNCTION__)); + sna_mode_update(to_sna_from_screen(screen)); +} + bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna) { struct sna_mode *mode = &sna->mode; @@ -3150,6 +3157,7 @@ bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna) mode->kmode = drmModeGetResources(sna->kgem.fd); if (mode->kmode) { xf86CrtcConfigInit(scrn, &sna_mode_funcs); + XF86_CRTC_CONFIG_PTR(sna->scrn)->xf86_crtc_notify = sna_crtc_config_notify; for (i = 0; i < mode->kmode->count_crtcs; i++) if (!sna_crtc_init(scrn, mode, i)) diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c index 7092edce..ca41e7e7 100644 --- a/src/sna/sna_driver.c +++ b/src/sna/sna_driver.c @@ -781,14 +781,6 @@ static Bool sna_late_close_screen(CLOSE_SCREEN_ARGS_DECL) return TRUE; } -static void sna_mode_set(ScrnInfoPtr scrn) -{ - struct sna *sna = to_sna(scrn); - - DBG(("%s\n", __FUNCTION__)); - sna_mode_update(sna); -} - static Bool sna_register_all_privates(void) { @@ -1129,10 +1121,6 @@ Bool sna_init_scrn(ScrnInfoPtr scrn, int entity_num) scrn->ValidMode = sna_valid_mode; scrn->PMEvent = sna_pm_event; -#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0) - scrn->ModeSet = sna_mode_set; -#endif - xf86SetEntitySharable(entity_num); xf86SetEntityInstanceForScreen(scrn, entity_num, xf86GetNumEntityInstances(entity_num)-1);