Re: [AD] END_OF_MAIN removal patch for msvc

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


On 2008-11-19, Stefanos A. <stapostol@xxxxxxxxxx> wrote:
> On Wed, 2008-11-19 at 19:11 +1100, Peter Wang wrote:
> > On 2008-11-19, Thomas Fjellstrom <tfjellstrom@xxxxxxxxxx> wrote:
> > > On November 18, 2008, Peter Wang wrote:
> > > >
> > > > No.  I may want to use Allegro in an environment where my code is not
> > > > allowed to block in al_run().  I know it might not work on certain
> > > > platforms, but that's my choice to make.
> > > 
> > > All I really care about is making the api consistent. Meaning the actual code 
> > > the user has to write is identical on all supported platforms. None of this "I 
> > > don't have to do it here, so I won't, even if it isn't compatible with other 
> > > supported platforms".
> > 
> > So you want to artificially prevent me from using Allegro in some
> > situations because it might not be portable to some brain dead platform
> > that I don't care about?  Right.
> > 
> 
> Concrete example of such a situation where "my code is not allowed to
> block in al_run()"?

Say, running in a language interpreter which provides a foreign function
interface where I can make calls into C function, but I can't call back
into the other language.

Or maybe I'm writing plugin for a web browser.

> Any reason why you can't just fork before calling
> al_init &  al_run?

Why should I?  I'm not distributing my program to anyone, and I don't
have a Mac.

> I'm not saying al_run is the best or even a good
> design, although I do believe it's better than the END_OF_MAIN macro.

I know it's a better design, I proposed it.  But why enforce it
where it's unnecessary?

> What about the alternative, i.e. calling al_process_events periodically?
> It has minimal impact to the API, it does not tie you to a paradigm you
> may not care about, it does not block. Any downsides?

To me, that's a huge impact.

Thomas, the END_OF_MAIN() in A4 did cause trouble for people trying to
dlopen() the Allegro .so file, because the .so file expects a
_mangled_main_address symbol.  It is possible to hack around it on Linux
by defining it manually but I'm not sure it works everywhere.

Peter





Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/