Re: GUIs and events (was: Re: Concurrency)

Axel Simon <[email protected]>
Newsgroups gmane.comp.lang.haskell.gui
Message-ID <[email protected]>
On Wed, Mar 12, 2003 at 11:46:57PM +0100, Wolfgang Thaller wrote:
> *) non-modal windows:
> If a callback wants to open a non-modal window, it should just open the 
> window, attach some callbacks to the window and return to the main 
> event loop. No special issues here.
> 
> *) application-modal dialogs:
> For application-modal windows, at least Win32 and Apple's APIs (don't 
> know about GTK and others) provide a function that runs a nested event 
> loop. For expose events and other events that still have to be handled 
> when a modal dialog is active, this nested event loop invokes the 
> appropriate callbacks.
 For information: yes, same thing in Gtk. You just call mainLoop again (or
runDialog) which lets the global event loop run. The underlying
application window would still emit redraw/expose events but no buttons
could be pressed since it cannot get the input focus as long as the modal
dialog is open. I guess this is the same in all three backends.

[..]
> 1) We should adopt a callback scheme that does not require concurrency
> 2) CGA implementations should automatically do all necessary 
> synchronization so that the CGA fully supports concurrency even if the 
> backend library does not.
> (2b) We should be careful to ensure that CGA functions can be invoked 
> from a "background" thread while the "main" thread is waiting for 
> events (means additional work, but it is probably necessary if we want 
> to fully use concurrency).
 Glynn oposed to this, he said it could be very difficult or even 
impossible. I thought this would come for free with the FFI if we wrap all 
GUI calls with

foreign ccall thread "GUI" blah...

which means all calls are done from a single OS thread called "GUI". I 
suspect this didn't wind up in the FFI, or did it?

Axel.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.