summaryrefslogtreecommitdiff
path: root/recipes/moblin
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/moblin')
-rw-r--r--recipes/moblin/hornsey/fix-api.patch2048
-rw-r--r--recipes/moblin/hornsey_git.bb9
2 files changed, 2055 insertions, 2 deletions
diff --git a/recipes/moblin/hornsey/fix-api.patch b/recipes/moblin/hornsey/fix-api.patch
new file mode 100644
index 0000000000..512f138b6d
--- /dev/null
+++ b/recipes/moblin/hornsey/fix-api.patch
@@ -0,0 +1,2048 @@
+From 0139503d38f9df51b4f911712afa9e100501a153 Mon Sep 17 00:00:00 2001
+From: Øyvind Kolås <pippin@linux.intel.com>
+Date: Fri, 05 Jun 2009 12:52:37 +0000
+Subject: Changes to accomodate API changes in clutter master.
+
+---
+diff --git a/data/hrn-item-quick-play.png b/data/hrn-item-quick-play.png
+index 13b57dd..bcd5dcc 100644
+--- a/data/hrn-item-quick-play.png
++++ b/data/hrn-item-quick-play.png
+Binary files differ
+diff --git a/data/hrn-item-zoom.png b/data/hrn-item-zoom.png
+index a5e8568..093bdd2 100644
+--- a/data/hrn-item-zoom.png
++++ b/data/hrn-item-zoom.png
+Binary files differ
+diff --git a/src/hornsey.c b/src/hornsey.c
+index 07ceab5..9d4972c 100644
+--- a/src/hornsey.c
++++ b/src/hornsey.c
+@@ -790,8 +790,8 @@ main (gint argc,
+ {
+ UniqueApp *app;
+ ClutterColor stage_bg = {HRN_STAGE_COLOR};
+- guint stage_width = 0;
+- guint stage_height = 0;
++ gfloat stage_width = 0;
++ gfloat stage_height = 0;
+ gboolean stage_fullscreen = TRUE;
+ gboolean no_disclaimer = TRUE; /* change this to FALSE
+ and the annoying disclaimer
+diff --git a/src/hrn-cluster.c b/src/hrn-cluster.c
+index ef3b89d..48e7230 100644
+--- a/src/hrn-cluster.c
++++ b/src/hrn-cluster.c
+@@ -62,12 +62,12 @@ static void ensure_labels (HrnCluster *cluster,
+ static void
+ hrn_cluster_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ ClutterActorClass *parent_class;
+ parent_class = CLUTTER_ACTOR_CLASS (hrn_cluster_parent_class);
+
+- parent_class->allocate (self, box, origin_changed);
++ parent_class->allocate (self, box, flags);
+
+ if (hrn_switcher_get_state (HRN_SWITCHER (self))>0)
+ {
+@@ -85,17 +85,17 @@ hrn_cluster_allocate (ClutterActor *self,
+ }
+
+ if (CLUTTER_ACTOR(HRN_CLUSTER(self)->priv->frame))
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->priv->frame), origin_changed);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->priv->frame), flags);
+ #if HRN_USE_NORMAL_LABELS
+ if (HRN_CLUSTER(self)->title)
+ {
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->title), origin_changed);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->meta), origin_changed);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->title), flags);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->meta), flags);
+ }
+ if (HRN_CLUSTER(self)->title2)
+ {
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->title2), origin_changed);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->meta2), origin_changed);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->title2), flags);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_CLUSTER(self)->meta2), flags);
+ }
+ #endif
+ }
+@@ -226,6 +226,46 @@ hrn_cluster_pick (ClutterActor *actor,
+ in_pick--;
+ }
+
++static void
++hrn_cluster_map (ClutterActor *self)
++{
++ HrnCluster *cluster = HRN_CLUSTER (self);
++ HrnClusterPrivate *priv = cluster->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_cluster_parent_class)->map (self);
++
++ if (cluster->title)
++ clutter_actor_map (CLUTTER_ACTOR (cluster->title));
++ if (cluster->meta)
++ clutter_actor_map (CLUTTER_ACTOR (cluster->meta));
++ if (cluster->title2)
++ clutter_actor_map (CLUTTER_ACTOR (cluster->title2));
++ if (cluster->meta2)
++ clutter_actor_map (CLUTTER_ACTOR (cluster->meta2));
++ if (priv->frame)
++ clutter_actor_map (priv->frame);
++}
++
++static void
++hrn_cluster_unmap (ClutterActor *self)
++{
++ HrnCluster *cluster = HRN_CLUSTER (self);
++ HrnClusterPrivate *priv = cluster->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_cluster_parent_class)->unmap (self);
++
++ if (cluster->title)
++ clutter_actor_unmap (CLUTTER_ACTOR (cluster->title));
++ if (cluster->meta)
++ clutter_actor_unmap (CLUTTER_ACTOR (cluster->meta));
++ if (cluster->title2)
++ clutter_actor_unmap (CLUTTER_ACTOR (cluster->title2));
++ if (cluster->meta2)
++ clutter_actor_unmap (CLUTTER_ACTOR (cluster->meta2));
++ if (priv->frame)
++ clutter_actor_unmap (priv->frame);
++}
++
+
+ static void
+ hrn_cluster_class_init (HrnClusterClass *klass)
+@@ -238,6 +278,8 @@ hrn_cluster_class_init (HrnClusterClass *klass)
+ actor_class->paint = hrn_cluster_paint;
+ actor_class->pick = hrn_cluster_pick;
+ actor_class->allocate = hrn_cluster_allocate;
++ actor_class->map = hrn_cluster_map;
++ actor_class->unmap = hrn_cluster_unmap;
+
+ g_type_class_add_private (gobject_class, sizeof (HrnClusterPrivate));
+ }
+@@ -528,7 +570,7 @@ static void cluster_set_frame (HrnCluster *cluster,
+ }
+ hrn_texture_frame_set_draw_middle (frame, TRUE); /* this should be set only
+ for the modes that need it */
+- clutter_actor_queue_redraw (frame);
++ clutter_actor_queue_redraw (CLUTTER_ACTOR (frame));
+ }
+
+
+@@ -555,7 +597,7 @@ hrn_cluster_constructor (GType type,
+ if (front_handle == 0)
+ {
+ front_handle = cogl_texture_new_from_file (PKGDATADIR "hrn-stack-front.png",
+- 63, COGL_TEXTURE_NONE,
++ COGL_TEXTURE_NONE,
+ COGL_PIXEL_FORMAT_ANY,
+ NULL);
+ front_material = cogl_material_new ();
+@@ -583,14 +625,14 @@ hrn_cluster_dispose (GObject *object)
+ #if HRN_USE_NORMAL_LABELS
+ HrnCluster *cluster = HRN_CLUSTER (object);
+ if (cluster->title)
+- g_object_unref (cluster->title);
++ clutter_actor_destroy (CLUTTER_ACTOR (cluster->title));
+ if (cluster->meta)
+- g_object_unref (cluster->meta);
++ clutter_actor_destroy (CLUTTER_ACTOR (cluster->meta));
+ cluster->title = cluster->meta = NULL;
+ if (cluster->title2)
+- g_object_unref (cluster->title2);
++ clutter_actor_destroy (CLUTTER_ACTOR (cluster->title2));
+ if (cluster->meta2)
+- g_object_unref (cluster->meta2);
++ clutter_actor_destroy (CLUTTER_ACTOR (cluster->meta2));
+ cluster->title2 = cluster->meta2 = NULL;
+ #endif
+ G_OBJECT_CLASS (hrn_cluster_parent_class)->dispose (object);
+@@ -1000,8 +1042,8 @@ static gboolean cluster_enter (ClutterActor *actor,
+ if (child)
+ {
+ clutter_actor_animate (child, CLUTTER_EASE_IN_OUT_QUINT, 800,
+- "x", (gint)(hoverdata[num][i][0]+0),
+- "y", (gint)(hoverdata[num][i][1]+0),
++ "x", (gdouble)(hoverdata[num][i][0]+0),
++ "y", (gdouble)(hoverdata[num][i][1]+0),
+ "scale-x", hoverdata[num][i][2],
+ "scale-y", hoverdata[num][i][2],
+ "rotation-angle-z", 0.0,
+@@ -1048,8 +1090,8 @@ static gboolean cluster_leave (ClutterActor *actor,
+ child = g_list_nth_data (children, num-1-i);
+
+ clutter_actor_animate (child, CLUTTER_EASE_IN_OUT_QUINT, 800,
+- "x", (gint)clustered_x (i),
+- "y", (gint)clustered_y (i),
++ "x", (gdouble)clustered_x (i),
++ "y", (gdouble)clustered_y (i),
+ "scale-x", clustered_scale (i),
+ "scale-y", clustered_scale (i),
+ "rotation-angle-z", clustered_rotation (i, accum),
+@@ -1311,7 +1353,6 @@ static void cluster_alone_to_grouped_adapt (HrnSwitcher *switcher,
+ if (child)
+ {
+ clutter_actor_set_position (child, LIN(0.0, clustered_x (i)), LIN(0, clustered_y (i)));
+- if(0)clutter_actor_set_depthu (child, CLUTTER_UNITS_FROM_FLOAT (LIN( clustered_depth(i) * 0.1, clustered_depth(i))));
+ clutter_actor_set_scale (child, LIN(1.0, clustered_scale(i)), LIN(1.0, clustered_scale(i)));
+
+ if (i>0)clutter_actor_set_opacity (child, LIN(0.0, 255.0));
+@@ -1422,7 +1463,7 @@ static void cluster_eightlim_to_eight_adapt (HrnSwitcher *switcher,
+ g_list_free (children);
+ }
+
+-static gint xs[MAX_CLUSTER_SIZE];
++static gfloat xs[MAX_CLUSTER_SIZE];
+ static gint ys[MAX_CLUSTER_SIZE];
+
+ static void cluster_eight_to_four_adapt (HrnSwitcher *switcher,
+diff --git a/src/hrn-drag-n-drop.c b/src/hrn-drag-n-drop.c
+index 835f041..861e7d0 100644
+--- a/src/hrn-drag-n-drop.c
++++ b/src/hrn-drag-n-drop.c
+@@ -112,8 +112,8 @@ static gboolean drag_capture (ClutterActor *stage,
+
+ if (rel_x * rel_x + rel_y * rel_y > 16 && !drag->in_drag)
+ {
+- gint x0, y0;
+- guint w, h;
++ gfloat x0, y0;
++ gfloat w, h;
+ drag->in_drag = TRUE;
+
+ drag->ghost = clutter_clone_new (drag->drag_data->actor);
+diff --git a/src/hrn-element.c b/src/hrn-element.c
+index fe4f964..3a7b7da 100644
+--- a/src/hrn-element.c
++++ b/src/hrn-element.c
+@@ -58,7 +58,7 @@ static void sync_size (ClutterActor *actor,
+ gpointer unused,
+ HrnSwitcher *switcher)
+ {
+- guint w,h;
++ gfloat w,h;
+ clutter_actor_get_size (actor, &w, &h);
+
+ if (DIM/(w*1.0) > DIM / (h*1.0))
+@@ -104,7 +104,7 @@ static ClutterActor *element_square (BklItem *item)
+ {
+ if (g_str_equal (orientation, "right - top"))
+ {
+- guint w,h;
++ gfloat w,h;
+ clutter_actor_set_rotation (actor, CLUTTER_Z_AXIS, 90, 0,0,0);
+ clutter_actor_set_anchor_point_from_gravity (actor, CLUTTER_GRAVITY_SOUTH_WEST);
+ ClutterActor *group = clutter_group_new ();
+@@ -183,7 +183,7 @@ static ClutterActor *element_thumb (HrnSwitcher *switcher,
+ {
+ if (g_str_equal (orientation, "right - top"))
+ {
+- guint w,h;
++ gfloat w,h;
+ clutter_actor_set_rotation (actor, CLUTTER_Z_AXIS, 90, 0,0,0);
+ clutter_actor_set_anchor_point_from_gravity (actor, CLUTTER_GRAVITY_SOUTH_WEST);
+ ClutterActor *group = clutter_group_new ();
+@@ -243,7 +243,7 @@ static ClutterActor *element_original (HrnSwitcher *switcher,
+ g_print ("%s %s %s\n", uri, path, path);
+ if (path)
+ {
+- guint w,h;
++ gfloat w,h;
+ actor = hrn_texture_load (path);
+ clutter_actor_get_size (actor, &w, &h);
+
+diff --git a/src/hrn-image-player.c b/src/hrn-image-player.c
+index d46f941..1f1253a 100644
+--- a/src/hrn-image-player.c
++++ b/src/hrn-image-player.c
+@@ -68,17 +68,17 @@ hrn_image_player_get_property (GObject *object,
+ static void
+ hrn_image_player_allocate (ClutterActor *actor,
+ const ClutterActorBox *box,
+- gboolean origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ HrnImagePlayer *player = (HrnImagePlayer *) actor;
+ HrnImagePlayerPrivate *priv = player->priv;
+
+ CLUTTER_ACTOR_CLASS (hrn_image_player_parent_class)->allocate
+- (actor, box, origin_changed);
++ (actor, box, flags);
+
+ if (priv->image_player) {
+ clutter_actor_allocate_preferred_size (priv->image_player,
+- origin_changed);
++ flags);
+ }
+ }
+
+@@ -101,6 +101,29 @@ hrn_image_player_pick (ClutterActor *actor,
+ }
+
+ static void
++hrn_image_player_map (ClutterActor *self)
++{
++ HrnImagePlayerPrivate *priv = HRN_IMAGE_PLAYER (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_image_player_parent_class)->map (self);
++
++ if (priv->image_player)
++ clutter_actor_map (CLUTTER_ACTOR (priv->image_player));
++}
++
++static void
++hrn_image_player_unmap (ClutterActor *self)
++{
++ HrnImagePlayerPrivate *priv = HRN_IMAGE_PLAYER (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_image_player_parent_class)->unmap (self);
++
++ if (priv->image_player)
++ clutter_actor_unmap (CLUTTER_ACTOR (priv->image_player));
++}
++
++
++static void
+ hrn_image_player_class_init (HrnImagePlayerClass *klass)
+ {
+ GObjectClass *o_class = (GObjectClass *) klass;
+@@ -114,6 +137,8 @@ hrn_image_player_class_init (HrnImagePlayerClass *klass)
+ a_class->allocate = hrn_image_player_allocate;
+ a_class->paint = hrn_image_player_paint;
+ a_class->pick = hrn_image_player_pick;
++ a_class->map = hrn_image_player_map;
++ a_class->unmap = hrn_image_player_unmap;
+
+ g_type_class_add_private (klass, sizeof (HrnImagePlayerPrivate));
+ }
+@@ -161,7 +186,7 @@ player_set_uri (HrnIfacePlayer *player,
+ BklItem *item;
+ const char *orient;
+ char *filename;
+- guint w, h, sw, sh;
++ gfloat w, h, sw, sh;
+ double xs, ys, scale;
+ int x, y;
+
+diff --git a/src/hrn-item-image.c b/src/hrn-item-image.c
+index 2cf15e7..2b36973 100644
+--- a/src/hrn-item-image.c
++++ b/src/hrn-item-image.c
+@@ -120,6 +120,10 @@ HrnItemImage *hrn_item_image_create (BklItem *item,
+ hrn_switcher_add_state_full (self, NULL, -1, 0.25,
+ item_image_alone, item,
+ NULL, NULL);
++
++#if 1
++
++
+ #if HRN_ITEM_USE_FRAME
+
+ hrn_switcher_add_state_full (self, NULL, -1, 0.55, hrn_item_element_framed, item,
+@@ -140,5 +144,7 @@ HrnItemImage *hrn_item_image_create (BklItem *item,
+ item_image_alone, item,
+ NULL, NULL);
+
++#endif
++
+ return HRN_ITEM_IMAGE (self);
+ }
+diff --git a/src/hrn-item.c b/src/hrn-item.c
+index 255bb80..275b35a 100644
+--- a/src/hrn-item.c
++++ b/src/hrn-item.c
+@@ -104,12 +104,12 @@ hrn_item_dispose (GObject *object);
+ static void
+ hrn_item_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ ClutterActorClass *parent_class;
+ parent_class = CLUTTER_ACTOR_CLASS (hrn_item_parent_class);
+
+- parent_class->allocate (self, box, origin_changed);
++ parent_class->allocate (self, box, flags);
+
+
+
+@@ -133,14 +133,14 @@ hrn_item_allocate (ClutterActor *self,
+
+ if (HRN_ITEM(self)->title)
+ {
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_ITEM(self)->title), origin_changed);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_ITEM(self)->meta), origin_changed);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_ITEM(self)->title), flags);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_ITEM(self)->meta), flags);
+ }
+
+ if (HRN_ITEM(self)->title2)
+ {
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_ITEM(self)->title2), origin_changed);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_ITEM(self)->meta2), origin_changed);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_ITEM(self)->title2), flags);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR(HRN_ITEM(self)->meta2), flags);
+ }
+
+
+@@ -163,6 +163,7 @@ static void
+ hrn_item_paint (ClutterActor *actor)
+ {
+ ClutterActorClass *parent_class;
++ HrnItem *item = HRN_ITEM (actor);
+
+ parent_class = CLUTTER_ACTOR_CLASS (hrn_item_parent_class);
+
+@@ -182,19 +183,27 @@ hrn_item_paint (ClutterActor *actor)
+
+ if (hrn_switcher_get_state (HRN_SWITCHER (actor))>0)
+ {
++ if (!hrn_item_get_view (actor))
++ return;
+ switch (hrn_view_labels_visible (hrn_item_get_view (actor)))
+ {
+ case ZOOM_ITEMS_8:
+- clutter_actor_paint (CLUTTER_ACTOR (HRN_ITEM (actor)->title));
+- clutter_actor_paint (CLUTTER_ACTOR (HRN_ITEM (actor)->meta));
++ if (item->title)
++ clutter_actor_paint (CLUTTER_ACTOR (item->title));
++ if (item->meta)
++ clutter_actor_paint (CLUTTER_ACTOR (item->meta));
+ break;
+ case ZOOM_ITEMS_4:
+- clutter_actor_paint (CLUTTER_ACTOR (HRN_ITEM (actor)->title2));
+- clutter_actor_paint (CLUTTER_ACTOR (HRN_ITEM (actor)->meta2));
++ if (item->title2)
++ clutter_actor_paint (CLUTTER_ACTOR (item->title2));
++ if (item->meta2)
++ clutter_actor_paint (CLUTTER_ACTOR (item->meta2));
+ break;
+ case ZOOM_ITEMS_3:
+- clutter_actor_paint (CLUTTER_ACTOR (HRN_ITEM (actor)->title2));
+- clutter_actor_paint (CLUTTER_ACTOR (HRN_ITEM (actor)->meta2));
++ if (item->title2)
++ clutter_actor_paint (CLUTTER_ACTOR (item->title2));
++ if (item->meta2)
++ clutter_actor_paint (CLUTTER_ACTOR (item->meta2));
+ }
+ }
+ }
+@@ -216,6 +225,41 @@ static void hrn_item_get_property (GObject *gobject,
+ GValue *value,
+ GParamSpec *pspec);
+
++static void
++hrn_item_map (ClutterActor *self)
++{
++ HrnItem *item = HRN_ITEM (self);
++
++ CLUTTER_ACTOR_CLASS (hrn_item_parent_class)->map (self);
++
++ if (item->title)
++ clutter_actor_map (CLUTTER_ACTOR (item->title));
++ if (item->meta)
++ clutter_actor_map (CLUTTER_ACTOR (item->meta));
++ if (item->title2)
++ clutter_actor_map (CLUTTER_ACTOR (item->title2));
++ if (item->meta2)
++ clutter_actor_map (CLUTTER_ACTOR (item->meta2));
++}
++
++static void
++hrn_item_unmap (ClutterActor *self)
++{
++ HrnItem *item = HRN_ITEM (self);
++
++ CLUTTER_ACTOR_CLASS (hrn_item_parent_class)->unmap (self);
++
++ if (item->title)
++ clutter_actor_unmap (CLUTTER_ACTOR (item->title));
++ if (item->meta)
++ clutter_actor_unmap (CLUTTER_ACTOR (item->meta));
++ if (item->title2)
++ clutter_actor_unmap (CLUTTER_ACTOR (item->title2));
++ if (item->meta2)
++ clutter_actor_unmap (CLUTTER_ACTOR (item->meta2));
++}
++
++
+
+ static void
+ hrn_item_class_init (HrnItemClass *klass)
+@@ -228,6 +272,8 @@ hrn_item_class_init (HrnItemClass *klass)
+ gobject_class->constructor = hrn_item_constructor;
+ actor_class->paint = hrn_item_paint;
+ actor_class->pick = hrn_item_pick;
++ actor_class->map = hrn_item_map;
++ actor_class->unmap = hrn_item_unmap;
+ actor_class->allocate = hrn_item_allocate;
+ gobject_class->set_property = hrn_item_set_property;
+ gobject_class->get_property = hrn_item_get_property;
+@@ -386,15 +432,14 @@ hrn_item_dispose (GObject *object)
+ {
+ HrnItem *item = HRN_ITEM (object);
+ if (item->title)
+- g_object_unref (item->title);
++ clutter_actor_destroy (CLUTTER_ACTOR (item->title));
+ if (item->meta)
+- g_object_unref (item->meta);
+- item->title = item->meta = NULL;
++ clutter_actor_destroy (CLUTTER_ACTOR (item->meta));
+ if (item->title2)
+- g_object_unref (item->title2);
++ clutter_actor_destroy (CLUTTER_ACTOR (item->title2));
+ if (item->meta2)
+- g_object_unref (item->meta2);
+- item->title2 = item->meta2 = NULL;
++ clutter_actor_destroy (CLUTTER_ACTOR (item->meta2));
++ item->title = item->meta = item->title2 = item->meta2 = NULL;
+ }
+ #endif
+ G_OBJECT_CLASS (hrn_item_parent_class)->dispose (object);
+@@ -1020,7 +1065,7 @@ ClutterActor *hrn_item_element_framed (HrnSwitcher *switcher,
+ ClutterActor *group = clutter_group_new ();
+ ClutterActor *item_image;
+
+- gint x;
++ gfloat x;
+ gint y;
+
+
+@@ -1028,8 +1073,8 @@ ClutterActor *hrn_item_element_framed (HrnSwitcher *switcher,
+ priv->frame = clutter_rectangle_new ();
+ #else
+ priv->frame = hrn_texture_frame_new (frame_tex(), 35,35,35,35);
+- hrn_texture_frame_set_draw_middle (priv->frame, TRUE);
+- hrn_texture_frame_set_can_pinch (priv->frame, TRUE);
++ hrn_texture_frame_set_draw_middle (HRN_TEXTURE_FRAME (priv->frame), TRUE);
++ hrn_texture_frame_set_can_pinch (HRN_TEXTURE_FRAME (priv->frame), TRUE);
+ #endif
+
+ switch (state_no) /* squareness will depend on these states ... */
+diff --git a/src/hrn-item.h b/src/hrn-item.h
+index 2767630..5a73b3d 100644
+--- a/src/hrn-item.h
++++ b/src/hrn-item.h
+@@ -89,12 +89,6 @@ hrn_item_drop (ClutterActor *actor,
+
+ GType hrn_item_get_type (void) G_GNUC_CONST;
+
+-/* this is a factory method that creates a hrn item of the correct class */
+-HrnItem *hrn_item_create (BklItem *item);
+-
+-
+-
+-
+
+
+
+diff --git a/src/hrn-popup.c b/src/hrn-popup.c
+index 6e00d4e..9c1bd81 100644
+--- a/src/hrn-popup.c
++++ b/src/hrn-popup.c
+@@ -89,7 +89,7 @@ void hrn_popup_actor (gint x,
+ gint y,
+ ClutterActor *actor)
+ {
+- guint w2,h2;
++ gfloat w2,h2;
+ gint w,h;
+ ClutterActor *stage = clutter_stage_get_default ();
+
+@@ -172,7 +172,7 @@ void hrn_popup_actor_fixed (gint x,
+ gint y,
+ ClutterActor *actor)
+ {
+- guint w2,h2;
++ gfloat w2,h2;
+ gint w,h;
+ ClutterActor *stage = clutter_stage_get_default ();
+
+@@ -196,13 +196,13 @@ ClutterActor *hrn_popup_actions (gpointer *actions,
+ gint i;
+ gint max_width = 0;
+ ClutterActor *group = CLUTTER_ACTOR (g_object_new (NBTK_TYPE_GRID,
+- "width", 0,
++ "width", 0.0,
+ NULL));
+ nbtk_widget_set_style_class_name (NBTK_WIDGET (group), "HrnPopup");
+
+ for (i=0; actions[i]; i+=2)
+ {
+- guint w,h;
++ gfloat w,h;
+ ClutterActor *label;
+
+ label = CLUTTER_ACTOR (nbtk_button_new_with_label (gettext (actions[i])));
+@@ -240,13 +240,13 @@ ClutterActor *hrn_popup_actions_bolded (gpointer *actions,
+ gint i;
+ gint max_width = 0;
+ ClutterActor *group = CLUTTER_ACTOR (g_object_new (NBTK_TYPE_GRID,
+- "width", 0,
++ "width", 0.0,
+ NULL));
+ nbtk_widget_set_style_class_name (NBTK_WIDGET (group), "HrnPopup");
+
+ for (i=0; actions[i]; i+=2)
+ {
+- guint w,h;
++ gfloat w,h;
+ ClutterActor *label;
+
+ label = CLUTTER_ACTOR (nbtk_button_new_with_label (gettext (actions[i])));
+diff --git a/src/hrn-queue.c b/src/hrn-queue.c
+index 818b413..1d9c019 100644
+--- a/src/hrn-queue.c
++++ b/src/hrn-queue.c
+@@ -99,7 +99,7 @@ hrn_queue_dispose (GObject *object);
+ static void
+ hrn_queue_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed);
++ ClutterAllocationFlags flags);
+ static void hrn_queue_reposition (HrnQueue *queue);
+ static void
+ hrn_queue_paint (ClutterActor *actor);
+@@ -112,6 +112,28 @@ static void
+ hrn_queue_style_changed (NbtkWidget *widget);
+
+ static void
++hrn_queue_map (ClutterActor *self)
++{
++ HrnQueuePrivate *priv = HRN_QUEUE (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_queue_parent_class)->map (self);
++
++ if (priv->toptable)
++ clutter_actor_map (CLUTTER_ACTOR (priv->toptable));
++}
++
++static void
++hrn_queue_unmap (ClutterActor *self)
++{
++ HrnQueuePrivate *priv = HRN_QUEUE (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_queue_parent_class)->unmap (self);
++
++ if (priv->toptable)
++ clutter_actor_unmap (CLUTTER_ACTOR (priv->toptable));
++}
++
++static void
+ hrn_queue_class_init (HrnQueueClass *klass)
+ {
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+@@ -124,6 +146,8 @@ hrn_queue_class_init (HrnQueueClass *klass)
+ actor_class->allocate = hrn_queue_allocate;
+ actor_class->paint = hrn_queue_paint;
+ actor_class->pick = hrn_queue_pick;
++ actor_class->map = hrn_queue_map;
++ actor_class->unmap = hrn_queue_unmap;
+ widget_class->style_changed = hrn_queue_style_changed;
+
+ g_type_class_add_private (gobject_class, sizeof (HrnQueuePrivate));
+@@ -133,8 +157,8 @@ hrn_queue_class_init (HrnQueueClass *klass)
+ static void
+ hrn_queue_init (HrnQueue *self)
+ {
+- HrnQueuePrivate *priv = HRN_QUEUE_GET_PRIVATE (self);
+- memset (priv, 0, sizeof (priv));
++ self->priv = HRN_QUEUE_GET_PRIVATE (self);
++ memset (self->priv, 0, sizeof (self->priv));
+ }
+
+ static gboolean completed (ClutterAnimation *anim,
+@@ -151,14 +175,14 @@ static gboolean expanded_clicked_cb (NbtkButton *button,
+ if (nbtk_button_get_checked (button))
+ {
+ clutter_actor_animate (queue, CLUTTER_EASE_IN_OUT_CUBIC, 350,
+- "y", -300,
++ "y", -300.0,
+ NULL);
+ clutter_actor_show (CLUTTER_ACTOR (priv->scrollview));
+ }
+ else
+ {
+ clutter_actor_animate (queue, CLUTTER_EASE_IN_OUT_CUBIC, 350,
+- "y", 0,
++ "y", 0.0,
+ "signal::completed", completed, priv->scrollview,
+ NULL);
+ }
+@@ -617,15 +641,15 @@ NbtkAdjustment *hrn_queue_get_audio_adjustment (HrnQueue *queue)
+ static void
+ hrn_queue_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ HrnQueuePrivate *priv = HRN_QUEUE_GET_PRIVATE (self);
+ ClutterActorClass *parent_class;
+
+ parent_class = CLUTTER_ACTOR_CLASS (hrn_queue_parent_class);
+
+- parent_class->allocate (self, box, origin_changed);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->toptable), origin_changed);
++ parent_class->allocate (self, box, flags);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->toptable), flags);
+ }
+
+ static void
+@@ -652,8 +676,8 @@ hrn_queue_pick (ClutterActor *actor,
+ const ClutterColor *color)
+ {
+ HrnQueuePrivate *priv = HRN_QUEUE_GET_PRIVATE (actor);
+- guint width;
+- guint height;
++ gfloat width;
++ gfloat height;
+ clutter_actor_get_size (CLUTTER_ACTOR (priv->toptable), &width, &height);
+
+ #if CLUTTER_MINOR_VERSION < 9
+@@ -897,17 +921,15 @@ hrn_item_can_drop (ClutterActor *actor,
+ priv = HRN_QUEUE_GET_PRIVATE (queue);
+
+ {
+- ClutterUnit xu, yu;
++ gfloat xu, yu;
+ gdouble foo;
+ NbtkScrollBar *scrollbar = NBTK_SCROLL_BAR (nbtk_scroll_view_get_vscroll_bar (NBTK_SCROLL_VIEW (priv->scrollview)));
+ foo = nbtk_adjustment_get_value (nbtk_scroll_bar_get_adjustment (scrollbar));
+
+- xu = CLUTTER_UNITS_FROM_INT (x);
+- yu = CLUTTER_UNITS_FROM_INT (y);
+ clutter_actor_transform_stage_point (CLUTTER_ACTOR (queue),
+- xu, yu, &xu, &yu);
++ x, y, &xu, &yu);
+
+- no=((CLUTTER_UNITS_TO_INT(yu) + (gint)foo)-ROW_OFFSET)/ROW_HEIGHT - 1;
++ no=((floor(yu) + (gint)foo)-ROW_OFFSET)/ROW_HEIGHT - 1;
+
+ if (no==-1)
+ return TRUE;
+@@ -952,17 +974,15 @@ hrn_item_drop (ClutterActor *actor,
+ priv = HRN_QUEUE_GET_PRIVATE (queue);
+
+ {
+- ClutterUnit xu, yu;
++ gfloat xu, yu;
+ gdouble foo;
+ NbtkScrollBar *scrollbar = NBTK_SCROLL_BAR (nbtk_scroll_view_get_vscroll_bar (NBTK_SCROLL_VIEW (priv->scrollview)));
+ foo = nbtk_adjustment_get_value (nbtk_scroll_bar_get_adjustment (scrollbar));
+
+- xu = CLUTTER_UNITS_FROM_INT (x);
+- yu = CLUTTER_UNITS_FROM_INT (y);
+ clutter_actor_transform_stage_point (CLUTTER_ACTOR (queue),
+- xu, yu, &xu, &yu);
++ x, y, &xu, &yu);
+
+- no=((CLUTTER_UNITS_TO_INT(yu) + (gint)foo)-ROW_OFFSET)/ROW_HEIGHT-1;
++ no=((floor(yu) + (gint)foo)-ROW_OFFSET)/ROW_HEIGHT-1;
+ if (yu < QUEUE_TIP_HEIGHT)
+ no = -1;
+ }
+@@ -1010,17 +1030,15 @@ gboolean hrn_cluster_dropped (ClutterActor *actor,
+ priv = HRN_QUEUE_GET_PRIVATE (queue);
+
+ {
+- ClutterUnit xu, yu;
++ gfloat xu, yu;
+ gdouble foo;
+ NbtkScrollBar *scrollbar = NBTK_SCROLL_BAR (nbtk_scroll_view_get_vscroll_bar (NBTK_SCROLL_VIEW (priv->scrollview)));
+ foo = nbtk_adjustment_get_value (nbtk_scroll_bar_get_adjustment (scrollbar));
+
+- xu = CLUTTER_UNITS_FROM_INT (x);
+- yu = CLUTTER_UNITS_FROM_INT (y);
+ clutter_actor_transform_stage_point (CLUTTER_ACTOR (queue),
+ xu, yu, &xu, &yu);
+
+- no=((CLUTTER_UNITS_TO_INT(yu) + (gint)foo)-ROW_OFFSET)/ROW_HEIGHT-1;
++ no=((floor (yu) + (gint)foo)-ROW_OFFSET)/ROW_HEIGHT-1;
+ if (yu < QUEUE_TIP_HEIGHT)
+ no = -1;
+ }
+@@ -1067,15 +1085,13 @@ static gboolean from_queue_drop (ClutterActor *actor,
+ }
+
+ {
+- ClutterUnit xu, yu;
++ gfloat xu, yu;
+ gdouble foo;
+ NbtkScrollBar *scrollbar = NBTK_SCROLL_BAR (nbtk_scroll_view_get_vscroll_bar (NBTK_SCROLL_VIEW (priv->scrollview)));
+ foo = nbtk_adjustment_get_value (nbtk_scroll_bar_get_adjustment (scrollbar));
+
+- xu = CLUTTER_UNITS_FROM_INT (x);
+- yu = CLUTTER_UNITS_FROM_INT (y);
+ clutter_actor_transform_stage_point (CLUTTER_ACTOR (queue_item->queue),
+- xu, yu, &xu, &yu);
++ x, y, &xu, &yu);
+
+ no=0;
+ {
+@@ -1096,7 +1112,7 @@ static gboolean from_queue_drop (ClutterActor *actor,
+ g_object_ref (item);
+ hrn_queue_remove (queue_item->queue, no);
+
+- no=((CLUTTER_UNITS_TO_INT(yu) + (gint)foo)-ROW_OFFSET)/ROW_HEIGHT-1;
++ no=((floor(yu) + (gint)foo)-ROW_OFFSET)/ROW_HEIGHT-1;
+ if (yu < QUEUE_TIP_HEIGHT)
+ no = -1;
+
+@@ -1126,9 +1142,10 @@ static void hrn_queue_reposition (HrnQueue *queue)
+ QueueItem *item = iter->data;
+ if (CLUTTER_ACTOR_IS_VISIBLE (item->actor))
+ {
+- gint x = 7;
+- gint y = no * ROW_HEIGHT + ROW_OFFSET;
+-
++ gfloat x = 7;
++ gfloat y = no * ROW_HEIGHT + ROW_OFFSET;
++#if 0
++#endif
+ if (clutter_actor_get_x(item->actor)==0&&
+ clutter_actor_get_y(item->actor)==0)
+
+@@ -1163,7 +1180,7 @@ static void add_item (HrnQueue *queue, QueueItem *queue_item)
+ gchar *meta = hrn_item_get_meta (item);
+ NbtkWidget *text = nbtk_label_new (title);
+ NbtkWidget *meta_text = nbtk_label_new (meta);
+- guint w,h;
++ gfloat w,h;
+ gdouble scale;
+
+ nbtk_widget_set_style_class_name (text, "HrnQueueItemLabel");
+diff --git a/src/hrn-searchbar.c b/src/hrn-searchbar.c
+index fe2c60c..63ba06b 100644
+--- a/src/hrn-searchbar.c
++++ b/src/hrn-searchbar.c
+@@ -47,7 +47,7 @@ hrn_search_bar_dispose (GObject *object);
+ static void
+ hrn_searchbar_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed);
++ ClutterAllocationFlags flags);
+ static void
+ hrn_searchbar_paint (ClutterActor *actor);
+ static void
+@@ -55,7 +55,32 @@ hrn_searchbar_pick (ClutterActor *actor,
+ const ClutterColor *color);
+
+
++static void
++hrn_searchbar_map (ClutterActor *self)
++{
++ HrnSearchBarPrivate *priv = HRN_SEARCH_BAR (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_search_bar_parent_class)->map (self);
++
++ if (priv->pin_button)
++ clutter_actor_map (priv->pin_button);
++ if (priv->clear_button)
++ clutter_actor_map (priv->clear_button);
++}
++
+
++static void
++hrn_searchbar_unmap (ClutterActor *self)
++{
++ HrnSearchBarPrivate *priv = HRN_SEARCH_BAR (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_search_bar_parent_class)->unmap (self);
++
++ if (priv->pin_button)
++ clutter_actor_unmap (priv->pin_button);
++ if (priv->clear_button)
++ clutter_actor_unmap (priv->clear_button);
++}
+
+ static void
+ hrn_search_bar_style_changed (NbtkWidget *widget)
+@@ -78,6 +103,8 @@ hrn_search_bar_class_init (HrnSearchBarClass *klass)
+ gobject_class->constructor = hrn_search_bar_constructor;
+ actor_class->paint = hrn_searchbar_paint;
+ actor_class->pick = hrn_searchbar_pick;
++ actor_class->map = hrn_searchbar_map;
++ actor_class->unmap = hrn_searchbar_unmap;
+ actor_class->allocate = hrn_searchbar_allocate;
+ widget_class->style_changed = hrn_search_bar_style_changed;
+
+@@ -350,19 +377,19 @@ hrn_search_bar_dispose (GObject *object)
+ static void
+ hrn_searchbar_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ HrnSearchBarPrivate *priv = HRN_SEARCH_BAR_GET_PRIVATE (self);
+
+- CLUTTER_ACTOR_CLASS (hrn_search_bar_parent_class)->allocate (self, box, origin_changed);
++ CLUTTER_ACTOR_CLASS (hrn_search_bar_parent_class)->allocate (self, box, flags);
+
+ clutter_actor_set_x (CLUTTER_ACTOR (priv->pin_button),
+ clutter_actor_get_width (self));
+ clutter_actor_set_x (CLUTTER_ACTOR (priv->clear_button),
+ clutter_actor_get_x (priv->pin_button)-
+ 20);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->pin_button), origin_changed);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->clear_button), origin_changed);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->pin_button), flags);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->clear_button), flags);
+ }
+
+ static void
+diff --git a/src/hrn-sidebar-subitem.c b/src/hrn-sidebar-subitem.c
+index 50e1554..3760baf 100644
+--- a/src/hrn-sidebar-subitem.c
++++ b/src/hrn-sidebar-subitem.c
+@@ -222,9 +222,9 @@ static void rename_cb (gpointer button)
+ ClutterColor shade_color = {0x0,0x0,0x0,0xff};
+ ClutterStage *stage = CLUTTER_STAGE (clutter_stage_get_default ());
+ ClutterActor *text;
+- guint sw, sh;
+- gint x, y;
+- guint w, h;
++ gfloat sw, sh;
++ gfloat x, y;
++ gfloat w, h;
+ gint i;
+
+ data = g_new0 (struct _rename_data, 1);
+diff --git a/src/hrn-sidebar.c b/src/hrn-sidebar.c
+index 8533d22..77fb1e5 100644
+--- a/src/hrn-sidebar.c
++++ b/src/hrn-sidebar.c
+@@ -58,13 +58,38 @@ hrn_sidebar_dispose (GObject *object);
+ static void
+ hrn_sidebar_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed);
++ ClutterAllocationFlags flags);
+ static void
+ hrn_sidebar_paint (ClutterActor *actor);
+ static void
+ hrn_sidebar_pick (ClutterActor *actor,
+ const ClutterColor *color);
+-
++
++static void
++hrn_sidebar_map (ClutterActor *self)
++{
++ HrnSidebarPrivate *priv = HRN_SIDEBAR (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_sidebar_parent_class)->map (self);
++
++ if (priv->scroll)
++ clutter_actor_map (CLUTTER_ACTOR (priv->scroll));
++ if (priv->expanded)
++ clutter_actor_map (CLUTTER_ACTOR (priv->expanded));
++}
++
++static void
++hrn_sidebar_unmap (ClutterActor *self)
++{
++ HrnSidebarPrivate *priv = HRN_SIDEBAR (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_sidebar_parent_class)->unmap (self);
++
++ if (priv->scroll)
++ clutter_actor_unmap (CLUTTER_ACTOR (priv->scroll));
++ if (priv->expanded)
++ clutter_actor_unmap (CLUTTER_ACTOR (priv->expanded));
++}
+
+
+ static void
+@@ -79,6 +104,8 @@ hrn_sidebar_class_init (HrnSidebarClass *klass)
+ actor_class->allocate = hrn_sidebar_allocate;
+ actor_class->paint = hrn_sidebar_paint;
+ actor_class->pick = hrn_sidebar_pick;
++ actor_class->map = hrn_sidebar_map;
++ actor_class->unmap = hrn_sidebar_unmap;
+
+ g_type_class_add_private (gobject_class, sizeof (HrnSidebarPrivate));
+
+@@ -209,7 +236,7 @@ void hrn_retrieve_query (const gchar *qname)
+
+ hrn_view_set_source (HRN_VIEW (hrn_view), source);
+
+- tb = hrn_toolbar_group_get_view_toolbar (hrn_toolbar);
++ tb = hrn_toolbar_group_get_view_toolbar (HRN_TOOLBAR_GROUP (hrn_toolbar));
+ hrn_toolbar_set_mode (tb, filter);
+ hrn_view_set_filter (HRN_VIEW (hrn_view), filter);
+
+@@ -323,7 +350,7 @@ static void add_source (HrnSidebar *sidebar,
+ HrnSource *source,
+ gboolean is_local)
+ {
+- HrnSidebarPrivate *priv = HRN_SIDEBAR_GET_PRIVATE (sidebar);
++ HrnSidebarPrivate *priv = sidebar->priv;
+
+ NbtkWidget *button;
+
+@@ -335,6 +362,8 @@ static void add_source (HrnSidebar *sidebar,
+ button = nbtk_button_new_with_label (name);
+ }
+
++ g_print ("%p %p %i\n", sidebar, source, is_local);
++
+ nbtk_widget_set_style_class_name (button, "HrnSidebarItem");
+ clutter_actor_set_reactive (CLUTTER_ACTOR (button), TRUE);
+
+@@ -456,9 +485,10 @@ static void add_source (HrnSidebar *sidebar,
+ void hrn_sidebar_update_sources (HrnSidebar *sidebar)
+ {
+ GList *sources, *s;
+- HrnSidebarPrivate *priv = HRN_SIDEBAR_GET_PRIVATE (sidebar);
++ HrnSidebarPrivate *priv = sidebar->priv;
+ HrnSource *source;
+
++
+ {
+ GList *c, *children = clutter_container_get_children (CLUTTER_CONTAINER (priv->flow));
+
+@@ -506,7 +536,12 @@ hrn_sidebar_constructor (GType type,
+ nbtk_widget_set_style_class_name (NBTK_WIDGET (sidebar), "HrnSidebar");
+ clutter_actor_set_name (CLUTTER_ACTOR (sidebar), "HrnSidebar");
+
++#if 1
+ clutter_actor_set_parent (CLUTTER_ACTOR (priv->scroll), CLUTTER_ACTOR (sidebar));
++#else
++ clutter_container_add_actor (CLUTTER_CONTAINER (object), priv->scroll);
++#endif
++
+ clutter_container_add_actor (CLUTTER_CONTAINER (priv->scroll), CLUTTER_ACTOR (priv->flow));
+ g_object_set_data (object, "HRN_DROP_MASK", GINT_TO_POINTER(HRN_DROP_MASK_SIDEBAR));
+ g_object_set_data (G_OBJECT(priv->flow), "HRN_DROP_MASK", GINT_TO_POINTER(HRN_DROP_MASK_SIDEBAR));
+@@ -529,7 +564,7 @@ hrn_sidebar_constructor (GType type,
+
+ /* hack to sync up size */
+ {
+- guint width = SIDEBAR_WIDTH_PADDED;
++ gfloat width = SIDEBAR_WIDTH_PADDED;
+ guint height = clutter_actor_get_height (clutter_stage_get_default())-61;
+
+ clutter_actor_set_size (CLUTTER_ACTOR (priv->flow), width - 40, height);
+@@ -546,17 +581,17 @@ hrn_sidebar_constructor (GType type,
+
+ static void
+ hrn_sidebar_allocate (ClutterActor *self,
+- const ClutterActorBox *box,
+- gboolean origin_changed)
++ const ClutterActorBox *box,
++ ClutterAllocationFlags flags)
+ {
+ HrnSidebarPrivate *priv = HRN_SIDEBAR_GET_PRIVATE (self);
+ ClutterActorClass *parent_class;
+
+ parent_class = CLUTTER_ACTOR_CLASS (hrn_sidebar_parent_class);
+
+- parent_class->allocate (self, box, origin_changed);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->scroll), origin_changed);
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->expanded), origin_changed);
++ parent_class->allocate (self, box, flags);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->scroll), flags);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->expanded), flags);
+ }
+
+ static void
+@@ -583,21 +618,17 @@ static void
+ hrn_sidebar_pick (ClutterActor *actor,
+ const ClutterColor *color)
+ {
+- guint width;
+- guint height;
++ gfloat width;
++ gfloat height;
++ HrnSidebarPrivate *priv = HRN_SIDEBAR_GET_PRIVATE (actor);
+ clutter_actor_get_size (CLUTTER_ACTOR (actor), &width, &height);
+
+-#if CLUTTER_MINOR_VERSION < 9
+- cogl_color (color);
+-#else
+- cogl_set_source_color4ub (color->red,
+- color->green,
+- color->blue,
+- color->alpha);
+-#endif
++ cogl_set_source_color ((void*)color);
+ cogl_rectangle (0, 0, width, height);
+
+- hrn_sidebar_paint (actor);
++ clutter_actor_paint (CLUTTER_ACTOR (priv->scroll));
++ clutter_actor_paint (CLUTTER_ACTOR (priv->expanded));
++ /*hrn_sidebar_paint (actor);*/
+ }
+
+ HrnSidebar *hrn_sidebar_new (void)
+@@ -618,13 +649,13 @@ gboolean sidebar_hide_handler (gpointer foo)
+ nbtk_button_set_checked (NBTK_BUTTON (priv->expanded), FALSE);
+
+ clutter_actor_animate (hrn_sidebar, CLUTTER_EASE_IN_CUBIC, SIDEBAR_OUT_DURATION,
+- "x", -180,
++ "x", -180.0,
+ "opacity", 255,
+ NULL);
+
+ clutter_actor_animate (hrn_content_area, CLUTTER_EASE_IN_CUBIC, SIDEBAR_OUT_DURATION,
+- "depth", 0,
+- "x", 0,
++ "depth", 0.0,
++ "x", 0.0,
+ NULL);
+
+ sidebar_hide_handler_id = 0;
+@@ -645,7 +676,7 @@ void hrn_sidebar_wake (void)
+ }
+
+ clutter_actor_animate (hrn_sidebar, CLUTTER_EASE_IN_OUT_QUINT, SIDEBAR_IN_DURATION,
+- "x", 0,
++ "x", 0.0,
+ NULL);
+
+ if (hrn_theatre_get_active (HRN_THEATRE (hrn_theatre)))
+@@ -658,8 +689,8 @@ void hrn_sidebar_wake (void)
+ else
+ {
+ clutter_actor_animate (hrn_content_area, CLUTTER_EASE_IN_OUT_QUINT, SIDEBAR_IN_DURATION,
+- "depth", -200,
+- "x", 110,
++ "depth", -200.0,
++ "x", 110.0,
+ NULL);
+ }
+
+@@ -681,8 +712,9 @@ void hrn_sidebar_unpin (void)
+
+ void hrn_sidebar_hide (void)
+ {
+- if (sidebar_hide_handler_id == 0)
+- sidebar_hide_handler_id = g_idle_add (sidebar_hide_handler, NULL);
++ if (sidebar_hide_handler_id != 0)
++ g_source_remove (sidebar_hide_handler_id);
++ sidebar_hide_handler (NULL);
+ }
+
+
+diff --git a/src/hrn-square-clone.c b/src/hrn-square-clone.c
+index c2d388e..760b3f3 100644
+--- a/src/hrn-square-clone.c
++++ b/src/hrn-square-clone.c
+@@ -52,9 +52,9 @@ struct _HrnSquareClonePrivate
+
+ static void
+ hrn_square_clone_get_preferred_width (ClutterActor *self,
+- ClutterUnit for_height,
+- ClutterUnit *min_width_p,
+- ClutterUnit *natural_width_p)
++ gfloat for_height,
++ gfloat *min_width_p,
++ gfloat *natural_width_p)
+ {
+ HrnSquareClonePrivate *priv = HRN_SQUARE_CLONE (self)->priv;
+
+@@ -85,9 +85,9 @@ hrn_square_clone_get_preferred_width (ClutterActor *self,
+
+ static void
+ hrn_square_clone_get_preferred_height (ClutterActor *self,
+- ClutterUnit for_width,
+- ClutterUnit *min_height_p,
+- ClutterUnit *natural_height_p)
++ gfloat for_width,
++ gfloat *min_height_p,
++ gfloat *natural_height_p)
+ {
+ HrnSquareClonePrivate *priv = HRN_SQUARE_CLONE (self)->priv;
+
+@@ -186,8 +186,8 @@ hrn_square_clone_paint (ClutterActor *self)
+ bw = cogl_texture_get_width (tex); /* base texture width */
+ bh = cogl_texture_get_height (tex); /* base texture height */
+
+- aw = CLUTTER_UNITS_TO_INT (box.x2 - box.x1); /* allocation width */
+- ah = CLUTTER_UNITS_TO_INT (box.y2 - box.y1); /* allocation height */
++ aw = (box.x2 - box.x1); /* allocation width */
++ ah = (box.y2 - box.y1); /* allocation height */
+
+ /* no comment */
+ if ((float)bw/bh < (float)aw/ah)
+diff --git a/src/hrn-switcher.c b/src/hrn-switcher.c
+index 215d79b..b43f79b 100644
+--- a/src/hrn-switcher.c
++++ b/src/hrn-switcher.c
+@@ -105,8 +105,78 @@ hrn_switcher_pick (ClutterActor *actor,
+ static void
+ hrn_switcher_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed);
++ ClutterAllocationFlags flags);
+
++static void
++hrn_switcher_map (ClutterActor *self)
++{
++ HrnSwitcher *switcher = HRN_SWITCHER (self);
++ HrnSwitcherPrivate *priv = HRN_SWITCHER_GET_PRIVATE (switcher);
++ gint i;
++
++ CLUTTER_ACTOR_CLASS (hrn_switcher_parent_class)->map (self);
++
++ for (i = 0; i < priv->state_count; i++)
++ {
++ if (priv->states[i].actor)
++ {
++ clutter_actor_map (priv->states[i].actor);
++ }
++ }
++}
++
++static void
++hrn_switcher_unmap (ClutterActor *self)
++{
++ HrnSwitcher *switcher = HRN_SWITCHER (self);
++ HrnSwitcherPrivate *priv = HRN_SWITCHER_GET_PRIVATE (switcher);
++ gint i;
++
++ CLUTTER_ACTOR_CLASS (hrn_switcher_parent_class)->unmap (self);
++
++ for (i = 0; i < priv->state_count; i++)
++ {
++ if (priv->states[i].actor)
++ {
++ clutter_actor_unmap (priv->states[i].actor);
++ }
++ }
++}
++
++static void
++hrn_switcher_realize (ClutterActor *self)
++{
++ HrnSwitcher *switcher = HRN_SWITCHER (self);
++ HrnSwitcherPrivate *priv = HRN_SWITCHER_GET_PRIVATE (switcher);
++ gint i;
++
++ for (i = 0; i < priv->state_count; i++)
++ {
++ if (priv->states[i].actor)
++ {
++ clutter_actor_realize (priv->states[i].actor);
++ }
++ }
++ /*CLUTTER_ACTOR_CLASS (hrn_switcher_parent_class)->realize (self);*/
++}
++
++static void
++hrn_switcher_unrealize (ClutterActor *self)
++{
++ HrnSwitcher *switcher = HRN_SWITCHER (self);
++ HrnSwitcherPrivate *priv = HRN_SWITCHER_GET_PRIVATE (switcher);
++ gint i;
++
++
++ for (i = 0; i < priv->state_count; i++)
++ {
++ if (priv->states[i].actor)
++ {
++ clutter_actor_unrealize (priv->states[i].actor);
++ }
++ }
++ CLUTTER_ACTOR_CLASS (hrn_switcher_parent_class)->unrealize (self);
++}
+
+ static void
+ hrn_switcher_class_init (HrnSwitcherClass *klass)
+@@ -118,6 +188,10 @@ hrn_switcher_class_init (HrnSwitcherClass *klass)
+ gobject_class->constructor = hrn_switcher_constructor;
+ actor_class->paint = hrn_switcher_paint;
+ actor_class->pick = hrn_switcher_pick;
++ actor_class->map = hrn_switcher_map;
++ actor_class->unmap = hrn_switcher_unmap;
++ actor_class->realize = hrn_switcher_realize;
++ actor_class->unrealize = hrn_switcher_unrealize;
+ actor_class->allocate = hrn_switcher_allocate;
+
+ g_type_class_add_private (gobject_class, sizeof (HrnSwitcherPrivate));
+@@ -166,19 +240,19 @@ hrn_switcher_constructor (GType type,
+ static void
+ hrn_switcher_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ HrnSwitcherPrivate *priv = HRN_SWITCHER_GET_PRIVATE (self);
+ ClutterActorClass *parent_class;
+
+ parent_class = CLUTTER_ACTOR_CLASS (hrn_switcher_parent_class);
+
+- parent_class->allocate (self, box, origin_changed);
++ parent_class->allocate (self, box, flags);
+
+ hrn_switcher_adapt (HRN_SWITCHER (self));
+
+ if (priv->states[priv->state].actor)
+- clutter_actor_allocate_preferred_size (priv->states[priv->state].actor, origin_changed);
++ clutter_actor_allocate_preferred_size (priv->states[priv->state].actor, flags);
+ }
+
+ void
+@@ -368,8 +442,8 @@ hrn_switcher_add_state (HrnSwitcher *self,
+
+ void
+ hrn_actor_get_geom (ClutterActor *actor,
+- gint *ox, gint *oy,
+- guint *owidth, guint *oheight,
++ gfloat *ox, gfloat *oy,
++ gfloat *owidth, gfloat *oheight,
+ gdouble *oscalex, gdouble *oscaley)
+ {
+ gfloat x, y;
+@@ -392,7 +466,7 @@ hrn_actor_get_geom (ClutterActor *actor,
+ parent = clutter_actor_get_parent (actor);
+ while (parent)
+ {
+- gint ax, ay;
++ gfloat ax, ay;
+ clutter_actor_get_anchor_point (parent, &ax, &ay);
+ clutter_actor_get_scale (parent, &scalex, &scaley);
+ x -= ax;
+@@ -412,7 +486,7 @@ hrn_actor_get_geom (ClutterActor *actor,
+ they are more expensive than the above as well
+ */
+ {
+- guint w,h;
++ gfloat w,h;
+ gint nx, ny;
+ clutter_actor_get_transformed_size (actor, &w, &h);
+ clutter_actor_get_transformed_position (actor, &nx, &ny);
+@@ -435,15 +509,15 @@ static gboolean
+ hrn_actor_is_off_stage (HrnSwitcher *switcher,
+ ClutterActor *actor)
+ {
+- gint x, y;
+- guint width, height;
++ gfloat x, y;
++ gfloat width, height;
+ gdouble scalex, scaley;
+ HrnSwitcherPrivate *priv = HRN_SWITCHER_GET_PRIVATE (switcher);
+
+ /*gint sw = CLUTTER_STAGE_WIDTH ();*/
+ gint sh = CLUTTER_STAGE_HEIGHT ();
+
+- hrn_actor_get_geom (actor, &x, &y, &width,&height,&scalex, &scaley);
++ hrn_actor_get_geom (actor, &x, &y, &width, &height, &scalex, &scaley);
+
+ if (
+ (gint)(y + height) < -sh * (HRN_OFF_STAGE_FUDGE) ||
+diff --git a/src/hrn-texture-cache.c b/src/hrn-texture-cache.c
+index d52101c..1f5995a 100755
+--- a/src/hrn-texture-cache.c
++++ b/src/hrn-texture-cache.c
+@@ -222,6 +222,11 @@ hrn_texture_cache_get_texture (HrnTextureCache *self,
+ ClutterActor *clone;
+ HrnCacheEntry *entry;
+
++ /* XXX: originally planned to use clones here, but it seems the square
++ * texture works well on its own when it is not forced to be square
++ */
++ return hrn_texture_cache_get_sq_texture (self, path_or_uri, load_async);
++
+ if (!path_or_uri)
+ return NULL;
+ file = g_file_new_for_commandline_arg (path_or_uri);
+@@ -278,7 +283,7 @@ hrn_texture_cache_get_texture (HrnTextureCache *self,
+ g_hash_table_insert (priv->cache, g_strdup (path), entry);
+
+ {
+- guint w,h;
++ gfloat w,h;
+ clutter_actor_get_size (original, &w, &h);
+ priv->sum_size += w*h * 4;
+ }
+@@ -329,7 +334,7 @@ hrn_texture_cache_get_texture (HrnTextureCache *self,
+ /*g_assert (G_OBJECT(nuke_entry->original)->ref_count == 1); not valid with anim */
+ clutter_actor_destroy (nuke_entry->original);
+ {
+- guint w,h;
++ gfloat w,h;
+ clutter_actor_get_size (nuke_entry->original, &w, &h);
+ priv->sum_size -= w*h * 4;
+ }
+@@ -414,7 +419,7 @@ hrn_texture_cache_get_sq_texture (HrnTextureCache *self,
+ g_hash_table_insert (priv->cache, g_strdup (path), entry);
+
+ {
+- guint w,h;
++ gfloat w,h;
+ clutter_actor_get_size (original, &w, &h);
+ priv->sum_size += w*h * 4;
+ }
+diff --git a/src/hrn-theatre.c b/src/hrn-theatre.c
+index 9fda276..51013be 100644
+--- a/src/hrn-theatre.c
++++ b/src/hrn-theatre.c
+@@ -75,17 +75,17 @@ hrn_theatre_get_property (GObject *object,
+ static void
+ hrn_theatre_allocate (ClutterActor *actor,
+ const ClutterActorBox *box,
+- gboolean origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ HrnTheatre *theatre = (HrnTheatre *) actor;
+ HrnTheatrePrivate *priv = theatre->priv;
+
+ CLUTTER_ACTOR_CLASS (hrn_theatre_parent_class)->allocate (actor, box,
+- origin_changed);
++ flags);
+
+ if (priv->player) {
+ clutter_actor_allocate_preferred_size (priv->player,
+- origin_changed);
++ flags);
+ }
+ }
+
+@@ -304,7 +304,6 @@ br_player_show_uri (BrIfacePlayer *player,
+ HrnTheatre *theatre = (HrnTheatre *) player;
+ HrnTheatrePrivate *priv = theatre->priv;
+ gboolean new_player = FALSE;
+- int no;
+
+ if (uri == NULL || mimetype == NULL) {
+ return TRUE;
+@@ -425,7 +424,7 @@ hrn_theatre_show (HrnTheatre *theatre)
+ NULL);
+ clutter_actor_animate (hrn_scrollbar, CLUTTER_EASE_IN_OUT_CUBIC,
+ HRN_TO_THEATRE_DURATION,
+- "x", 30,
++ "x", 30.0,
+ NULL);
+
+ hrn_controls_can_has_fade = TRUE;
+@@ -433,8 +432,8 @@ hrn_theatre_show (HrnTheatre *theatre)
+
+ clutter_actor_animate (hrn_content_area, CLUTTER_EASE_IN_OUT_CUBIC,
+ SIDEBAR_OUT_DURATION,
+- "depth", 0,
+- "x", 0,
++ "depth", 0.0,
++ "x", 0.0,
+ NULL);
+
+ clutter_actor_animate (hrn_sidebar, CLUTTER_EASE_IN_OUT_CUBIC,
+@@ -491,7 +490,7 @@ hrn_theatre_hide (HrnTheatre *theatre)
+
+ clutter_actor_animate (hrn_scrollbar, CLUTTER_EASE_IN_OUT_CUBIC,
+ HRN_FROM_THEATRE_DURATION,
+- "x", 0,
++ "x", 0.0,
+ NULL);
+ clutter_actor_animate (hrn_controls_frame, CLUTTER_LINEAR,
+ HRN_FROM_THEATRE_DURATION,
+@@ -508,8 +507,8 @@ hrn_theatre_hide (HrnTheatre *theatre)
+ if (hrn_sidebar_visible ()) {
+ clutter_actor_animate (hrn_content_area, CLUTTER_EASE_IN_OUT_QUINT,
+ SIDEBAR_IN_DURATION,
+- "depth", -200,
+- "x", 110,
++ "depth", -200.0,
++ "x", 110.0,
+ NULL);
+ }
+
+diff --git a/src/hrn-toolbar-group.c b/src/hrn-toolbar-group.c
+index 35204de..ac2a796 100644
+--- a/src/hrn-toolbar-group.c
++++ b/src/hrn-toolbar-group.c
+@@ -97,7 +97,7 @@ hrn_toolbar_group_set_mode (HrnToolbarGroup *group,
+ NULL);
+
+ /* When switching to view mode, focus the toolbar */
+- hrn_toolbar_focused (priv->view_toolbar);
++ hrn_toolbar_focused (CLUTTER_ACTOR (priv->view_toolbar));
+ break;
+
+ case HRN_TOOLBAR_GROUP_MODE_THEATRE:
+diff --git a/src/hrn-toolbar.c b/src/hrn-toolbar.c
+index a90460e..f135b13 100644
+--- a/src/hrn-toolbar.c
++++ b/src/hrn-toolbar.c
+@@ -114,9 +114,36 @@ hrn_toolbar_set_query (HrnToolbar *toolbar,
+ }
+
+ static void
++hrn_toolbar_map (ClutterActor *self)
++{
++ HrnToolbarPrivate *priv = HRN_TOOLBAR (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_toolbar_parent_class)->map (self);
++
++ if (priv->zoom_bar_label)
++ clutter_actor_map (CLUTTER_ACTOR (priv->zoom_bar_label));
++}
++
++static void
++hrn_toolbar_unmap (ClutterActor *self)
++{
++ HrnToolbarPrivate *priv = HRN_TOOLBAR (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_toolbar_parent_class)->unmap (self);
++
++ if (priv->zoom_bar_label)
++ clutter_actor_unmap (CLUTTER_ACTOR (priv->zoom_bar_label));
++}
++
++
++static void
+ hrn_toolbar_class_init (HrnToolbarClass *klass)
+ {
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
++ ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
++
++ actor_class->map = hrn_toolbar_map;
++ actor_class->unmap = hrn_toolbar_unmap;
+
+ g_type_class_add_private (klass, sizeof (HrnToolbarPrivate));
+
+@@ -279,7 +306,7 @@ static gboolean sort_button_release (ClutterActor *actor,
+ {
+ if (event->button.button == 1)
+ {
+- gint x, y;
++ gfloat x, y;
+ const gchar *sortfunc;
+ gint selected;
+ clutter_actor_get_transformed_position (actor, &x, &y);
+@@ -315,7 +342,7 @@ static gboolean showbutton_release (ClutterActor *actor,
+ {
+ if (event->button.button == 1)
+ {
+- gint x, y;
++ gfloat x, y;
+ gint selected;
+ clutter_actor_get_transformed_position (actor, &x, &y);
+ x-=14; /* XXX: hardcoded offset to handle padding */
+@@ -421,7 +448,8 @@ hrn_toolbar_init (HrnToolbar *self)
+ "nbtk-zoom-bar");
+ clutter_actor_set_name (CLUTTER_ACTOR (priv->zoom_bar_label),
+ "hrn-zoom-bar-label");
+- clutter_actor_set_parent (priv->zoom_bar_label, CLUTTER_ACTOR (self));
++ clutter_actor_set_parent (CLUTTER_ACTOR (priv->zoom_bar_label),
++ CLUTTER_ACTOR (self));
+
+ g_signal_connect (priv->settings_button, "clicked",
+ G_CALLBACK (hrn_toolbar_settings_clicked_cb), self);
+diff --git a/src/hrn-video-player.c b/src/hrn-video-player.c
+index a1fe597..7c90169 100644
+--- a/src/hrn-video-player.c
++++ b/src/hrn-video-player.c
+@@ -70,17 +70,17 @@ hrn_video_player_get_property (GObject *object,
+ static void
+ hrn_video_player_allocate (ClutterActor *actor,
+ const ClutterActorBox *box,
+- gboolean origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ HrnVideoPlayer *player = (HrnVideoPlayer *) actor;
+ HrnVideoPlayerPrivate *priv = player->priv;
+
+ CLUTTER_ACTOR_CLASS (hrn_video_player_parent_class)->allocate
+- (actor, box, origin_changed);
++ (actor, box, flags);
+
+ if (priv->video_player) {
+ clutter_actor_allocate_preferred_size (priv->video_player,
+- origin_changed);
++ flags);
+ }
+ }
+
+@@ -102,6 +102,30 @@ hrn_video_player_pick (ClutterActor *actor,
+ hrn_video_player_paint (actor);
+ }
+
++
++static void
++hrn_video_player_map (ClutterActor *self)
++{
++ HrnVideoPlayerPrivate *priv = HRN_VIDEO_PLAYER (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_video_player_parent_class)->map (self);
++
++ if (priv->video_player)
++ clutter_actor_map (CLUTTER_ACTOR (priv->video_player));
++}
++
++static void
++hrn_video_player_unmap (ClutterActor *self)
++{
++ HrnVideoPlayerPrivate *priv = HRN_VIDEO_PLAYER (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_video_player_parent_class)->unmap (self);
++
++ if (priv->video_player)
++ clutter_actor_unmap (CLUTTER_ACTOR (priv->video_player));
++}
++
++
+ static void
+ hrn_video_player_class_init (HrnVideoPlayerClass *klass)
+ {
+@@ -116,6 +140,8 @@ hrn_video_player_class_init (HrnVideoPlayerClass *klass)
+ a_class->allocate = hrn_video_player_allocate;
+ a_class->paint = hrn_video_player_paint;
+ a_class->pick = hrn_video_player_pick;
++ a_class->map = hrn_video_player_map;
++ a_class->unmap = hrn_video_player_unmap;
+
+ g_type_class_add_private (klass, sizeof (HrnVideoPlayerPrivate));
+ }
+diff --git a/src/hrn-view.c b/src/hrn-view.c
+index 87ce82f..52b2bc8 100644
+--- a/src/hrn-view.c
++++ b/src/hrn-view.c
+@@ -29,6 +29,8 @@
+ #include "hrn-switcher.h"
+
+
++static void hrn_view_pause (void);
++static void hrn_view_go (void);
+ static void
+ hrn_view_refilter (HrnView *view);
+ typedef struct _HrnViewActorData HrnViewActorData;
+@@ -78,19 +80,19 @@ static void hrn_view_pick (ClutterActor *actor,
+
+ static void
+ hrn_view_get_preferred_width (ClutterActor *self,
+- ClutterUnit for_height,
+- ClutterUnit *min_width_p,
+- ClutterUnit *natural_width_p);
++ gfloat for_height,
++ gfloat *min_width_p,
++ gfloat *natural_width_p);
+
+ static void
+ hrn_view_get_preferred_height (ClutterActor *self,
+- ClutterUnit for_width,
+- ClutterUnit *min_height_p,
+- ClutterUnit *natural_height_p);
++ gfloat for_width,
++ gfloat *min_height_p,
++ gfloat *natural_height_p);
+
+ static void hrn_view_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean absolute_origin_changed);
++ ClutterAllocationFlags flags);
+ void source_item_added (HrnSource *source,
+ BklItem *item,
+ gpointer userdata);
+@@ -113,9 +115,9 @@ G_DEFINE_TYPE_WITH_CODE (HrnView, hrn_view,
+
+ struct _HrnViewPrivate
+ {
+- ClutterUnit for_height, for_width;
+- ClutterUnit pref_width, pref_height;
+- ClutterUnit alloc_width, alloc_height;
++ gfloat for_height, for_width;
++ gfloat pref_width, pref_height;
++ gfloat alloc_width, alloc_height;
+ ClutterActor *group;
+
+
+@@ -131,14 +133,14 @@ struct _HrnViewPrivate
+
+ gdouble height;
+
+- gboolean absolute_origin_changed;
++ ClutterAllocationFlags flags;
+ GHashTable *hash_table;
+ GList *list;
+
+ gint labels_visible;
+
+ gboolean first_of_batch;
+- ClutterUnit a_current_sum, a_wrap;
++ gfloat a_current_sum, a_wrap;
+
+ HrnSource *current_source;
+ guint32 item_added_id;
+@@ -176,9 +178,38 @@ struct _HrnViewActorData
+ gint cells; /* the number of cells needed for item when
+ * expanded.
+ */
+- gint xmod; /* the position of the first item */
++ gfloat xmod; /* the position of the first item */
+ };
+
++
++static void
++hrn_view_map (ClutterActor *self)
++{
++ HrnViewPrivate *priv = HRN_VIEW (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_view_parent_class)->map (self);
++
++ if (priv->group)
++ clutter_actor_map (CLUTTER_ACTOR (priv->group));
++ if (priv->lasso)
++ clutter_actor_map (CLUTTER_ACTOR (priv->lasso));
++}
++
++static void
++hrn_view_unmap (ClutterActor *self)
++{
++ HrnViewPrivate *priv = HRN_VIEW (self)->priv;
++
++ CLUTTER_ACTOR_CLASS (hrn_view_parent_class)->unmap (self);
++
++ if (priv->group)
++ clutter_actor_unmap (CLUTTER_ACTOR (priv->group));
++ if (priv->lasso)
++ clutter_actor_map (CLUTTER_ACTOR (priv->lasso));
++}
++
++
++
+ static void
+ hrn_view_class_init (HrnViewClass *klass)
+ {
+@@ -193,6 +224,8 @@ hrn_view_class_init (HrnViewClass *klass)
+
+ actor_class->paint = hrn_view_paint;
+ actor_class->pick = hrn_view_pick;
++ actor_class->map = hrn_view_map;
++ actor_class->unmap = hrn_view_unmap;
+ actor_class->get_preferred_width = hrn_view_get_preferred_width;
+ actor_class->get_preferred_height = hrn_view_get_preferred_height;
+ actor_class->allocate = hrn_view_allocate;
+@@ -432,21 +465,12 @@ GList *hrn_view_get_selected (HrnView *view)
+ return g_hash_table_get_values (priv->selected);
+ }
+
+-static void destroy_when_done (ClutterAnimation *anim,
+- HrnViewPrivate *priv)
+-{
+- if (priv->lasso)
+- clutter_actor_destroy (priv->lasso);
+- priv->lasso = NULL;
+-}
+-
+-
+ static guint select_capture = 0;
+ static gboolean view_capture (ClutterActor *actor,
+ ClutterEvent *event,
+ gpointer view)
+ {
+- ClutterUnit x, y;
++ gfloat x, y;
+ HrnViewPrivate *priv = HRN_VIEW (view)->priv;
+ switch (clutter_event_type (event))
+ {
+@@ -457,7 +481,7 @@ static gboolean view_capture (ClutterActor *actor,
+ #if 1
+ clutter_actor_animate (priv->lasso, CLUTTER_LINEAR, 250,
+ "opacity", 0,
+- "signal::completed", destroy_when_done, priv,
++ /* "signal::completed", destroy_when_done, priv,*/
+ NULL);
+ #endif
+
+@@ -592,7 +616,7 @@ static gboolean view_pressed (ClutterActor *actor,
+ ClutterEvent *event,
+ gpointer data)
+ {
+- ClutterUnit x, y;
++ gfloat x, y;
+ HrnViewPrivate *priv = HRN_VIEW (actor)->priv;
+ ClutterModifierType state = event->button.modifier_state;
+ g_print ("pressed view\n");
+@@ -656,7 +680,7 @@ hrn_view_new (void)
+ g_signal_connect (self, "scroll-event", G_CALLBACK (handle_scroll), NULL);
+
+ {
+- guint w,h;
++ gfloat w,h;
+ clutter_actor_get_size (self, &w, &h);
+ }
+
+@@ -807,15 +831,15 @@ hrn_view_pick (ClutterActor *actor,
+
+ static void
+ hrn_view_get_preferred_width (ClutterActor *self,
+- ClutterUnit for_height,
+- ClutterUnit *min_width_p,
+- ClutterUnit *natural_width_p)
++ gfloat for_height,
++ gfloat *min_width_p,
++ gfloat *natural_width_p)
+ {
+ HrnView *layout = (HrnView *) self;
+ HrnViewPrivate *priv = layout->priv;
+- ClutterUnit natural_width;
++ gfloat natural_width;
+
+- natural_width = CLUTTER_UNITS_FROM_INT (1024 * 2);
++ natural_width = 1024 * 2;
+ if (min_width_p)
+ *min_width_p = natural_width;
+ if (natural_width_p)
+@@ -826,17 +850,15 @@ hrn_view_get_preferred_width (ClutterActor *self,
+
+ static void
+ hrn_view_get_preferred_height (ClutterActor *self,
+- ClutterUnit for_width,
+- ClutterUnit *min_height_p,
+- ClutterUnit *natural_height_p)
++ gfloat for_width,
++ gfloat *min_height_p,
++ gfloat *natural_height_p)
+ {
+ HrnView *layout = (HrnView *) self;
+ HrnViewPrivate *priv = layout->priv;
+- ClutterUnit natural_height;
++ gfloat natural_height;
+
+- natural_height = CLUTTER_UNITS_FROM_INT (600 * 2); /* XXX: making sure
+- it is large enough
+- for netbooks first */
++ natural_height = 600 * 2;
+
+ priv->for_width = for_width;
+ priv->pref_height = natural_height;
+@@ -1067,7 +1089,7 @@ hrn_view_center (ClutterActor *self,
+ static void
+ hrn_view_allocate (ClutterActor *self,
+ const ClutterActorBox *box,
+- gboolean absolute_origin_changed)
++ ClutterAllocationFlags flags)
+ {
+ HrnView *layout = (HrnView *) self;
+ HrnViewPrivate *priv = layout->priv;
+@@ -1078,22 +1100,22 @@ hrn_view_allocate (ClutterActor *self,
+
+ /* chain up to set actor->allocation */
+ CLUTTER_ACTOR_CLASS (hrn_view_parent_class)
+- ->allocate (self, box, absolute_origin_changed);
++ ->allocate (self, box, flags);
+
+ gdouble scale;
+ clutter_actor_get_scale (self, &scale, NULL);
+ scale = hrn_actor_get_abs_scale (self);
+ priv->alloc_width = box->x2 - box->x1;
+ priv->alloc_height = box->y2 - box->y1;
+- priv->absolute_origin_changed = absolute_origin_changed;
++ priv->flags = flags;
+
+ clutter_actor_get_preferred_size (self, NULL, NULL, NULL, NULL);
+ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->group),
+- absolute_origin_changed);
++ flags);
+
+ if (priv->lasso)
+ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (priv->lasso),
+- absolute_origin_changed);
++ flags);
+
+
+ priv->a_wrap = priv->alloc_width;
+@@ -1101,7 +1123,7 @@ hrn_view_allocate (ClutterActor *self,
+ for (i=0,iter = priv->list; iter; i++,iter=iter->next)
+ {
+ ClutterActor *child = iter->data;
+- clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (child), absolute_origin_changed);
++ clutter_actor_allocate_preferred_size (CLUTTER_ACTOR (child), flags);
+ }
+ }
+
+@@ -1270,10 +1292,10 @@ hrn_view_reposition (HrnView *self)
+
+ for (i=0,iter = priv->list; iter; i++,iter=iter->next)
+ {
+- ClutterActor *child = iter->data;
+- ClutterActorBox child_box;
+- ClutterUnit natural_a;
+- ClutterUnit natural_b;
++ ClutterActor *child = iter->data;
++ ClutterActorBox child_box;
++ gfloat natural_a;
++ gfloat natural_b;
+ HrnViewActorData *data;
+
+
+@@ -1301,10 +1323,10 @@ hrn_view_reposition (HrnView *self)
+ else if (y > BUG_THRESHOLD )
+ y = BUG_THRESHOLD ;
+ #endif
+- child_box.y1 = CLUTTER_UNITS_FROM_FLOAT (y);
++ child_box.y1 = y;
+ }
+- child_box.x1 = CLUTTER_UNITS_FROM_FLOAT (hrn_view_compute_x (data->num, data->accum_pos, scale));
+- clutter_actor_set_positionu (child, child_box.x1, child_box.y1);
++ child_box.x1 = hrn_view_compute_x (data->num, data->accum_pos, scale);
++ clutter_actor_set_position (child, child_box.x1, child_box.y1);
+
+ /* clamp the vertical position to avoid overflow (both on
+ * stage as well as in clutter functions
+@@ -1783,7 +1805,7 @@ hrn_view_set_source (HrnView *view,
+ static void
+ hrn_view_refilter (HrnView *view)
+ {
+- HrnViewPrivate *priv = HRN_VIEW_GET_PRIVATE (view);
++ HrnViewPrivate *priv = view->priv;
+ GList *children, *iter;
+
+ g_print ("[");
+@@ -1967,12 +1989,16 @@ extern gint desired_pos;
+
+ void hrn_set_zoom (gdouble zoom)
+ {
+- HrnViewPrivate *priv = hrn_view->priv;
++ HrnViewPrivate *priv = HRN_VIEW (hrn_view)->priv;
+ /* (hrn_target_zoom contains the old value in these checks) */
+
+ if (priv->zoom_lock) {
+ return;
+ }
++ if (zoom != hrn_target_zoom || zoom != scale)
++ {
++
++ }
+
+ priv->zoom_lock = TRUE;
+
+@@ -2056,6 +2082,7 @@ gdouble hrn_view_get_loc (void)
+ void hrn_view_set_loc (gdouble loc)
+ {
+ HrnViewPrivate *priv = HRN_VIEW_GET_PRIVATE (hrn_view);
++
+
+ priv->target_center_pos = priv->height * loc;
+
+@@ -2074,6 +2101,7 @@ gint hrn_view_center_pos (void)
+
+ void hrn_view_set_pos (gint pos)
+ {
++
+ hrn_target_loc = pos;
+ hrn_view_center (hrn_view, pos);
+ hrn_view_reposition (HRN_VIEW (hrn_view));
+@@ -2143,9 +2179,13 @@ static gboolean transition_iterate (ClutterTimeline *timeline,
+ else
+ scale = hrn_target_zoom;
+ }
++
+ }
+ else if (hrn_target_zoom != scale)
+- scale = hrn_target_zoom;
++ {
++ scale = hrn_target_zoom;
++
++ }
+ else
+ break;
+ }
+@@ -2154,10 +2194,11 @@ static gboolean transition_iterate (ClutterTimeline *timeline,
+ {
+ if (fabs (priv->target_center_pos - priv->center_pos) > 1)
+ {
+- #define RATE 0.02
++ #define RATE 0.012
+
+ priv->center_pos = priv->target_center_pos * (RATE) +
+ priv->center_pos * (1.0-RATE);
++
+ }
+ else if (priv->target_center_pos != priv->center_pos)
+ priv->center_pos = priv->target_center_pos;
+@@ -2450,7 +2509,7 @@ hrn_text_paint (gint x, gint y, const gchar *text)
+ if(0)clutter_actor_set_position (actor, x, y);
+ {
+ ClutterActorBox box;
+- ClutterUnit natural_x, natural_y;
++ gfloat natural_x, natural_y;
+ clutter_actor_get_preferred_size (actor,
+ NULL, NULL,
+ &natural_x, &natural_y);
+diff --git a/src/hrn-view.h b/src/hrn-view.h
+index 6cdf29e..f90fe52 100644
+--- a/src/hrn-view.h
++++ b/src/hrn-view.h
+@@ -57,10 +57,10 @@ struct _HrnView
+ ClutterActor parent;
+
+ HrnViewPrivate *priv;
+- gint bkl_item_type_mask;
+- gchar *search;
++ gint bkl_item_type_mask;
++ gchar *search;
+
+- gboolean dirty_frames;
++ gboolean dirty_frames;
+ };
+
+ GType hrn_view_get_type (void) G_GNUC_CONST;
+diff --git a/src/hrn.h b/src/hrn.h
+index 4d69b0b..08ab297 100644
+--- a/src/hrn.h
++++ b/src/hrn.h
+@@ -117,11 +117,11 @@ extern gint DIM;
+ #define HRN_FRAME_USE_RECTANGLE 0
+ #define HRN_STAGE_COLOR 0xff,0xff,0xff,0xff
+ /*#define HRN_STAGE_COLOR 0x00,0x00,0x00,0xff*/
+-#define HRN_VIEW_FPS 30
++#define HRN_VIEW_FPS 60
+
+ #define HRN_CACHE_MAX_SIZE (1024*1024*128) /* 128mb texture memory */
+
+-#define HRN_ZOOM_RATE 1.0011/* 1.0015 seems good the rate of zooming */
++#define HRN_ZOOM_RATE 1.0009/* 1.0015 seems good the rate of zooming */
+ #define HRN_OFF_STAGE_FUDGE 0.1 /* how many stage sizes to include above
+ 00 and below the stage to be considered
+ "on-stage" (this will act as a
+@@ -225,8 +225,8 @@ ClutterActor *hrn_texture_load (const gchar *path);
+
+ void
+ hrn_actor_get_geom (ClutterActor *actor,
+- gint *ox, gint *oy,
+- guint *owidth, guint *oheight, gdouble *oscalex, gdouble *oscaley);
++ gfloat *ox, gfloat *oy,
++ gfloat *owidth, gfloat *oheight, gdouble *oscalex, gdouble *oscaley);
+
+ void hrn_sidebar_hide (void);
+
+diff --git a/src/nbtk-texture-frame.c b/src/nbtk-texture-frame.c
+index 9cec8cf..2557ec5 100644
+--- a/src/nbtk-texture-frame.c
++++ b/src/nbtk-texture-frame.c
+@@ -68,9 +68,9 @@ struct _HrnTextureFramePrivate
+
+ static void
+ hrn_texture_frame_get_preferred_width (ClutterActor *self,
+- ClutterUnit for_height,
+- ClutterUnit *min_width_p,
+- ClutterUnit *natural_width_p)
++ gfloat for_height,
++ gfloat *min_width_p,
++ gfloat *natural_width_p)
+ {
+ HrnTextureFramePrivate *priv = HRN_TEXTURE_FRAME (self)->priv;
+
+@@ -101,9 +101,9 @@ hrn_texture_frame_get_preferred_width (ClutterActor *self,
+
+ static void
+ hrn_texture_frame_get_preferred_height (ClutterActor *self,
+- ClutterUnit for_width,
+- ClutterUnit *min_height_p,
+- ClutterUnit *natural_height_p)
++ gfloat for_width,
++ gfloat *min_height_p,
++ gfloat *natural_height_p)
+ {
+ HrnTextureFramePrivate *priv = HRN_TEXTURE_FRAME (self)->priv;
+
+--
+cgit v0.8.2
diff --git a/recipes/moblin/hornsey_git.bb b/recipes/moblin/hornsey_git.bb
index 1ea1df502c..716c18d1a6 100644
--- a/recipes/moblin/hornsey_git.bb
+++ b/recipes/moblin/hornsey_git.bb
@@ -1,14 +1,19 @@
DESCRIPTION = "The Moblin mediaplayer"
LICENSE = "LGPLv2.1"
-SRCREV = "92e1ebf8f5fdb8f4abcc190213c20b653aac411a"
+SRCREV = "125a1dea08d552ed2510ee762e1b54ca161915c1"
PV = "0.0"
+PR = "r1"
PR_append = "+git${SRCREV}"
DEPENDS = "clutter clutter-gst-0.9 bickley nbtk bognor-regis libunique startup-notification gtk+"
-SRC_URI = "git://git.moblin.org/${PN}.git;protocol=git"
+SRC_URI = "git://git.moblin.org/${PN}.git;protocol=git \
+ file://fix-api.patch;patch=1 \
+"
S = "${WORKDIR}/git"
inherit autotools_stage
+FILES_${PN} += "${datadir}/icons"
+