<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -11,4 +11,4 @@
                          (:file &quot;tutorial&quot; :depends-on (&quot;package&quot;))
                          (:file &quot;triangle&quot; :depends-on (&quot;package&quot;))
                          (:file &quot;subclass&quot; :depends-on (&quot;package&quot; &quot;triangle&quot;))
-                         (:file &quot;container&quot; :depends-on (&quot;package&quot;))))))
+                         (:file &quot;container&quot; :depends-on (&quot;package&quot; &quot;triangle&quot;))))))</diff>
      <filename>clutter-examples.asd</filename>
    </modified>
    <modified>
      <diff>@@ -234,3 +234,56 @@
 
 (defun lisp-group-get-nth-child (group n)
   (nth n (children-of (lisp-actor-resource group))))
+
+(defun register-lisp-group ()
+  (unless (get-g-type 'lisp-group &quot;LispClutterGroup&quot;)
+    (setf *lisp-group-parent-class* (%g-type-class-peek (get-g-type 'lisp-actor &quot;LispClutterActor&quot;)))
+    (%g-type-register-static-simple
+     (get-g-type 'lisp-actor &quot;LispClutterActor&quot;)
+     &quot;LispClutterGroup&quot;
+     (foreign-type-size 'lisp-actor-class)
+     (callback lisp-group-class-init)
+     (foreign-type-size 'lisp-actor)
+     (callback lisp-group-init)
+     nil)
+    (with-foreign-object (iface-info 'g-interface-info)
+      (with-foreign-slots ((interface-init interface-finalize interface-data) iface-info g-interface-info)
+        (setf interface-init (callback lisp-group-container-iface-init)
+              interface-finalize (null-pointer)
+              interface-data (null-pointer))
+        (%g-type-add-interface-static
+         (get-g-type 'lisp-group &quot;LispClutterGroup&quot;)
+         (get-g-type 'container-iface &quot;ClutterContainer&quot;)
+         iface-info)))))
+
+;;; Example using lisp-group
+
+(defun lisp-group-example ()
+  (with-colors ((stage-color 0 0 0))
+    (init-clutter)
+    (register-triangle)
+    (register-lisp-group)
+    (let ((stage (%stage-get-default)))
+      (%group-remove-all stage)
+      (%actor-set-size stage 200.0 200.0)
+      (%stage-set-color stage stage-color)
+      (let ((group (lisp-group-new))
+            (triangle (make-subclassed-triangle 0 0 255 255))
+            (triangle2 (make-subclassed-triangle))
+            (timeline (%timeline-new 5000)))
+        (%actor-set-size triangle 60.0 60.0)
+        (%actor-set-position triangle 20.0 20.0)
+        (%container-add-actor group triangle)
+        (%actor-show triangle)
+        (%actor-set-size triangle2 20.0 20.0)
+        (%actor-set-position triangle2 40.0 40.0)
+        (%container-add-actor group triangle2)
+        (%actor-show triangle2)
+        (%timeline-set-loop timeline +true+)
+        (%timeline-start timeline)
+        (%container-add-actor stage group)
+        (%actor-set-position group 30.0 30.0)
+        (let ((alpha (%alpha-new-full timeline (animation-mode :linear))))
+          (let ((behave (%behaviour-rotate-new alpha :z-axis :rotate-cw 0d0 360d0)))
+            (%behaviour-apply behave group)
+            (main-with-cleanup stage timeline)))))))</diff>
      <filename>examples/container.lisp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f05f77d1fde3d865ff54b0f50db3eeae6e8530c1</id>
    </parent>
  </parents>
  <author>
    <name>Ramarren</name>
    <email>ramarren@gmail.com</email>
  </author>
  <url>http://github.com/Ramarren/cffi-clutter/commit/023dc4c15f9e4ae122ce1fef70d6ee3c15a58cf3</url>
  <id>023dc4c15f9e4ae122ce1fef70d6ee3c15a58cf3</id>
  <committed-date>2009-07-08T03:58:56-07:00</committed-date>
  <authored-date>2009-07-08T03:58:56-07:00</authored-date>
  <message>Add type registration and example</message>
  <tree>ee783389372617cd80ab0425a16a1568cd2b6abc</tree>
  <committer>
    <name>Ramarren</name>
    <email>ramarren@gmail.com</email>
  </committer>
</commit>
