Commits

Reid van Melle committed 3add5f0

Wrapped up some additional objects and fixed a compiler warning

Comments (0)

Files changed (11)

 - ClutterLabel
 - ClutterEntry
 - ClutterScore
+- get GError exceptions happening
 - wrap up CairoBox and coglBox properly
 - debug/get working opengl wrapper
 - get some kind of automatic event conversion working and get types straight

clutter/clutter.ml

 type cairo_actor = [`cairo|`actor]
 type cairo = cairo_actor
 type texture =   [`texture|`actor]
+type clone_texture = [`clonetexture|`actor]
 type label =     [`label|`actor]
+type entry =     [`entry|`actor]
   
 type alpha =     [`alpha] 
 type stage =     [`container|`stage|`actor|`group] 

clutter/clutter.props

   "natural-width-set"        gboolean              : Read / Write
   "opacity"                  guchar                : Read / Write
   "reactive"                 gboolean              : Read / Write
-  "request-mode"             ClutterRequestMode    : Read / Write
+  "request-mode"             ClutterRequestModeType    : Read / Write
   "rotation-angle-x"         gdouble               : Read / Write
   "rotation-angle-y"         gdouble               : Read / Write
   "rotation-angle-z"         gdouble               : Read / Write
   "use-markup"               gboolean              : Read / Write
   "wrap"                     gboolean              : Read / Write
   "wrap-mode"                PangoWrapModeType         : Read / Write
+  method get_layout : "Pango.layout" 
+}
+
+class Entry set wrap : Actor {
+  "alignment"                PangoAlignmentType    : Read / Write
+  "color"                    ClutterColor          : Read / Write
+  "cursor-visible"           gboolean              : Read / Write
+  "entry-padding"            guint                 : Read / Write
+  "font-name"                string                : Read / Write
+  "max-length"               gint                  : Read / Write
+  "position"                 gint                  : Read / Write
+  "text"                     string                : Read / Write
+  "text-visible"             gboolean              : Read / Write
+  "x-align"                  gdouble               : Read / Write
+  signal activate : ClutterEntry
+  signal cursor_event : ClutterEntry ClutterGeometry
+  signal text_changed : ClutterEntry
+  method set_cursor_position : "int -> unit"
+  method get_cursor_position : "int"
+  method handle_key_event : "Event.Key.t -> unit"
+  method insert_unichar : "int -> unit"
+  method delete_chars : "len:int -> unit"
+  method insert_text : "text:string -> position:int -> unit"
+  method delete_text : "start_pos:int -> end_pos:int -> unit"
+  method set_invisible_char : "int -> unit"
+  method get_invisible_char : "int"
 }
 
 
   "cogl-texture"             ClutterTextureHandle  : Read / Write
   "disable-slicing"          gboolean              : Read / Write / Construct Only
   "filename"                 string                : Write
-  "filter-quality"           ClutterTextureQuality  : Read / Write / Construct
+  "filter-quality"           ClutterTextureQualityType  : Read / Write / Construct
   "keep-aspect-ratio"        gboolean              : Read / Write
   "pixel-format"             gint                  : Read
   "repeat-x"                 gboolean              : Read / Write
   method set_max_tile_waste : "int -> unit"
   method get_cogl_texture : "Clutter.coglhandle"
   method set_colg_texture : "Clutter.coglhandle -> unit"
-  signal pixbuf_change : (*gpointer*) 
-  signal size_change : int int (*gpointer*)
+  signal pixbuf_change : ClutterTexture
+  signal size_change : ClutterTexture int int
+}
+
+class CloneTexture set wrap : Actor {
+  "parent-texture"           ClutterTexture        : Read / Write
+  "repeat-x"                 gboolean              : Read / Write
+  "repeat-y"                 gboolean              : Read / Write
 }
 
 class Alpha set wrap wrapsig : Object {
 
 class Behaviour abstract set wrap wrapsig : Object {
   "alpha"                    ClutterAlpha         : Read / Write
-  signal applied : ClutterBehaviour ClutterActor (*gpointer*)
-  signal removed : ClutterBehaviour ClutterActor (*gpointer*)
+  signal applied : ClutterBehaviour ClutterActor
+  signal removed : ClutterBehaviour ClutterActor
   method apply : "Clutter.actor obj -> unit"
   method remove : "Clutter.actor obj -> unit"
   method remove_all : "unit"

clutter/clutterEnums.ml

   [ `GRAVITY_NONE | `GRAVITY_NORTH | `GRAVITY_NORTH_EAST | `GRAVITY_EAST
   | `GRAVITY_SOUTH_EAST | `GRAVITY_SOUTH | `GRAVITY_SOUTH_WEST
   | `GRAVITY_WEST | `GRAVITY_NORTH_WEST | `GRAVITY_CENTER ]
+type request_mode_type = [ `HEIGHT_FOR_WIDTH | `WIDTH_FOR_HEIGHT ]
+type texture_quality_type = [ `LOW | `MEDIUM | `HIGH ]
 
 (**/**)
 
   * scroll_direction_type variant_table
   * stage_state_type variant_table
   * gravity_type variant_table
+  * request_mode_type variant_table
+  * texture_quality_type variant_table
   = "ml_clutter_get_tables"
 
 
 let rotate_axis_type, rotate_direction_type, timeline_direction_type,
     clutter_event_type, modifier_type, scroll_direction_type,
-    stage_state_type, gravity_type = _get_tables ()
+    stage_state_type, gravity_type, request_mode_type,
+    texture_quality_type = _get_tables ()
 
 let rotate_axis_type_conv = Gobject.Data.enum rotate_axis_type
 let rotate_direction_type_conv = Gobject.Data.enum rotate_direction_type
 let scroll_direction_type_conv = Gobject.Data.enum scroll_direction_type
 let stage_state_type_conv = Gobject.Data.enum stage_state_type
 let gravity_type_conv = Gobject.Data.enum gravity_type
+let request_mode_type_conv = Gobject.Data.enum request_mode_type
+let texture_quality_type_conv = Gobject.Data.enum texture_quality_type

clutter/clutterProps.ml

 end
 
 module PrivateProps = struct
+  let alignment = {name="alignment"; conv=PangolibEnums.alignment_type_conv}
   let alpha = {name="alpha"; conv=(gobject : Clutter.alpha obj data_conv)}
   let angle_end = {name="angle-end"; conv=double}
   let angle_start = {name="angle-start"; conv=double}
   let color = {name="color"; conv=Clutter.Color.conv_color}
+  let cursor_visible = {name="cursor-visible"; conv=boolean}
   let direction =
     {name="direction"; conv=ClutterEnums.rotate_direction_type_conv}
+  let font_name = {name="font-name"; conv=string}
   let height = {name="height"; conv=int}
+  let repeat_x = {name="repeat-x"; conv=boolean}
+  let repeat_y = {name="repeat-y"; conv=boolean}
+  let text = {name="text"; conv=string}
   let width = {name="width"; conv=int}
 end
 
       {name="natural-width-set"; conv=boolean}
     let opacity : ([>`actor],_) property = {name="opacity"; conv=uchar}
     let reactive : ([>`actor],_) property = {name="reactive"; conv=boolean}
+    let request_mode : ([>`actor],_) property =
+      {name="request-mode"; conv=ClutterEnums.request_mode_type_conv}
     let rotation_angle_x : ([>`actor],_) property =
       {name="rotation-angle-x"; conv=double}
     let rotation_angle_y : ([>`actor],_) property =
       ?fixed_position_set ?fixed_x ?fixed_y ?height ?min_height
       ?min_height_set ?min_width ?min_width_set ?name ?natural_height
       ?natural_height_set ?natural_width ?natural_width_set ?opacity
-      ?reactive ?rotation_angle_x ?rotation_angle_y ?rotation_angle_z
-      ?rotation_center_x ?rotation_center_y ?rotation_center_z ?scale_x
-      ?scale_y ?show_on_set_parent ?visible ?width ?x ?y =
+      ?reactive ?request_mode ?rotation_angle_x ?rotation_angle_y
+      ?rotation_angle_z ?rotation_center_x ?rotation_center_y
+      ?rotation_center_z ?scale_x ?scale_y ?show_on_set_parent ?visible
+      ?width ?x ?y =
     let pl = (
       may_cons P.anchor_x anchor_x (
       may_cons P.anchor_y anchor_y (
       may_cons P.natural_width_set natural_width_set (
       may_cons P.opacity opacity (
       may_cons P.reactive reactive (
+      may_cons P.request_mode request_mode (
       may_cons P.rotation_angle_x rotation_angle_x (
       may_cons P.rotation_angle_y rotation_angle_y (
       may_cons P.rotation_angle_z rotation_angle_z (
       may_cons P.visible visible (
       may_cons P.width width (
       may_cons P.x x (
-      may_cons P.y y pl)))))))))))))))))))))))))))))))) in
+      may_cons P.y y pl))))))))))))))))))))))))))))))))) in
     cont pl
 end
 
 module Label = struct
   let cast w : Clutter.label obj = try_cast w "ClutterLabel"
   module P = struct
-    let alignment : ([>`label],_) property =
-      {name="alignment"; conv=PangolibEnums.alignment_type_conv}
+    let alignment : ([>`label],_) property = PrivateProps.alignment
     let color : ([>`label],_) property = PrivateProps.color
     let ellipsize : ([>`label],_) property =
       {name="ellipsize"; conv=PangolibEnums.ellipsize_mode_type_conv}
-    let font_name : ([>`label],_) property = {name="font-name"; conv=string}
+    let font_name : ([>`label],_) property = PrivateProps.font_name
     let justify : ([>`label],_) property = {name="justify"; conv=boolean}
-    let text : ([>`label],_) property = {name="text"; conv=string}
+    let text : ([>`label],_) property = PrivateProps.text
     let use_markup : ([>`label],_) property =
       {name="use-markup"; conv=boolean}
     let wrap : ([>`label],_) property = {name="wrap"; conv=boolean}
       {name="wrap-mode"; conv=PangolibEnums.wrap_mode_type_conv}
   end
   let create pl : Clutter.label obj = Object.make "ClutterLabel" pl
+  external get_layout : [>`label] obj -> Pango.layout
+    = "ml_clutter_label_get_layout"
   let make_params ~cont pl ?alignment ?color ?ellipsize ?font_name ?justify
       ?text ?use_markup ?wrap ?wrap_mode =
     let pl = (
     cont pl
 end
 
+module Entry = struct
+  let cast w : Clutter.entry obj = try_cast w "ClutterEntry"
+  module P = struct
+    let alignment : ([>`entry],_) property = PrivateProps.alignment
+    let color : ([>`entry],_) property = PrivateProps.color
+    let cursor_visible : ([>`entry],_) property = PrivateProps.cursor_visible
+    let entry_padding : ([>`entry],_) property =
+      {name="entry-padding"; conv=uint}
+    let font_name : ([>`entry],_) property = PrivateProps.font_name
+    let max_length : ([>`entry],_) property = {name="max-length"; conv=int}
+    let position : ([>`entry],_) property = {name="position"; conv=int}
+    let text : ([>`entry],_) property = PrivateProps.text
+    let text_visible : ([>`entry],_) property =
+      {name="text-visible"; conv=boolean}
+    let x_align : ([>`entry],_) property = {name="x-align"; conv=double}
+  end
+  module S = struct
+    open GtkSignal 
+    open ClutterData
+    let activate =
+      {name="activate"; classe=`entry; marshaller=fun f ->
+       marshal1 (gobject : Clutter.entry obj data_conv)
+         "ClutterEntry::activate" f}
+    let cursor_event =
+      {name="cursor_event"; classe=`entry; marshaller=fun f ->
+       marshal2 (gobject : Clutter.entry obj data_conv)
+         (unsafe_pointer : Clutter.geometry data_conv)
+         "ClutterEntry::cursor_event" f}
+    let text_changed =
+      {name="text_changed"; classe=`entry; marshaller=fun f ->
+       marshal1 (gobject : Clutter.entry obj data_conv)
+         "ClutterEntry::text_changed" f}
+  end
+  let create pl : Clutter.entry obj = Object.make "ClutterEntry" pl
+  external set_cursor_position : [>`entry] obj -> int -> unit
+    = "ml_clutter_entry_set_cursor_position"
+  external get_cursor_position : [>`entry] obj -> int
+    = "ml_clutter_entry_get_cursor_position"
+  external handle_key_event : [>`entry] obj -> Event.Key.t -> unit
+    = "ml_clutter_entry_handle_key_event"
+  external insert_unichar : [>`entry] obj -> int -> unit
+    = "ml_clutter_entry_insert_unichar"
+  external delete_chars : [>`entry] obj -> len:int -> unit
+    = "ml_clutter_entry_delete_chars"
+  external insert_text : [>`entry] obj -> text:string -> position:int -> unit
+    = "ml_clutter_entry_insert_text"
+  external delete_text :
+    [>`entry] obj -> start_pos:int -> end_pos:int -> unit
+    = "ml_clutter_entry_delete_text"
+  external set_invisible_char : [>`entry] obj -> int -> unit
+    = "ml_clutter_entry_set_invisible_char"
+  external get_invisible_char : [>`entry] obj -> int
+    = "ml_clutter_entry_get_invisible_char"
+  let make_params ~cont pl ?alignment ?color ?cursor_visible ?entry_padding
+      ?font_name ?max_length ?position ?text ?text_visible ?x_align =
+    let pl = (
+      may_cons P.alignment alignment (
+      may_cons P.color color (
+      may_cons P.cursor_visible cursor_visible (
+      may_cons P.entry_padding entry_padding (
+      may_cons P.font_name font_name (
+      may_cons P.max_length max_length (
+      may_cons P.position position (
+      may_cons P.text text (
+      may_cons P.text_visible text_visible (
+      may_cons P.x_align x_align pl)))))))))) in
+    cont pl
+end
+
 module Stage = struct
   let cast w : Clutter.stage obj = try_cast w "ClutterStage"
   module P = struct
     let color : ([>`stage],_) property = PrivateProps.color
-    let cursor_visible : ([>`stage],_) property =
-      {name="cursor-visible"; conv=boolean}
+    let cursor_visible : ([>`stage],_) property = PrivateProps.cursor_visible
     let fullscreen : ([>`stage],_) property =
       {name="fullscreen"; conv=boolean}
     let offscreen : ([>`stage],_) property = {name="offscreen"; conv=boolean}
     let disable_slicing : ([>`texture],_) property =
       {name="disable-slicing"; conv=boolean}
     let filename : ([>`texture],_) property = {name="filename"; conv=string}
+    let filter_quality : ([>`texture],_) property =
+      {name="filter-quality"; conv=ClutterEnums.texture_quality_type_conv}
     let keep_aspect_ratio : ([>`texture],_) property =
       {name="keep-aspect-ratio"; conv=boolean}
     let pixel_format : ([>`texture],_) property =
       {name="pixel-format"; conv=int}
-    let repeat_x : ([>`texture],_) property = {name="repeat-x"; conv=boolean}
-    let repeat_y : ([>`texture],_) property = {name="repeat-y"; conv=boolean}
+    let repeat_x : ([>`texture],_) property = PrivateProps.repeat_x
+    let repeat_y : ([>`texture],_) property = PrivateProps.repeat_y
     let sync_size : ([>`texture],_) property =
       {name="sync-size"; conv=boolean}
     let tile_waste : ([>`texture],_) property = {name="tile-waste"; conv=int}
     open GtkSignal 
     open ClutterData
     let pixbuf_change =
-      {name="pixbuf_change"; classe=`texture; marshaller=marshal_unit}
+      {name="pixbuf_change"; classe=`texture; marshaller=fun f ->
+       marshal1 (gobject : Clutter.texture obj data_conv)
+         "ClutterTexture::pixbuf_change" f}
     let size_change =
       {name="size_change"; classe=`texture; marshaller=fun f ->
-       marshal2 int int "ClutterTexture::size_change" f}
+       marshal3 (gobject : Clutter.texture obj data_conv) int int
+         "ClutterTexture::size_change" f}
   end
   let create ?disable_slicing ?tile_waste pl : Clutter.texture obj =
     let pl = (
     = "ml_clutter_texture_get_cogl_texture"
   external set_colg_texture : [>`texture] obj -> Clutter.coglhandle -> unit
     = "ml_clutter_texture_set_colg_texture"
-  let make_params ~cont pl ?filename ?keep_aspect_ratio ?repeat_x ?repeat_y
-      ?sync_size =
+  let make_params ~cont pl ?filename ?filter_quality ?keep_aspect_ratio
+      ?repeat_x ?repeat_y ?sync_size =
     let pl = (
       may_cons P.filename filename (
+      may_cons P.filter_quality filter_quality (
       may_cons P.keep_aspect_ratio keep_aspect_ratio (
       may_cons P.repeat_x repeat_x (
       may_cons P.repeat_y repeat_y (
-      may_cons P.sync_size sync_size pl))))) in
+      may_cons P.sync_size sync_size pl)))))) in
+    cont pl
+end
+
+module CloneTexture = struct
+  let cast w : Clutter.clone_texture obj = try_cast w "ClutterCloneTexture"
+  module P = struct
+    let parent_texture : ([>`clonetexture],_) property =
+      {name="parent-texture"; conv=(gobject : Clutter.texture obj data_conv)}
+    let repeat_x : ([>`clonetexture],_) property = PrivateProps.repeat_x
+    let repeat_y : ([>`clonetexture],_) property = PrivateProps.repeat_y
+  end
+  let create pl : Clutter.clone_texture obj =
+    Object.make "ClutterCloneTexture" pl
+  let make_params ~cont pl ?parent_texture ?repeat_x ?repeat_y =
+    let pl = (
+      may_cons P.parent_texture parent_texture (
+      may_cons P.repeat_x repeat_x (
+      may_cons P.repeat_y repeat_y pl))) in
     cont pl
 end
 

clutter/clutter_tags.c

   { MLTAG_GRAVITY_NORTH, CLUTTER_GRAVITY_NORTH },
 };
 
+/* request_mode_type : conversion table */
+const lookup_info ml_table_request_mode_type[] = {
+  { 0, 2 },
+  { MLTAG_HEIGHT_FOR_WIDTH, CLUTTER_REQUEST_HEIGHT_FOR_WIDTH },
+  { MLTAG_WIDTH_FOR_HEIGHT, CLUTTER_REQUEST_WIDTH_FOR_HEIGHT },
+};
+
+/* texture_quality_type : conversion table */
+const lookup_info ml_table_texture_quality_type[] = {
+  { 0, 3 },
+  { MLTAG_LOW, CLUTTER_TEXTURE_QUALITY_LOW },
+  { MLTAG_HIGH, CLUTTER_TEXTURE_QUALITY_HIGH },
+  { MLTAG_MEDIUM, CLUTTER_TEXTURE_QUALITY_MEDIUM },
+};
+
 CAMLprim value ml_clutter_get_tables ()
 {
   static const lookup_info *ml_lookup_tables[] = {
     ml_table_scroll_direction_type,
     ml_table_stage_state_type,
     ml_table_gravity_type,
+    ml_table_request_mode_type,
+    ml_table_texture_quality_type,
   };
   return (value)ml_lookup_tables;}

clutter/clutter_tags.h

 #define Val_gravity_type(data) ml_lookup_from_c (ml_table_gravity_type, data)
 #define Gravity_type_val(key) ml_lookup_to_c (ml_table_gravity_type, key)
 
+/* request_mode_type : tags and macros */
+#define MLTAG_HEIGHT_FOR_WIDTH	Val_int(374203192)
+#define MLTAG_WIDTH_FOR_HEIGHT	Val_int(956104374)
+
+extern const lookup_info ml_table_request_mode_type[];
+#define Val_request_mode_type(data) ml_lookup_from_c (ml_table_request_mode_type, data)
+#define Request_mode_type_val(key) ml_lookup_to_c (ml_table_request_mode_type, key)
+
+/* texture_quality_type : tags and macros */
+#define MLTAG_LOW	Val_int(3797108)
+#define MLTAG_MEDIUM	Val_int(826998901)
+#define MLTAG_HIGH	Val_int(802094946)
+
+extern const lookup_info ml_table_texture_quality_type[];
+#define Val_texture_quality_type(data) ml_lookup_from_c (ml_table_texture_quality_type, data)
+#define Texture_quality_type_val(key) ml_lookup_to_c (ml_table_texture_quality_type, key)
+

clutter/clutter_tags.var

   | `GRAVITY_NORTH_WEST
   | `GRAVITY_CENTER ] 
 
+type request_mode_type = "CLUTTER_REQUEST_"
+  [ `HEIGHT_FOR_WIDTH
+  | `WIDTH_FOR_HEIGHT ]
+
+type texture_quality_type = "CLUTTER_TEXTURE_QUALITY_"
+  [ `LOW
+  | `MEDIUM
+  | `HIGH ]
+

clutter/oclutterProps.ml

   method set_natural_width_set = set Actor.P.natural_width_set self#obj
   method set_opacity = set Actor.P.opacity self#obj
   method set_reactive = set Actor.P.reactive self#obj
+  method set_request_mode = set Actor.P.request_mode self#obj
   method set_rotation_angle_x = set Actor.P.rotation_angle_x self#obj
   method set_rotation_angle_y = set Actor.P.rotation_angle_y self#obj
   method set_rotation_angle_z = set Actor.P.rotation_angle_z self#obj
   method natural_width_set = get Actor.P.natural_width_set self#obj
   method opacity = get Actor.P.opacity self#obj
   method reactive = get Actor.P.reactive self#obj
+  method request_mode = get Actor.P.request_mode self#obj
   method rotation_angle_x = get Actor.P.rotation_angle_x self#obj
   method rotation_angle_y = get Actor.P.rotation_angle_y self#obj
   method rotation_angle_z = get Actor.P.rotation_angle_z self#obj
   method wrap_mode = get Label.P.wrap_mode self#obj
 end
 
+class virtual entry_props = object (self)
+  method private virtual obj : _ obj
+  method set_alignment = set Entry.P.alignment self#obj
+  method set_color = set Entry.P.color self#obj
+  method set_cursor_visible = set Entry.P.cursor_visible self#obj
+  method set_entry_padding = set Entry.P.entry_padding self#obj
+  method set_font_name = set Entry.P.font_name self#obj
+  method set_max_length = set Entry.P.max_length self#obj
+  method set_position = set Entry.P.position self#obj
+  method set_text = set Entry.P.text self#obj
+  method set_text_visible = set Entry.P.text_visible self#obj
+  method set_x_align = set Entry.P.x_align self#obj
+  method alignment = get Entry.P.alignment self#obj
+  method color = get Entry.P.color self#obj
+  method cursor_visible = get Entry.P.cursor_visible self#obj
+  method entry_padding = get Entry.P.entry_padding self#obj
+  method font_name = get Entry.P.font_name self#obj
+  method max_length = get Entry.P.max_length self#obj
+  method position = get Entry.P.position self#obj
+  method text = get Entry.P.text self#obj
+  method text_visible = get Entry.P.text_visible self#obj
+  method x_align = get Entry.P.x_align self#obj
+end
+
 class virtual stage_props = object (self)
   method private virtual obj : _ obj
   method set_color = set Stage.P.color self#obj
 class virtual texture_props = object (self)
   method private virtual obj : _ obj
   method set_filename = set Texture.P.filename self#obj
+  method set_filter_quality = set Texture.P.filter_quality self#obj
   method set_keep_aspect_ratio = set Texture.P.keep_aspect_ratio self#obj
   method set_repeat_x = set Texture.P.repeat_x self#obj
   method set_repeat_y = set Texture.P.repeat_y self#obj
   method set_sync_size = set Texture.P.sync_size self#obj
   method disable_slicing = get Texture.P.disable_slicing self#obj
+  method filter_quality = get Texture.P.filter_quality self#obj
   method keep_aspect_ratio = get Texture.P.keep_aspect_ratio self#obj
   method pixel_format = get Texture.P.pixel_format self#obj
   method repeat_x = get Texture.P.repeat_x self#obj
   method size_change = self#connect Texture.S.size_change
 end
 
+class virtual clone_texture_props = object (self)
+  method private virtual obj : _ obj
+  method set_parent_texture = set CloneTexture.P.parent_texture self#obj
+  method set_repeat_x = set CloneTexture.P.repeat_x self#obj
+  method set_repeat_y = set CloneTexture.P.repeat_y self#obj
+  method parent_texture = get CloneTexture.P.parent_texture self#obj
+  method repeat_x = get CloneTexture.P.repeat_x self#obj
+  method repeat_y = get CloneTexture.P.repeat_y self#obj
+end
+
 class virtual alpha_props = object (self)
   method private virtual obj : _ obj
   method set_timeline = set Alpha.P.timeline self#obj

clutter/propcc.ml4

     "ScrollDirectionType";
     "StageStateType";
     "GravityType";
+    "RequestModeType";
+    "TextureQualityType";
   ];
   "Pango", "PangolibEnums",
   [ "AlignmentType";

examples/flowers.ml

        f.ctex#set_position (int_of_float f.x) (int_of_float f.y);
        f
     ) in
-  let _ = GMain.Timeout.add 50 (fun _ -> tick flowers; true) in
+  let _ = GMain.Timeout.add 50 (fun _ -> tick flowers) in
   stage#show_all;
   let _ = stage#connect#key_press_event (fun _ -> clutter_quit (); true) in
   clutter_main ()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.