diff options
author | Debarshi Ray <debarshir@gnome.org> | 2018-08-22 13:31:10 +0200 |
---|---|---|
committer | Debarshi Ray <debarshir@gnome.org> | 2018-08-22 13:31:10 +0200 |
commit | 15f53b66ac6cfd6f2535b5614a21825ea4bd4ad4 (patch) | |
tree | 5022432de705e8cde8fa6711ac4b2bcc0df41656 | |
parent | 5279a6bff46b3c9fb42da27bc1961e8d522fbc93 (diff) | |
download | libgd-15f53b66ac6cfd6f2535b5614a21825ea4bd4ad4.tar.gz |
two-lines-renderer: Drop the priv pointer
The current GObject recommendation is to use the generated
get_instance_private function instead of a separate priv pointer in the
instance struct. The saves one pointer per class in the heirarchy
multiplied by the number of instances of the type, and the function is
fast enough because it only does pointer arithmetic.
https://bugzilla.gnome.org/show_bug.cgi?id=774709
-rw-r--r-- | libgd/gd-two-lines-renderer.c | 44 | ||||
-rw-r--r-- | libgd/gd-two-lines-renderer.h | 2 |
2 files changed, 30 insertions, 16 deletions
diff --git a/libgd/gd-two-lines-renderer.c b/libgd/gd-two-lines-renderer.c index 1f58fd7..8c7e616 100644 --- a/libgd/gd-two-lines-renderer.c +++ b/libgd/gd-two-lines-renderer.c @@ -118,10 +118,13 @@ gd_two_lines_renderer_prepare_layouts (GdTwoLinesRenderer *self, PangoLayout **layout_one, PangoLayout **layout_two) { + GdTwoLinesRendererPrivate *priv; PangoLayout *line_one; PangoLayout *line_two = NULL; gchar *text = NULL; + priv = gd_two_lines_renderer_get_instance_private (self); + g_object_get (self, "text", &text, NULL); @@ -129,10 +132,10 @@ gd_two_lines_renderer_prepare_layouts (GdTwoLinesRenderer *self, line_one = create_layout_with_attrs (widget, cell_area, self, PANGO_ELLIPSIZE_MIDDLE); - if (self->priv->line_two == NULL || - g_strcmp0 (self->priv->line_two, "") == 0) + if (priv->line_two == NULL || + g_strcmp0 (priv->line_two, "") == 0) { - pango_layout_set_height (line_one, - (self->priv->text_lines)); + pango_layout_set_height (line_one, - (priv->text_lines)); if (text != NULL) pango_layout_set_text (line_one, text, -1); @@ -149,9 +152,9 @@ gd_two_lines_renderer_prepare_layouts (GdTwoLinesRenderer *self, apply_subtitle_style_to_layout (context, line_two, GTK_STATE_FLAG_NORMAL); gtk_style_context_restore (context); - pango_layout_set_height (line_one, - (self->priv->text_lines - 1)); + pango_layout_set_height (line_one, - (priv->text_lines - 1)); pango_layout_set_height (line_two, -1); - pango_layout_set_text (line_two, self->priv->line_two, -1); + pango_layout_set_text (line_two, priv->line_two, -1); if (text != NULL) pango_layout_set_text (line_one, text, -1); @@ -494,11 +497,15 @@ static void gd_two_lines_renderer_set_line_two (GdTwoLinesRenderer *self, const gchar *line_two) { - if (g_strcmp0 (self->priv->line_two, line_two) == 0) + GdTwoLinesRendererPrivate *priv; + + priv = gd_two_lines_renderer_get_instance_private (self); + + if (g_strcmp0 (priv->line_two, line_two) == 0) return; - g_free (self->priv->line_two); - self->priv->line_two = g_strdup (line_two); + g_free (priv->line_two); + priv->line_two = g_strdup (line_two); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_LINE_TWO]); } @@ -507,10 +514,14 @@ static void gd_two_lines_renderer_set_text_lines (GdTwoLinesRenderer *self, gint text_lines) { - if (self->priv->text_lines == text_lines) + GdTwoLinesRendererPrivate *priv; + + priv = gd_two_lines_renderer_get_instance_private (self); + + if (priv->text_lines == text_lines) return; - self->priv->text_lines = text_lines; + priv->text_lines = text_lines; g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TEXT_LINES]); } @@ -543,14 +554,17 @@ gd_two_lines_renderer_get_property (GObject *object, GParamSpec *pspec) { GdTwoLinesRenderer *self = GD_TWO_LINES_RENDERER (object); + GdTwoLinesRendererPrivate *priv; + + priv = gd_two_lines_renderer_get_instance_private (self); switch (property_id) { case PROP_TEXT_LINES: - g_value_set_int (value, self->priv->text_lines); + g_value_set_int (value, priv->text_lines); break; case PROP_LINE_TWO: - g_value_set_string (value, self->priv->line_two); + g_value_set_string (value, priv->line_two); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -562,8 +576,11 @@ static void gd_two_lines_renderer_finalize (GObject *object) { GdTwoLinesRenderer *self = GD_TWO_LINES_RENDERER (object); + GdTwoLinesRendererPrivate *priv; + + priv = gd_two_lines_renderer_get_instance_private (self); - g_free (self->priv->line_two); + g_free (priv->line_two); G_OBJECT_CLASS (gd_two_lines_renderer_parent_class)->finalize (object); } @@ -604,7 +621,6 @@ gd_two_lines_renderer_class_init (GdTwoLinesRendererClass *klass) static void gd_two_lines_renderer_init (GdTwoLinesRenderer *self) { - self->priv = gd_two_lines_renderer_get_instance_private (self); } GtkCellRenderer * diff --git a/libgd/gd-two-lines-renderer.h b/libgd/gd-two-lines-renderer.h index 23bf70f..f9cff3b 100644 --- a/libgd/gd-two-lines-renderer.h +++ b/libgd/gd-two-lines-renderer.h @@ -57,8 +57,6 @@ typedef struct _GdTwoLinesRendererPrivate GdTwoLinesRendererPrivate; struct _GdTwoLinesRenderer { GtkCellRendererText parent; - - GdTwoLinesRendererPrivate *priv; }; struct _GdTwoLinesRendererClass |