[gnome-shell/wip/rstrode/rhel-8.0.0] wip: clear textures on resume



commit 305ecd4b36c77addd276062470250e3af3fd0b41
Author: Ray Strode <rstrode redhat com>
Date:   Tue Jan 8 16:58:58 2019 -0500

    wip: clear textures on resume
    
    This is a few changes necessary to redo textures on resume on nvidia
    on wayland.

 js/ui/main.js             |  8 +++++++-
 src/shell-util.c          |  3 ---
 src/st/st-texture-cache.c | 12 ++++++++++++
 src/st/st-texture-cache.h |  1 +
 4 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/main.js b/js/ui/main.js
index d86cf9e81..19c0d4dc9 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -207,7 +207,13 @@ function _initializeUI() {
         return true;
     });
 
-    global.display.connect('gl-video-memory-purged', loadTheme);
+    global.display.connect('gl-video-memory-purged', () => {
+       let cache = St.TextureCache.get_default();
+
+        cache.clear();
+
+        loadTheme();
+    });
 
     // Provide the bus object for gnome-session to
     // initiate logouts.
diff --git a/src/shell-util.c b/src/shell-util.c
index 70b8c0611..c43bf4cc5 100644
--- a/src/shell-util.c
+++ b/src/shell-util.c
@@ -399,9 +399,6 @@ get_gl_vendor (void)
 gboolean
 shell_util_need_background_refresh (void)
 {
-  if (!clutter_check_windowing_backend (CLUTTER_WINDOWING_X11))
-    return FALSE;
-
   if (g_strcmp0 (get_gl_vendor (), "NVIDIA Corporation") == 0)
     return TRUE;
 
diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c
index 0c794a3ab..5a3dcd81f 100644
--- a/src/st/st-texture-cache.c
+++ b/src/st/st-texture-cache.c
@@ -105,6 +105,18 @@ st_texture_cache_class_init (StTextureCacheClass *klass)
                   G_TYPE_NONE, 1, G_TYPE_FILE);
 }
 
+/* Evicts all cached textures */
+void
+st_texture_cache_clear (StTextureCache *cache)
+{
+  GHashTableIter iter;
+  gpointer key;
+  gpointer value;
+
+  g_hash_table_remove_all (cache->priv->keyed_cache);
+  g_signal_emit (cache, signals[ICON_THEME_CHANGED], 0);
+}
+
 /* Evicts all cached textures for named icons */
 static void
 st_texture_cache_evict_icons (StTextureCache *cache)
diff --git a/src/st/st-texture-cache.h b/src/st/st-texture-cache.h
index 26f9c30ac..b87adc4d5 100644
--- a/src/st/st-texture-cache.h
+++ b/src/st/st-texture-cache.h
@@ -52,6 +52,7 @@ typedef enum {
 } StTextureCachePolicy;
 
 StTextureCache* st_texture_cache_get_default (void);
+void st_texture_cache_clear (StTextureCache *cache);
 
 ClutterActor *
 st_texture_cache_load_sliced_image (StTextureCache *cache,


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