caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Timeout patch to X11 Graphics module
@ 2002-09-06 14:40 Berke Durak
  2002-09-06 14:53 ` Berke Durak
  0 siblings, 1 reply; 2+ messages in thread
From: Berke Durak @ 2002-09-06 14:40 UTC (permalink / raw)
  To: caml-list

Hello,

Since I had problems with threads, and since the required feature does
not really need threads, I've done a little patch to the Graphics module.
Well, in fact, the X11 version of the Graphics module. Someone needs to fix
this for Win32.

A new Timeout of float constructor is available in the Graphics.event type :

type event =
    Button_down                 (** A mouse button is pressed *)
  | Button_up                   (** A mouse button is released *)
  | Key_pressed                 (** A key is pressed *)
  | Mouse_motion                (** The mouse is moved *)           
  | Poll                        (** Don't wait; return immediately *)
  | Timeout of float            (** No event occurs in the specified number of seconds *)

A new timedout field has been added to Graphics.status record type :

type status =
  { mouse_x : int;              (** X coordinate of the mouse *)
    mouse_y : int;              (** Y coordinate of the mouse *)
    button : bool;              (** true if a mouse button is pressed *)
    keypressed : bool;          (** true if a key has been pressed *)
    key : char;                 (** the character for the key pressed *) 
    timedout : bool;            (** true only if no event occured in the given time *)
  }

For example the expression

	wait_next_event [Key_pressed;Mouse_motion;Timeout 3.0]

will return when the mouse is moved, a key is pressed or if 3 seconds
pass, whichever comes first. In the first two cases, the timedout
field will be false. In the last case, it will be true and other
fields will be meaningless (zero or false, actually).

The patch is available at

	http://www.liafa.jussieu.fr/~durak/ocaml-306-graph.patch

Apply it by typing (sorry I'm not an expert in making patches, hope this is correct)

	cd /usr/local/src/ocaml-3.06 && patch -p6 </path/ocaml-306-graph.patch

assuming that your Ocaml sources are in /usr/local/src/ocaml-3.06 and
that the patch is /path/ocaml-306-graph.patch.

I guess it will work with previous versions.

Note that it seems that recompiling the whole Ocaml is unnecessary ;
just type

   cd /usr/local/src/ocaml-3.06/otherlibs/graph && make && make allopt && make install.

Now I can concentrate on implementing ``Standard Tetris'' !!
--
Berke Durak
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] Timeout patch to X11 Graphics module
  2002-09-06 14:40 [Caml-list] Timeout patch to X11 Graphics module Berke Durak
@ 2002-09-06 14:53 ` Berke Durak
  0 siblings, 0 replies; 2+ messages in thread
From: Berke Durak @ 2002-09-06 14:53 UTC (permalink / raw)
  To: caml-list

Oh I forgot, a little test program is available at

	http://www.liafa.jussieu.fr/~durak/testgraph.ml

Compile with

	ocamlc graphics.cma testgraph.ml -o testgraph

after having applied the patch.
--
Berke Durak
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-09-06 14:53 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-09-06 14:40 [Caml-list] Timeout patch to X11 Graphics module Berke Durak
2002-09-06 14:53 ` Berke Durak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).