summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nautilus-thumbnails.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/nautilus-thumbnails.c b/src/nautilus-thumbnails.c
index 9be632fca..d81d704da 100644
--- a/src/nautilus-thumbnails.c
+++ b/src/nautilus-thumbnails.c
@@ -127,17 +127,17 @@ free_thumbnail_info (NautilusThumbnailInfo *info)
g_free (info);
}
-static GnomeDesktopThumbnailFactory *
-get_thumbnail_factory (void)
+static GnomeDesktopThumbnailSize
+get_thumbnail_scale (void)
{
- static GnomeDesktopThumbnailFactory *thumbnail_factory = NULL;
+ static gint max_scale = 0;
+ static GnomeDesktopThumbnailSize size;
- if (G_UNLIKELY (thumbnail_factory == NULL))
+ if (G_UNLIKELY (max_scale == 0))
{
GdkDisplay *display = gdk_display_get_default ();
GListModel *monitors = gdk_display_get_monitors (display);
- gint max_scale = 1;
- GnomeDesktopThumbnailSize size;
+ max_scale = 1;
for (guint i = 0; i < g_list_model_get_n_items (monitors); i++)
{
@@ -158,6 +158,19 @@ get_thumbnail_factory (void)
{
size = GNOME_DESKTOP_THUMBNAIL_SIZE_XXLARGE;
}
+ }
+
+ return size;
+}
+
+static GnomeDesktopThumbnailFactory *
+get_thumbnail_factory (void)
+{
+ static GnomeDesktopThumbnailFactory *thumbnail_factory = NULL;
+
+ if (G_UNLIKELY (thumbnail_factory == NULL))
+ {
+ GnomeDesktopThumbnailSize size = get_thumbnail_scale ();
thumbnail_factory = gnome_desktop_thumbnail_factory_new (size);
}