[libchamplain] Use our own copy of ClutterGroup
- From: Jiří Techet <jiritechet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libchamplain] Use our own copy of ClutterGroup
- Date: Sat, 12 Feb 2011 10:45:05 +0000 (UTC)
commit 5c6ff17e1a4a2ccc1b4681414d6dbdef06642a7c
Author: JiÅ?Ã Techet <techet gmail com>
Date: Sat Feb 12 11:18:02 2011 +0100
Use our own copy of ClutterGroup
ChamplainGroup is in principle ClutterGroup which doesn't sort
actors by depth. This speeds up addition and removal of
markers in libchamplain considerably.
champlain/Makefile.am | 8 +-
champlain/champlain-group.c | 472 ++++++++++++++++++++++++++++++++++++
champlain/champlain-group.h | 113 +++++++++
champlain/champlain-marker-layer.c | 18 +-
docs/reference/Makefile.am | 2 +-
5 files changed, 601 insertions(+), 12 deletions(-)
---
diff --git a/champlain/Makefile.am b/champlain/Makefile.am
index 9c0b284..ea44410 100644
--- a/champlain/Makefile.am
+++ b/champlain/Makefile.am
@@ -43,6 +43,7 @@ libchamplain_headers_public = \
libchamplain_headers_private = \
$(srcdir)/champlain-debug.h \
+ $(srcdir)/champlain-group.h \
$(srcdir)/champlain-private.h
@@ -56,8 +57,8 @@ libchamplain_sources = \
$(srcdir)/champlain-debug.c \
$(srcdir)/champlain-view.c \
$(srcdir)/champlain-layer.c \
- $(srcdir)/champlain-marker-layer.c \
- $(srcdir)/champlain-marker.c \
+ $(srcdir)/champlain-marker-layer.c \
+ $(srcdir)/champlain-marker.c \
$(srcdir)/champlain-label.c \
$(srcdir)/champlain-scale.c \
$(srcdir)/champlain-license.c \
@@ -72,13 +73,14 @@ libchamplain_sources = \
$(srcdir)/champlain-map-source-factory.c \
$(srcdir)/champlain-map-source-desc.c \
$(srcdir)/champlain-point.c \
- $(srcdir)/champlain-custom-marker.c \
+ $(srcdir)/champlain-custom-marker.c \
$(srcdir)/champlain-renderer.c \
$(srcdir)/champlain-image-renderer.c \
$(srcdir)/champlain-error-tile-renderer.c \
$(srcdir)/champlain-file-tile-source.c \
$(srcdir)/champlain-null-tile-source.c \
$(srcdir)/champlain-network-bbox-tile-source.c \
+ $(srcdir)/champlain-group.c \
$(srcdir)/champlain-bounding-box.c
champlain-features.h: $(top_builddir)/config.status
diff --git a/champlain/champlain-group.c b/champlain/champlain-group.c
new file mode 100644
index 0000000..3bdabd0
--- /dev/null
+++ b/champlain/champlain-group.c
@@ -0,0 +1,472 @@
+/*
+ * Clutter.
+ *
+ * An OpenGL based 'interactive canvas' library.
+ *
+ * Authored By Matthew Allum <mallum openedhand com>
+ *
+ * Copyright (C) 2006 OpenedHand
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ *
+ */
+
+/**
+ * SECTION:champlain-group
+ * @short_description: A fixed layout container
+ *
+ * This is a shameless coppy of ClutterGroup. The only difference is that
+ * it doesn't sort actors by depth, which slows down things in libchamplain
+ * considerably.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdarg.h>
+
+#include "champlain-group.h"
+
+#include <clutter/clutter.h>
+
+#define CHAMPLAIN_GROUP_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), CHAMPLAIN_TYPE_GROUP, ChamplainGroupPrivate))
+
+struct _ChamplainGroupPrivate
+{
+ GList *children;
+
+ ClutterLayoutManager *layout;
+};
+
+enum
+{
+ ADD,
+ REMOVE,
+
+ LAST_SIGNAL
+};
+
+static void clutter_container_iface_init (ClutterContainerIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (ChamplainGroup, champlain_group, CLUTTER_TYPE_ACTOR,
+ G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
+ clutter_container_iface_init));
+
+/*
+static gint
+sort_by_depth (gconstpointer a,
+ gconstpointer b)
+{
+ gfloat depth_a = clutter_actor_get_depth (CLUTTER_ACTOR(a));
+ gfloat depth_b = clutter_actor_get_depth (CLUTTER_ACTOR(b));
+
+ if (depth_a < depth_b)
+ return -1;
+
+ if (depth_a > depth_b)
+ return 1;
+
+ return 0;
+}
+*/
+
+static void
+champlain_group_real_add (ClutterContainer *container,
+ ClutterActor *actor)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (container)->priv;
+
+ g_object_ref (actor);
+
+ priv->children = g_list_append (priv->children, actor);
+ clutter_actor_set_parent (actor, CLUTTER_ACTOR (container));
+
+ /* queue a relayout, to get the correct positioning inside
+ * the ::actor-added signal handlers
+ */
+ clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
+
+ g_signal_emit_by_name (container, "actor-added", actor);
+
+ clutter_container_sort_depth_order (container);
+
+ g_object_unref (actor);
+}
+
+static void
+champlain_group_real_remove (ClutterContainer *container,
+ ClutterActor *actor)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (container)->priv;
+
+ g_object_ref (actor);
+
+ priv->children = g_list_remove (priv->children, actor);
+ clutter_actor_unparent (actor);
+
+ /* queue a relayout, to get the correct positioning inside
+ * the ::actor-removed signal handlers
+ */
+ clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
+
+ /* at this point, the actor passed to the "actor-removed" signal
+ * handlers is not parented anymore to the container but since we
+ * are holding a reference on it, it's still valid
+ */
+ g_signal_emit_by_name (container, "actor-removed", actor);
+
+ clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+
+ g_object_unref (actor);
+}
+
+static void
+champlain_group_real_foreach (ClutterContainer *container,
+ ClutterCallback callback,
+ gpointer user_data)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (container)->priv;
+
+ /* Using g_list_foreach instead of iterating the list manually
+ because it has better protection against the current node being
+ removed. This will happen for example if someone calls
+ clutter_container_foreach(container, clutter_actor_destroy) */
+ g_list_foreach (priv->children, (GFunc) callback, user_data);
+}
+
+static void
+champlain_group_real_raise (ClutterContainer *container,
+ ClutterActor *actor,
+ ClutterActor *sibling)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (container)->priv;
+
+ priv->children = g_list_remove (priv->children, actor);
+
+ /* Raise at the top */
+ if (!sibling)
+ {
+ GList *last_item;
+
+ last_item = g_list_last (priv->children);
+
+ if (last_item)
+ sibling = last_item->data;
+
+ priv->children = g_list_append (priv->children, actor);
+ }
+ else
+ {
+ gint index_ = g_list_index (priv->children, sibling) + 1;
+
+ priv->children = g_list_insert (priv->children, actor, index_);
+ }
+
+ /* set Z ordering a value below, this will then call sort
+ * as values are equal ordering shouldn't change but Z
+ * values will be correct.
+ *
+ * FIXME: optimise
+ */
+ if (sibling &&
+ clutter_actor_get_depth (sibling) != clutter_actor_get_depth (actor))
+ {
+ clutter_actor_set_depth (actor, clutter_actor_get_depth (sibling));
+ }
+
+ clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+}
+
+static void
+champlain_group_real_lower (ClutterContainer *container,
+ ClutterActor *actor,
+ ClutterActor *sibling)
+{
+ ChamplainGroup *self = CHAMPLAIN_GROUP (container);
+ ChamplainGroupPrivate *priv = self->priv;
+
+ priv->children = g_list_remove (priv->children, actor);
+
+ /* Push to bottom */
+ if (!sibling)
+ {
+ GList *last_item;
+
+ last_item = g_list_first (priv->children);
+
+ if (last_item)
+ sibling = last_item->data;
+
+ priv->children = g_list_prepend (priv->children, actor);
+ }
+ else
+ {
+ gint index_ = g_list_index (priv->children, sibling);
+
+ priv->children = g_list_insert (priv->children, actor, index_);
+ }
+
+ /* See comment in group_raise for this */
+ if (sibling &&
+ clutter_actor_get_depth (sibling) != clutter_actor_get_depth (actor))
+ {
+ clutter_actor_set_depth (actor, clutter_actor_get_depth (sibling));
+ }
+
+ clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+}
+
+static void
+champlain_group_real_sort_depth_order (ClutterContainer *container)
+{
+// ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (container)->priv;
+
+// priv->children = g_list_sort (priv->children, sort_by_depth);
+
+// clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+}
+
+static void
+clutter_container_iface_init (ClutterContainerIface *iface)
+{
+ iface->add = champlain_group_real_add;
+ iface->remove = champlain_group_real_remove;
+ iface->foreach = champlain_group_real_foreach;
+ iface->raise = champlain_group_real_raise;
+ iface->lower = champlain_group_real_lower;
+ iface->sort_depth_order = champlain_group_real_sort_depth_order;
+}
+
+static void
+champlain_group_real_paint (ClutterActor *actor)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (actor)->priv;
+
+ g_list_foreach (priv->children, (GFunc) clutter_actor_paint, NULL);
+}
+
+static void
+champlain_group_real_pick (ClutterActor *actor,
+ const ClutterColor *pick)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (actor)->priv;
+
+ /* Chain up so we get a bounding box pained (if we are reactive) */
+ CLUTTER_ACTOR_CLASS (champlain_group_parent_class)->pick (actor, pick);
+
+ g_list_foreach (priv->children, (GFunc) clutter_actor_paint, NULL);
+}
+
+static void
+champlain_group_real_get_preferred_width (ClutterActor *actor,
+ gfloat for_height,
+ gfloat *min_width,
+ gfloat *natural_width)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (actor)->priv;
+
+ clutter_layout_manager_get_preferred_width (priv->layout,
+ CLUTTER_CONTAINER (actor),
+ for_height,
+ min_width, natural_width);
+}
+
+static void
+champlain_group_real_get_preferred_height (ClutterActor *actor,
+ gfloat for_width,
+ gfloat *min_height,
+ gfloat *natural_height)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (actor)->priv;
+
+ clutter_layout_manager_get_preferred_height (priv->layout,
+ CLUTTER_CONTAINER (actor),
+ for_width,
+ min_height, natural_height);
+}
+
+static void
+champlain_group_real_allocate (ClutterActor *actor,
+ const ClutterActorBox *allocation,
+ ClutterAllocationFlags flags)
+{
+ ChamplainGroupPrivate *priv = CHAMPLAIN_GROUP (actor)->priv;
+ ClutterActorClass *klass;
+
+ klass = CLUTTER_ACTOR_CLASS (champlain_group_parent_class);
+ klass->allocate (actor, allocation, flags);
+
+ if (priv->children == NULL)
+ return;
+
+ clutter_layout_manager_allocate (priv->layout,
+ CLUTTER_CONTAINER (actor),
+ allocation, flags);
+}
+
+static void
+champlain_group_dispose (GObject *object)
+{
+ ChamplainGroup *self = CHAMPLAIN_GROUP (object);
+ ChamplainGroupPrivate *priv = self->priv;
+
+ if (priv->children)
+ {
+ g_list_foreach (priv->children, (GFunc) clutter_actor_destroy, NULL);
+ g_list_free (priv->children);
+
+ priv->children = NULL;
+ }
+
+ if (priv->layout)
+ {
+ clutter_layout_manager_set_container (priv->layout, NULL);
+ g_object_unref (priv->layout);
+ priv->layout = NULL;
+ }
+
+ G_OBJECT_CLASS (champlain_group_parent_class)->dispose (object);
+}
+
+static void
+champlain_group_real_show_all (ClutterActor *actor)
+{
+ clutter_container_foreach (CLUTTER_CONTAINER (actor),
+ CLUTTER_CALLBACK (clutter_actor_show),
+ NULL);
+ clutter_actor_show (actor);
+}
+
+static void
+champlain_group_real_hide_all (ClutterActor *actor)
+{
+ clutter_actor_hide (actor);
+ clutter_container_foreach (CLUTTER_CONTAINER (actor),
+ CLUTTER_CALLBACK (clutter_actor_hide),
+ NULL);
+}
+
+
+
+
+static void
+champlain_group_class_init (ChamplainGroupClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (ChamplainGroupPrivate));
+
+ actor_class->get_preferred_width = champlain_group_real_get_preferred_width;
+ actor_class->get_preferred_height = champlain_group_real_get_preferred_height;
+ actor_class->allocate = champlain_group_real_allocate;
+ actor_class->paint = champlain_group_real_paint;
+ actor_class->pick = champlain_group_real_pick;
+ actor_class->show_all = champlain_group_real_show_all;
+ actor_class->hide_all = champlain_group_real_hide_all;
+
+ gobject_class->dispose = champlain_group_dispose;
+
+}
+
+static void
+champlain_group_init (ChamplainGroup *self)
+{
+ self->priv = CHAMPLAIN_GROUP_GET_PRIVATE (self);
+
+ self->priv->layout = clutter_fixed_layout_new ();
+ g_object_ref_sink (self->priv->layout);
+
+ clutter_layout_manager_set_container (self->priv->layout,
+ CLUTTER_CONTAINER (self));
+}
+
+/**
+ * champlain_group_new:
+ *
+ * Create a new #ChamplainGroup.
+ *
+ * Return value: the newly created #ChamplainGroup actor
+ */
+ClutterActor *
+champlain_group_new (void)
+{
+ return g_object_new (CHAMPLAIN_TYPE_GROUP, NULL);
+}
+
+/**
+ * champlain_group_remove_all:
+ * @group: A #ChamplainGroup
+ *
+ * Removes all children actors from the #ChamplainGroup.
+ */
+void
+champlain_group_remove_all (ChamplainGroup *group)
+{
+ GList *children;
+
+ g_return_if_fail (CHAMPLAIN_IS_GROUP (group));
+
+ children = group->priv->children;
+ while (children)
+ {
+ ClutterActor *child = children->data;
+ children = children->next;
+
+ clutter_container_remove_actor (CLUTTER_CONTAINER (group), child);
+ }
+}
+
+/**
+ * champlain_group_get_n_children:
+ * @self: A #ChamplainGroup
+ *
+ * Gets the number of actors held in the group.
+ *
+ * Return value: The number of child actors held in the group.
+ *
+ * Since: 0.2
+ */
+gint
+champlain_group_get_n_children (ChamplainGroup *self)
+{
+ g_return_val_if_fail (CHAMPLAIN_IS_GROUP (self), 0);
+
+ return g_list_length (self->priv->children);
+}
+
+/**
+ * champlain_group_get_nth_child:
+ * @self: A #ChamplainGroup
+ * @index_: the position of the requested actor.
+ *
+ * Gets a groups child held at @index_ in stack.
+ *
+ * Return value: (transfer none): A Clutter actor, or %NULL if
+ * @index_ is invalid.
+ *
+ * Since: 0.2
+ */
+ClutterActor *
+champlain_group_get_nth_child (ChamplainGroup *self,
+ gint index_)
+{
+ g_return_val_if_fail (CHAMPLAIN_IS_GROUP (self), NULL);
+
+ return g_list_nth_data (self->priv->children, index_);
+}
diff --git a/champlain/champlain-group.h b/champlain/champlain-group.h
new file mode 100644
index 0000000..03069ef
--- /dev/null
+++ b/champlain/champlain-group.h
@@ -0,0 +1,113 @@
+/*
+ * Clutter.
+ *
+ * An OpenGL based 'interactive canvas' library.
+ *
+ * Authored By Matthew Allum <mallum openedhand com>
+ *
+ * Copyright (C) 2006 OpenedHand
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __CHAMPLAIN_GROUP_H__
+#define __CHAMPLAIN_GROUP_H__
+
+#include <glib-object.h>
+#include <clutter/clutter.h>
+
+G_BEGIN_DECLS
+
+#define CHAMPLAIN_TYPE_GROUP champlain_group_get_type()
+
+#define CHAMPLAIN_GROUP(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+ CHAMPLAIN_TYPE_GROUP, ChamplainGroup))
+
+#define CHAMPLAIN_GROUP_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), \
+ CHAMPLAIN_TYPE_GROUP, ChamplainGroupClass))
+
+#define CHAMPLAIN_IS_GROUP(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+ CHAMPLAIN_TYPE_GROUP))
+
+#define CHAMPLAIN_IS_GROUP_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+ CHAMPLAIN_TYPE_GROUP))
+
+#define CHAMPLAIN_GROUP_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+ CHAMPLAIN_TYPE_GROUP, ChamplainGroupClass))
+
+typedef struct _ChamplainGroup ChamplainGroup;
+typedef struct _ChamplainGroupClass ChamplainGroupClass;
+typedef struct _ChamplainGroupPrivate ChamplainGroupPrivate;
+
+/**
+ * ChamplainGroup:
+ *
+ * The #ChamplainGroup structure contains only private data
+ * and should be accessed using the provided API
+ *
+ * Since: 0.1
+ */
+struct _ChamplainGroup
+{
+ /*< private >*/
+ ClutterActor parent_instance;
+
+ ChamplainGroupPrivate *priv;
+};
+
+/**
+ * ChamplainGroupClass:
+ *
+ * The #ChamplainGroupClass structure contains only private data
+ *
+ * Since: 0.1
+ */
+struct _ChamplainGroupClass
+{
+ /*< private >*/
+ ClutterActorClass parent_class;
+
+ /* padding for future expansion */
+ void (*_clutter_reserved1) (void);
+ void (*_clutter_reserved2) (void);
+ void (*_clutter_reserved3) (void);
+ void (*_clutter_reserved4) (void);
+ void (*_clutter_reserved5) (void);
+ void (*_clutter_reserved6) (void);
+};
+
+GType champlain_group_get_type (void) G_GNUC_CONST;
+ClutterActor *champlain_group_new (void);
+ClutterActor *champlain_group_get_nth_child (ChamplainGroup *self,
+ gint index_);
+gint champlain_group_get_n_children (ChamplainGroup *self);
+void champlain_group_remove_all (ChamplainGroup *group);
+
+/* for Mr. Mallum */
+#define champlain_group_add(group,actor) G_STMT_START { \
+ ClutterActor *_actor = (ClutterActor *) (actor); \
+ if (CHAMPLAIN_IS_GROUP ((group)) && CLUTTER_IS_ACTOR ((_actor))) \
+ { \
+ ClutterContainer *_container = (ClutterContainer *) (group); \
+ clutter_container_add_actor (_container, _actor); \
+ } } G_STMT_END
+
+G_END_DECLS
+
+#endif /* __CHAMPLAIN_GROUP_H__ */
diff --git a/champlain/champlain-marker-layer.c b/champlain/champlain-marker-layer.c
index dd27f50..da05b5a 100644
--- a/champlain/champlain-marker-layer.c
+++ b/champlain/champlain-marker-layer.c
@@ -35,6 +35,7 @@
#include "champlain-enum-types.h"
#include "champlain-private.h"
#include "champlain-view.h"
+#include "champlain-group.h"
#include <clutter/clutter.h>
#include <glib.h>
@@ -81,7 +82,7 @@ struct _ChamplainMarkerLayerPrivate
gdouble stroke_width;
gboolean visible;
- ClutterGroup *content_group;
+ ChamplainGroup *content_group;
GList *markers;
};
@@ -417,11 +418,11 @@ champlain_marker_layer_init (ChamplainMarkerLayer *self)
priv->fill_color = clutter_color_copy (&DEFAULT_FILL_COLOR);
priv->stroke_color = clutter_color_copy (&DEFAULT_STROKE_COLOR);
- priv->content_group = CLUTTER_GROUP (clutter_group_new ());
+ priv->content_group = CHAMPLAIN_GROUP (champlain_group_new ());
clutter_actor_set_parent (CLUTTER_ACTOR (priv->content_group), CLUTTER_ACTOR (self));
//TODO destroy + ref()
- priv->path_actor = clutter_group_new ();
+ priv->path_actor = champlain_group_new ();
clutter_container_add_actor (CLUTTER_CONTAINER (priv->content_group), priv->path_actor);
}
@@ -652,7 +653,7 @@ add_marker (ChamplainMarkerLayer *layer,
g_signal_connect (G_OBJECT (marker), "drag-motion",
G_CALLBACK (marker_move_by_cb), layer);
-
+
clutter_container_add_actor (CLUTTER_CONTAINER (priv->content_group), CLUTTER_ACTOR (marker));
set_marker_position (layer, marker);
if (append)
@@ -710,11 +711,11 @@ void champlain_marker_layer_remove_all (ChamplainMarkerLayer *layer)
G_CALLBACK (marker_position_notify), layer);
}
- clutter_group_remove_all (CLUTTER_GROUP (priv->content_group));
+ champlain_group_remove_all (CHAMPLAIN_GROUP (priv->content_group));
g_list_free (priv->markers);
priv->markers = NULL;
- priv->path_actor = clutter_group_new ();
+ priv->path_actor = champlain_group_new ();
clutter_container_add_actor (CLUTTER_CONTAINER (priv->content_group), priv->path_actor);
}
@@ -1074,16 +1075,17 @@ redraw_path (ChamplainMarkerLayer *layer)
ChamplainView *view = priv->view;
gdouble x, y;
+
/* layer not yet added to the view */
if (view == NULL)
return;
-
+
clutter_actor_get_size (CLUTTER_ACTOR (view), &width, &height);
if (!priv->visible || width == 0.0 || height == 0.0)
return;
- clutter_group_remove_all (CLUTTER_GROUP (priv->path_actor));
+ champlain_group_remove_all (CHAMPLAIN_GROUP (priv->path_actor));
cairo_texture = clutter_cairo_texture_new (width, height);
clutter_container_add_actor (CLUTTER_CONTAINER (priv->path_actor), cairo_texture);
diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am
index dd4f761..f634375 100644
--- a/docs/reference/Makefile.am
+++ b/docs/reference/Makefile.am
@@ -60,7 +60,7 @@ endif
# Header files to ignore when scanning. Use base file name, no paths
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
IGNORE_HFILES= $(ignored_headers) champlain-debug.h champlain-enum-types.h champlain-private.h \
- champlain.h champlain-marshal.h champlain-defines.h champlain-features.h
+ champlain.h champlain-marshal.h champlain-defines.h champlain-features.h champlain-group.h
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]