[gimp] canvas: remove limits on ruler & statusbar updates
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] canvas: remove limits on ruler & statusbar updates
- Date: Tue, 5 Jul 2022 13:35:28 +0000 (UTC)
commit 042eddfb0a0d0491ac9ed1a97771ccac8e8a4e7d
Author: Lukas Oberhuber <lukaso gmail com>
Date: Sun Jun 26 13:21:16 2022 +0100
canvas: remove limits on ruler & statusbar updates
This removes rate limiting of ruler and statusbar updates which were
required to get acceptable performance on mac for drawing on the canvas.
This requires the latest changes on in Gtk 3.24 to be incorporated.
app/display/gimpstatusbar.c | 21 ---------------------
app/display/gimpstatusbar.h | 9 ---------
libgimpwidgets/gimpruler.c | 35 -----------------------------------
3 files changed, 65 deletions(-)
---
diff --git a/app/display/gimpstatusbar.c b/app/display/gimpstatusbar.c
index 9b949e0a96..cd604d11cf 100644
--- a/app/display/gimpstatusbar.c
+++ b/app/display/gimpstatusbar.c
@@ -1815,27 +1815,6 @@ gimp_statusbar_queue_pos_redraw (gpointer data)
shell = statusbar->shell;
image = gimp_display_get_image (shell->display);
-#ifdef GDK_WINDOWING_QUARTZ
-/*
- * This optimization dramatically improves drawing refresh speed on Macs with retina
- * displays, which is all macbook pros since 2016 and macbook airs since 2018 and
- * running Big Sur (released Nov 2020) or higher.
- * https://gitlab.gnome.org/GNOME/gimp/-/issues/7690
- *
- * only redraw max every 333ms and only redraw when the other two decorations aren't
- * redrawing (cursor_label, horizontal and vertical rulers). This will keep the draw
- * rects of limited size.
- */
- gint64 curr_time = g_get_monotonic_time ();
- gint64 mod_time = curr_time % G_TIME_SPAN_SECOND;
- gint timeslice_num = mod_time / (G_TIME_SPAN_SECOND / 9) % 3;
-
- if (curr_time - statusbar->last_frame_time < G_TIME_SPAN_SECOND / 3 || timeslice_num != 0)
- return G_SOURCE_CONTINUE;
-
- statusbar->last_frame_time = curr_time;
-#endif
-
if (image)
{
image_width = gimp_image_get_width (image);
diff --git a/app/display/gimpstatusbar.h b/app/display/gimpstatusbar.h
index 50269161d2..3cab648dda 100644
--- a/app/display/gimpstatusbar.h
+++ b/app/display/gimpstatusbar.h
@@ -44,15 +44,6 @@ struct _GimpStatusbar
GHashTable *context_ids;
guint seq_context_id;
-#ifdef GDK_WINDOWING_QUARTZ
- /*
- * This optimization dramatically improves drawing refresh speed on Macs with retina
- * displays, which is all macbook pros since 2016 and macbook airs since 2018 and
- * running Big Sur (released Nov 2020) or higher.
- * https://gitlab.gnome.org/GNOME/gimp/-/issues/7690
- */
- gint64 last_frame_time;
-#endif
guint statusbar_pos_redraw_idle_id;
gchar *cursor_string_todraw;
gchar *cursor_string_last;
diff --git a/libgimpwidgets/gimpruler.c b/libgimpwidgets/gimpruler.c
index 670ced1e7d..27e9063951 100644
--- a/libgimpwidgets/gimpruler.c
+++ b/libgimpwidgets/gimpruler.c
@@ -77,16 +77,6 @@ struct _GimpRulerPrivate
PangoLayout *layout;
GList *track_widgets;
-
-#ifdef GDK_WINDOWING_QUARTZ
- /*
- * This optimization dramatically improves drawing refresh speed on Macs with retina
- * displays, which is all macbook pros since 2016 and macbook airs since 2018 and
- * running Big Sur (released Nov 2020) or higher.
- * https://gitlab.gnome.org/GNOME/gimp/-/issues/7690
- */
- gint64 last_frame_time;
-#endif
};
#define GET_PRIVATE(obj) (((GimpRuler *) (obj))->priv)
@@ -1274,31 +1264,6 @@ gimp_ruler_idle_queue_pos_redraw (gpointer data)
GimpRuler *ruler = data;
GimpRulerPrivate *priv = GET_PRIVATE (ruler);
-#ifdef GDK_WINDOWING_QUARTZ
- /*
- * This optimization dramatically improves drawing refresh speed on Macs with retina
- * displays, which is all macbook pros since 2016 and macbook airs since 2018 and
- * running Big Sur (released Nov 2020) or higher.
- * https://gitlab.gnome.org/GNOME/gimp/-/issues/7690
- *
- * only redraw max every 333ms and only redraw when the other two decorations aren't
- * redrawing (cursor_label, horizontal and vertical rulers). This will keep the draw
- * rects of limited size.
- */
- gint64 curr_time = g_get_monotonic_time ();
- gint64 mod_time = curr_time % G_TIME_SPAN_SECOND;
- gint timeslice_num = mod_time / (G_TIME_SPAN_SECOND / 9) % 3;
-
- if (curr_time - priv->last_frame_time < G_TIME_SPAN_SECOND / 3)
- return G_SOURCE_CONTINUE;
- if (priv->orientation == GTK_ORIENTATION_HORIZONTAL && timeslice_num != 1)
- return G_SOURCE_CONTINUE;
- if (priv->orientation == GTK_ORIENTATION_VERTICAL && timeslice_num != 2)
- return G_SOURCE_CONTINUE;
-
- priv->last_frame_time = curr_time;
-#endif
-
gimp_ruler_queue_pos_redraw (ruler);
/*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]