From: Timm Bäder Date: Sat, 21 Apr 2018 15:03:31 +0000 (+0200) Subject: widget: Add static inline version of gtk_widget_display() X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~22^2~440 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c3e02b2b22bf592d84753790713de883d2de543a;p=gtk4.git widget: Add static inline version of gtk_widget_display() Due to the few type checks in gtk_widget_get_display(), it was the slowest part of a call to gtk_widget_query_size_for_orientation if the in case of a cache hit. --- diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 7b115c3325..33ca2235c3 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -7763,21 +7763,9 @@ gtk_widget_get_scale_factor (GtkWidget *widget) GdkDisplay* gtk_widget_get_display (GtkWidget *widget) { - GtkWidget *toplevel; - g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - toplevel = _gtk_widget_get_toplevel (widget); - - if (_gtk_widget_is_toplevel (toplevel)) - { - if (GTK_IS_WINDOW (toplevel)) - return gtk_window_get_display (GTK_WINDOW (toplevel)); - else if (GTK_IS_INVISIBLE (toplevel)) - return gtk_invisible_get_display (GTK_INVISIBLE (widget)); - } - - return gdk_display_get_default (); + return _gtk_widget_get_display (widget); } /** diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index 7b76ffa2bf..f53b7659dc 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -32,6 +32,8 @@ #include "gtkcsstypesprivate.h" #include "gtkeventcontroller.h" #include "gtksizerequestcacheprivate.h" +#include "gtkwindowprivate.h" +#include "gtkinvisible.h" G_BEGIN_DECLS @@ -412,6 +414,22 @@ _gtk_widget_get_toplevel (GtkWidget *widget) return widget; } +static inline GdkDisplay * +_gtk_widget_get_display (GtkWidget *widget) +{ + GtkWidget *toplevel = _gtk_widget_get_toplevel (widget); + + if (_gtk_widget_is_toplevel (toplevel)) + { + if (GTK_IS_WINDOW (toplevel)) + return gtk_window_get_display (GTK_WINDOW (toplevel)); + else if (GTK_IS_INVISIBLE (toplevel)) + return gtk_invisible_get_display (GTK_INVISIBLE (widget)); + } + + return gdk_display_get_default (); +} + static inline GtkStyleContext * _gtk_widget_get_style_context (GtkWidget *widget) {