Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Timeout patch to X11 Graphics module #3710

Closed
vicuna opened this issue Sep 17, 2002 · 1 comment
Closed

Timeout patch to X11 Graphics module #3710

vicuna opened this issue Sep 17, 2002 · 1 comment

Comments

@vicuna
Copy link

vicuna commented Sep 17, 2002

Original bug ID: 1393
Reporter: administrator
Status: closed
Resolution: won't fix
Priority: normal
Severity: feature
Category: ~DO NOT USE (was: OCaml general)

Bug description

Full_Name: Berke Durak
Version: 3.06
OS: Linux
Submission from: mix-montsouris-113-2-170.abo.wanadoo.fr (80.9.109.170)

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'' !!

@vicuna
Copy link
Author

vicuna commented May 30, 2004

Comment author: administrator

Better use threads (Graphics.wait_next_event should be thread-safe now). XL,
2004-05-30

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant