From: "Warren W. Gay VE3WWG" <ve3wwg@cogeco.ca>
Subject: Re: A community Windows binding
Date: Thu, 14 Oct 2004 12:46:34 -0400
Date: 2004-10-14T12:46:34-04:00 [thread overview]
Message-ID: <J3ybd.26153$hk6.997543@news20.bellglobal.com> (raw)
In-Reply-To: <2smd6iF1mo0mcU1@uni-berlin.de>
Nick Roberts wrote:
> Jeffrey Carter wrote:
>> Between callbacks and the single queue of events for all windows of
>> JEWL is an approach more suited to concurrent languages: multiple
>> queues, one per top-level window, with the assumption of one task per
>> queue/window. There should be the ability to select what events will
>> be put in the queue, and the possibility to combine queues when a
>> window doesn't merit its own task. Such an approach should scale
>> better than JEWL's single queue, and be more readable than callbacks.
>
> I have long felt that the approach most suited to a concurrent language
> (such as Ada) is for the 'window manager' to be a separate task, or
> possibly many tasks.
At the end of the day, a task begins to look like a callback,
with the exception that the delivery mechanism is different.
I can only see 4 ways to deal with GUI events :
1. The JEWL big main loop approach
2. The callback approach (Windows)
3. The "pipeline" event approach (X Window)
4. The "method" calls in an OO structure for
certain events (Java/C#), and the use of
inheritance to gain control during certain
events. This is very similar to #2, except
that inheritance allows installed callbacks
through overrides.
Ada tasks IMHO, are a variation of #2. In fairness,
#4 is very similar to #2 as well.
I don't believe #1 is practicle for a large application:
- the main loop is too large code-wise
- many cases (harder to modularize)
- unwanted coupling between cases is possible through
shared objects/code in the module containing
the main loop(though this can be avoided).
People dislike #2 for various reasons:
- perhaps complexity
- distributed code (too little coupling?)
- difficulties with "user data" parameter/type
The X Window approach has its own problems:
- performance: latency between request and
event response (in synchronous mode), but
this makes error handling easy and neat.
- error handling: (asynchronous mode) it is
very messy tracking requests vs returned
responses (often X Window programs ignore
returned errors because they were n events
ago). This leads too poor quality of app.
My biggest beef for callbacks and similar techniques
is the need for the "user data" parameter. I don't
have a problem with the callback mechanism itself,
but for Ada the "user data" type and parameter is
usually a problem.
If however, some main object for an application
was used and made available in every callback,
then the application can extend that and gain
access to custom application values. I seem
to recall that some GUIs do it this way, which
seems about right to me.
...
> All that a simple program (with no separate tasks of its own) needs to
> do is to set up the components, and register them with the window
> manager.
But the process is much the same. Registering a callback or
an object, is a very similar process (or burden ;-)
--
Warren W. Gay VE3WWG
http://home.cogeco.ca/~ve3wwg
next prev parent reply other threads:[~2004-10-14 16:46 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <usm8shkul.fsf@acm.org>
2004-10-05 23:28 ` A community Windows binding Stephen Leake
2004-10-06 4:26 ` David Botton
2004-10-06 17:42 ` Jeffrey Carter
2004-10-07 16:33 ` Warren W. Gay VE3WWG
2004-10-07 17:37 ` Jeffrey Carter
2004-10-08 2:39 ` Alexander E. Kopilovich
2004-10-08 2:43 ` Nick Roberts
2004-10-08 4:56 ` tmoran
2004-10-08 23:17 ` chris
2004-10-09 1:31 ` Jeffrey Carter
2004-10-09 1:36 ` Jeffrey Carter
2004-10-09 3:15 ` Steve
2004-10-09 6:23 ` tmoran
[not found] ` <z7ybd.26154$hk6.998363@news20.bellglobal.com>
2004-10-15 1:12 ` Stephen Leake
2004-10-15 20:36 ` David Botton
2004-10-17 13:25 ` Stephane Riviere
2004-10-09 13:20 ` Stephen Leake
2004-10-10 9:04 ` CBFalconer
2004-10-10 14:39 ` Stephen Leake
2004-10-14 16:54 ` Warren W. Gay VE3WWG
2004-10-14 16:53 ` Warren W. Gay VE3WWG
2004-10-10 3:38 ` David Botton
2004-10-14 16:46 ` Warren W. Gay VE3WWG [this message]
[not found] ` <rSftVP19_F@VB1162.spb.edu>
2004-10-08 8:18 ` Marius Amado Alves
2004-10-08 1:36 ` Stephen Leake
2004-10-06 4:28 ` CBFalconer
2004-10-06 6:02 ` tmoran
2004-10-06 11:35 ` Georg Bauhaus
2004-10-06 14:04 ` Steve
2004-10-06 6:22 ` Fionn mac Cuimhaill
2004-10-06 17:18 ` Nick Roberts
2004-10-07 6:38 ` Frank Piron
2004-10-07 9:44 ` Ross Higson
2004-10-07 16:39 ` Warren W. Gay VE3WWG
2004-10-07 22:27 ` Ross Higson
[not found] <41664D4E.7040405@netcabo.pt>
2004-10-08 21:38 ` Alexander E. Kopilovich
[not found] <uacv0hhj0.fsf_-_@acm.org>
2004-10-10 18:05 ` Stephen Leake
2004-10-10 18:17 ` Andre
2004-10-10 20:55 ` tmoran
2004-10-11 0:34 ` David Botton
2004-10-11 0:39 ` David Botton
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox