Re: [linux-audio-dev] and just to finalize ...

2003-11-18 Thread Uwe Koloska
Paul Davis wrote:

what a night (paul simon on the famous AG concert in central park)
6) [ only if we really wanted hosts to have a real handle on the
   plugin GUI window ] the library would need to contain a way to
   pass in an X Window, and wrap it up as a native drawing area
   for each toolkit. i would prefer not to do this for now, if ever.
What about reparenting the window like the window manager does? 
 I must confess: I don't know anything about programming this 
but have heard about the concept.  AFAIK, any window can be 
absorbed by a container -- but I don't know what this really and 
programmatically means.  So it's just an idea ...

Uwe

--
voiceINTERconnect www.voiceinterconnect.de
... smart speech applications from germany


Re: [linux-audio-dev] and just to finalize ...

2003-11-18 Thread Steve Harris
I'd like to say: woohoo!

On Tue, Nov 18, 2003 at 02:23:05 -0500, Paul Davis wrote:
 what would all this mean for LADSPA?
 
 1) there would need to be a way to associate plugins+GUIs since we
probably don't want them in the same object.
 
  - could be done using LRDF or a dir search path combined with the
plugin ID.

I vote for the latter, otherwise the fully qualified GUI path would have
to be in the metadata, which seems a bit odd.

What are the arguments against stuffing the UI code in the same .so file?
 
 2) the GUI would have to declare which toolkit it was using so that
the host could ensure support for it (i.e. fire up a thread that
will run the equivalent of gtk_main or QApplication::exec()) and
ask the relevant toolkit thread to call the primary entry point to
the GUI. how does it declare this? a well known symbol? is it a
char* or a function call? is it in the LRDF entry, or the filename,
or what?

This can be wrapped in a non toolkit specific library, right? Cant most of
this be handled by the plugin UI?
 
 6) [ only if we really wanted hosts to have a real handle on the
plugin GUI window ] the library would need to contain a way to
pass in an X Window, and wrap it up as a native drawing area
for each toolkit. i would prefer not to do this for now, if ever.

I'm not clear on the specifics of how this all works, but the host may
well want to swallow the plugin window(s) and max/minimise it and so on.

- Steve


Re: [linux-audio-dev] and just to finalize ...

2003-11-18 Thread Paul Davis
 6) [ only if we really wanted hosts to have a real handle on the
plugin GUI window ] the library would need to contain a way to
pass in an X Window, and wrap it up as a native drawing area
for each toolkit. i would prefer not to do this for now, if ever.

What about reparenting the window like the window manager does? 
  I must confess: I don't know anything about programming this 
but have heard about the concept.  AFAIK, any window can be 
absorbed by a container -- but I don't know what this really and 
programmatically means.  So it's just an idea ...

the problem is getting the GUI toolkit to use an externally created
window to parent one of its own. i wouldn't want to rely on XEMBED for
this, and there is probably no need to. i know that GDK has
gdk_window_new_foreign(), which does 50% of the work. don't know about
Qt, but i will check.

--p


Re: [linux-audio-dev] and just to finalize ...

2003-11-18 Thread Paul Davis
I'd like to say: woohoo!

i suppose that if i knew this was possible 2 years ago, i would never
have written JACK. that's the upside, perhaps. should JACK exist? is
the address space isolation worth it? big questions.

What are the arguments against stuffing the UI code in the same .so file?

what happens if you wanted a different GUI for the same plugin? well,
personally i think this is too much of an edge case - people who want
to do this can learn to recompile/relink. so i'd be fine with putting
it in the same .so file.
 
 2) the GUI would have to declare which toolkit it was using so that
the host could ensure support for it (i.e. fire up a thread that
will run the equivalent of gtk_main or QApplication::exec()) and
ask the relevant toolkit thread to call the primary entry point to
the GUI. how does it declare this? a well known symbol? is it a
char* or a function call? is it in the LRDF entry, or the filename,
or what?

This can be wrapped in a non toolkit specific library, right? Cant most of
this be handled by the plugin UI?

the library has to be (dynamically) linked against every toolkit for
which it offers support. the host uses the library to open the plugin
GUI. the host has to do something like:

 switch (plugin-toolkit_id) {
 case PLUGIN_GUI_GTK_2:
  return load_gtk2_plugin (plugin_handle);
  
 case PLUGIN_GUI_QT3:
  retur load_qt3_plugin (plugin_handle);
 
   ...
 }

think of it was a factory method in OOP.
 
 6) [ only if we really wanted hosts to have a real handle on the
plugin GUI window ] the library would need to contain a way to
pass in an X Window, and wrap it up as a native drawing area
for each toolkit. i would prefer not to do this for now, if ever.

I'm not clear on the specifics of how this all works, but the host may
well want to swallow the plugin window(s) and max/minimise it and so on.

it appears to me this morning that the XEmbed protocol is in fact
exactly what is called for here, and will work for at least GTK+ and
Qt. i'm going to write a short demo.

--p


Re: [linux-audio-dev] and just to finalize ...

2003-11-18 Thread Steve Harris
On Tue, Nov 18, 2003 at 09:22:13 -0500, Paul Davis wrote:
 I'd like to say: woohoo!
 
 i suppose that if i knew this was possible 2 years ago, i would never
 have written JACK. that's the upside, perhaps. should JACK exist? is
 the address space isolation worth it? big questions.

In that case its a good thing. Having spoken to people who've worked with
the windows version of rewire, the address space isolation is very
important.

If there was an expectation (or requirement) for nice, author provided UIs
for plugins, do you think there would be so many for linux now?
 
 What are the arguments against stuffing the UI code in the same .so file?
 
 what happens if you wanted a different GUI for the same plugin? well,
 personally i think this is too much of an edge case - people who want
 to do this can learn to recompile/relink. so i'd be fine with putting
 it in the same .so file.

People who want to do this can define a service discovery mechanism
(service discovery is my least favourite problem at the moment). They may
want it to be network transparent, or platform neutral or something.

  2) the GUI would have to declare which toolkit it was using so that
 the host could ensure support for it (i.e. fire up a thread that
 will run the equivalent of gtk_main or QApplication::exec()) and
 ask the relevant toolkit thread to call the primary entry point to
 the GUI. how does it declare this? a well known symbol? is it a
 char* or a function call? is it in the LRDF entry, or the filename,
 or what?
 
 This can be wrapped in a non toolkit specific library, right? Cant most of
 this be handled by the plugin UI?
 
 the library has to be (dynamically) linked against every toolkit for
 which it offers support. the host uses the library to open the plugin
 GUI. the host has to do something like:

Ugh, this is looking less good.

 I'm not clear on the specifics of how this all works, but the host may
 well want to swallow the plugin window(s) and max/minimise it and so on.
 
 it appears to me this morning that the XEmbed protocol is in fact
 exactly what is called for here, and will work for at least GTK+ and
 Qt. i'm going to write a short demo.

Yes, from what I remember XEmbed is good for this kind of stuff, if only
GTK and QT atr supported that would be a pain, but maybe worth it

- Steve


Re: [linux-audio-dev] and just to finalize ...

2003-11-18 Thread Robert Jonsson
Tuesday 18 November 2003 15.22 skrev Paul Davis:
 I'd like to say: woohoo!

 i suppose that if i knew this was possible 2 years ago, i would never
 have written JACK. that's the upside, perhaps. should JACK exist? is
 the address space isolation worth it? big questions.


As others have also noted, adress isolation is god sent. Whatever you do, 
unless jack crashes, almost nothing can bring your application down (a mild 
overstatement perhaps *). This is a _major_ feature. 
I also think that jack apps should be easier to design and program as opposed 
to plugin-centric solutions. The boundaries are dictated by the operating 
system, not by the plugin-architecture.

In my mind jack ought to have much better long-term viability than an in-proc 
plugin-system. Today you can probably wring out more precious clock cycles 
from an in-proc system since the overhead isn't as big. But in a few years 
(or already now!) the overhead for this is easily traded for the added 
benefits.

/Robert

* Jack does add a few critera of it's own, can you say ZOMBIE ? ;) But this is 
a necessity with an in-proc system also.


Re: [linux-audio-dev] and just to finalize ...

2003-11-18 Thread Lance Blisters
  i suppose that if i knew this was possible 2 years ago, i would never
  have written JACK. that's the upside, perhaps. should JACK exist? is
  the address space isolation worth it? big questions.
 
 As others have also noted, adress isolation is god sent. Whatever you do, 

chiming in, address isolation is great.  gdam forks processes for
mp3 decoding... if mpg123 crashes, that one song ends early.  with
in-client mpglib a crash would take down the whole app.  for anyone
performing live, in front of audiences, stability and reliablity are
of utmost importance.

  -geoff