[gnome-shell/wip/rstrode/rhel-8.0.0: 50/50] background: refresh background on gl-video-memory-purged signal



commit 5f571b8531011b635034625d22d098fde688ff10
Author: Ray Strode <rstrode redhat com>
Date:   Mon Jan 21 15:07:15 2019 -0500

    background: refresh background on gl-video-memory-purged signal
    
    Right now we refresh the background when resuming and when NVIDIA.
    But mutter has a signal to tell us specifically when to refresh,
    and the signal is only emitted for NVIDIA, so use that instead.

 js/ui/background.js |  9 +++++++--
 js/ui/layout.js     | 12 ------------
 src/shell-util.c    |  9 ---------
 3 files changed, 7 insertions(+), 23 deletions(-)
---
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,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]