diff --git a/js/ui/background.js b/js/ui/background.js index c61d946a4..ae7ef275e 100644 --- a/js/ui/background.js +++ b/js/ui/background.js @@ -539,10 +539,15 @@ var BackgroundSource = new Lang.Class({ this._backgrounds = []; this._monitorsChangedId = global.screen.connect('monitors-changed', - this._onMonitorsChanged.bind(this)); + this._refresh.bind(this)); + + global.display.connect('gl-video-memory-purged', () => { + Meta.Background.refresh_all(); + this._refresh(); + }); }, - _onMonitorsChanged() { + _refresh() { for (let monitorIndex in this._backgrounds) { let background = this._backgrounds[monitorIndex]; diff --git a/js/ui/layout.js b/js/ui/layout.js index 6f810395d..2cd1e5bd3 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js @@ -278,18 +278,6 @@ var LayoutManager = new Lang.Class({ global.screen.connect('in-fullscreen-changed', this._updateFullscreen.bind(this)); this._monitorsChanged(); - - // NVIDIA drivers don't preserve FBO contents across - // suspend/resume, see - // https://bugzilla.gnome.org/show_bug.cgi?id=739178 - if (Shell.util_need_background_refresh()) { - LoginManager.getLoginManager().connect('prepare-for-sleep', - (lm, suspending) => { - if (suspending) - return; - Meta.Background.refresh_all(); - }); - } }, // This is called by Main after everything else is constructed diff --git a/src/shell-util.c b/src/shell-util.c index c43bf4cc5..c63c6efb7 100644 --- a/src/shell-util.c +++ b/src/shell-util.c @@ -396,15 +396,6 @@ get_gl_vendor (void) return vendor; } -gboolean -shell_util_need_background_refresh (void) -{ - if (g_strcmp0 (get_gl_vendor (), "NVIDIA Corporation") == 0) - return TRUE; - - return FALSE; -} - static gboolean canvas_draw_cb (ClutterContent *content, cairo_t *cr,