news-on.jpg (5515 bytes)
About-Off.jpg (5640 bytes)
Download-Off.jpg (6140 bytes)
Support-Off.jpg (5859 bytes)

 

 

 

 

 

Thursday, March 1, 2001

I've fixed the problem with VisInterface where the Vis exits, bringing down the entire application.

Changes:

1.  Added CVisThread, which wraps a UI thread that actually runs the Vis.  Nothing external to CVisInterface knows about this new thread (it's hidden in CVisInterface).

2.  CVisInterface was changed to use the new CVisThread

Wednesday, Feb 21, 2001

I've put a refresh up, based on some issues with COWPump. 

Changes:

  1. There's now a SetChannelMono()/Stereo() method in CVisInterface.  Some apps were looking at this, and the interface didn't have a way to set it.
  2. I've added SetSpectrum/WaveformNull() to CVisInterface.  Forgot to add that, as it defaults to Null (so your app can now turn off both channels and still pump data to the render engine, if for some reason you want to...)
  3. I've added a ProcessWinAMPUserMsg.  This handles ALL WM_USER (e.g., WM_WA_IPC) messages that an app can send, and returns/sets default data.  I did this in my continuing search into why some Visualizations don't work well, or at all.  This actually fixed a couple.  I'll be looking at the WM_COMMAND and WM_COPYDATA messages next.

I will be moving the code base and bug tracking over to Sourceforge at some point soon, as it's a pain to do it this way... and I'm hoping others will be willing to help out improving it.

The two biggest issues I have right now are:

  1. When the user kills the plug-in, it brings down COWPump.  This is because they call PostQuitMessage(0) on WM_DESTROY.. which takes COWPump down with it.  Because of what this does, COWPump can't easily abort this (It ONLY gets a OnDestroy(), which can't be aborted).  I've tried created another hidden window and attach it to the DLL, and I've tried doing all that from another thread, but it didn't work (the docs say PostQuiestMessage() actually kills the message queue for the THREAD).  It might be possible to peek into the message queue, or do something else like that.  
  2. GL Plug-ins that go to full-screen sometimes crash when exiting.  I believe this is because the plug-in starts several threads that get killed on exit, but BEFORE the CVisRender thread stops rendering... so when the render() call is made, the plug-in crashes.

If anyone wants to work on these, please do so.  If you figure it out, let me know, or better yet, send me the code with the fix

Wednesday, Feb 21, 2001

Version 1.0 is available on the download page, along with two samples.  Full source code is available.

The first real program to use VisInterface is COWPump.  Go check it out. (It uses the VisInterface classes exactly as they are here.