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

Graphics.wait_next_event in Win32 hangs if window closed. #3963

Closed
vicuna opened this issue Jan 25, 2006 · 1 comment

Comments

Projects
None yet
1 participant
@vicuna
Copy link

commented Jan 25, 2006

Original bug ID: 3963
Reporter: anonymous
Status: closed (set by @damiendoligez on 2013-06-03T19:00:27Z)
Resolution: fixed
Priority: normal
Severity: major
Version: 3.09.0
Target version: 4.01.0+dev
Fixed in version: 4.01.0+dev
Category: ~DO NOT USE (was: OCaml general)
Monitored by: @Chris00

Bug description

Call Graphics.open_graph "" to open the graphics window.
Call Graphics.wait_next_event.
Close the window by clicking on the close box with the mouse.

wait_next_event will never return, and the caller has no
way of knowing that the window has gone away.

I looked through the source code in ocaml-3.09.1/otherlibs/win32graph.
In open.c/GraphicsWndProc(), when a WM_DESTROY message arrives, the
message is passed to caml_gr_handle_event() as usual. But
caml_gr_handle_event() is not sensitive to a WM_DESTROY message.
So the waiting call from Graphics.wait_next_event continues
to wait forever.

@vicuna

This comment has been minimized.

Copy link
Author

commented Jun 3, 2013

Comment author: @damiendoligez

Since Graphics.wait_next_event does not have a return value for this case, I've fixed this by making it raise Graphic_failure as it does under X-window, although the message is not the same.

Fixed in trunk/4.01 (rev 13740).

@vicuna vicuna closed this Jun 3, 2013

@vicuna vicuna added this to the 4.01.0 milestone Mar 14, 2019

@vicuna vicuna added the bug label Mar 19, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.