Juce 1.27

Ok, finally got a new version out - this one seems to have taken ages for some reason. Here’s the changelist:

* lots of new file selector classes: DirectoryContentsList, FileListComponent, FileChooserDialogBox, FileBrowserComponent, FileFilter, etc. These can be used either as separate components or as a ready-made dialog box file chooser, which means that the Linux build finally has a file chooser!
* jazzed-up the colour selector to give more control over how it looks
* added a simple pattern match (for matching filenames, mainly) to the String class
* fixes to avoid problems with drifting clocks on the new dual-core intel cpus
* added UTF-8 conversion methods to the String class
* made PropertiesFile support unicode strings
* new class: BorderSize, which is used to represent the gaps around things - I've changed a few methods in classes like LookAndFeel, ResizableWindow, Component to use this instead of specifying the gaps manually, which was a bit messy.
* new class: AudioDataConverters, which contains methods for converting floating point audio to various integer formats
* new static_jassert macro for doing compile-time assertions
* fixes for mac MidiInput with certain drivers
* tidied up the MemoryBlock class and got rid of its virtual base class to make it quicker. Also dumped the AlignedMemoryBlock class: if anyone wants it back, let me know and I'll do a new version!
* optimised repainting for cases where there are a lot of deeply-nested components
* tweak to the broadcast message code on win32 to avoid deadlocks
* fixes for GCC4.0 optimised build under linux - the crashes here were due to strict aliasing in some numeric conversion functions. I've been through and made them more complient now.

There’s also a new AudioJucePlugin that supports the new VSTSDK V2.4, and a new juce demo up there. Enjoy!

splendtacular! thanks :slight_smile:

Nice! Looking forward to trying them.

Looking forward to trying everything. Hope I don’t have to rejigger too many things in my current project. Ah, the joys of rapid release cycles. Seriously though, I really appreciate the quick response to user’s requests and bug reports. Not many other projects, closed or open source, are this responsive.

  • kbj

jules, the example for the FileChooserDialogBox is a bit messed up:

http://www.rawmaterialsoftware.com/juce/api/index.html

looks like it is was written against an out of date version as the FIleBrowserComponent() constructor doesn’t agree with the documentation for that class.

Great! :smiley: I can dump Phil then (though I will miss the back/forward buttons). With alsa support and this, is the linux build basically complete now?

  • Niall.

[quote=“valley”]jules, the example for the FileChooserDialogBox is a bit messed up:

http://www.rawmaterialsoftware.com/juce/api/index.html

looks like it is was written against an out of date version as the FIleBrowserComponent() constructor doesn’t agree with the documentation for that class.[/quote]

Ah yes, I’ll have to go back and tweak that. Ta.

Well it’s only a first release of the file browser stuff - I’ll probably add in stuff like back/forward soon. And yes, I think Linux is pretty much in line with the other platforms now…

hey man… nice one !
i’ve tried the new filebrowser on windows, is normal that i see all the file icons baaad looking (something like have’em resized 1% more than the regular winzoze ones with no antialiasing at all)…
i see you improved asio support, but forgot to keep the ASIO_DEBUG macro on… wasn’t the intent, wasn’t it ? the rest is x-x-tremely c-c-ool, especially the tweaks on the vst wrapper, you saved me some donkey work tho, thanx… mmmhh any chance to have the fadeInComponent in the next release ? :twisted:

So I’m curious - what, specifically did you have to change here? Which clocks are drifting?

Matt

[quote=“kraken”]hey man… nice one !
i’ve tried the new filebrowser on windows, is normal that i see all the file icons baaad looking (something like have’em resized 1% more than the regular winzoze ones with no antialiasing at all)…
i see you improved asio support, but forgot to keep the ASIO_DEBUG macro on… wasn’t the intent, wasn’t it ? the rest is x-x-tremely c-c-ool, especially the tweaks on the vst wrapper, you saved me some donkey work tho, thanx… mmmhh any chance to have the fadeInComponent in the next release ? :twisted:[/quote]

Yeah - the icons thing is a pain, but I’ll go back to the browser stuff soon as there are a few bits of it that need tweaking.

And doh, I didn’t mean to leave ASIO_DEBUG turned on - I’ll maybe tweak the code that’s up there to correct that.

[quote]So I’m curious - what, specifically did you have to change here? Which clocks are drifting?

Matt[/quote]

The Time::getApproximateMillisecond thing relied on a cached value being updated each time the clock was checked. If you have two threads checking the time on different cpus, they’d both be updating this value, but from different clocks, so the value could actually end up going backwards.

I also went through and looked for places where I’d been doing dangerous arithmetic on unsigned times, e.g. “if (timeNow - lastTime > 500)” has to be rewritten “if (timeNow > lastTime + 500)” so that it’s safe if lastTime happens to be less than timeNow.

(Great, now I’ll lay awake all night pondering the concept of negative time)

I just noticed that the JUCE VC6 project is set to “optimize for Pentium Pro, II and III”. Thats new I think?
:shock:
Is it good?

[quote=“Rock Hardbuns”](Great, now I’ll lay awake all night pondering the concept of negative time)

I just noticed that the JUCE VC6 project is set to “optimize for Pentium Pro, II and III”. Thats new I think?
:shock:
Is it good?[/quote]

…I haven’t changed anything deliberately in the VC6 project. I’ve just got myself a new PC and moved all my stuff over to it though, so maybe something got lost during the move. Don’t think that setting would make any difference these days.

In 1.27 the operator= for SortedSet no longer seems to work. Is this by design?

No, it should work - you can see the method for yourself if you take a look at the code. I did tidy up the format of the template it uses though, so maybe it’s not working well with your compiler? What’s the bug?

No, it should work - you can see the method for yourself if you take a look at the code. I did tidy up the format of the template it uses though, so maybe it’s not working well with your compiler? What’s the bug?[/quote]

Here is my code. My compiler is Visual C++ 2005 Express

SortedSet<int> s1; SortedSet<int> s2; s2 = s1;

Here is the error:

juce_sortedset.h(641) : error C2248: 'juce::ArrayAllocationBase<ElementType>::operator =' : cannot access private member declared in class 'juce::ArrayAllocationBase<ElementType>' with [ ElementType=int ] c:\dev\vc6proj\juce\src\juce_core\containers\juce_arrayallocationbase.h(142) : see declaration of 'juce::ArrayAllocationBase<ElementType>::operator =' with [ ElementType=int ] This diagnostic occurred in the compiler generated function 'juce::SortedSet<ElementType> &juce::SortedSet<ElementType>::operator =(const juce::SortedSet<ElementType> &)' with [ ElementType=int ]

Dammit, you’re right. I guess the compiler’s just not smart enough to compile it. Looks like it’ll have to change to:

/** Copies another set over this one.
    @param other    the set to copy
*/
const SortedSet <ElementType, TypeOfCriticalSectionToUse>& operator= (const SortedSet <ElementType, TypeOfCriticalSectionToUse>& other) throw()
{

which does the same thing anyway.

Ahh, then the fact that juce_AudioSampleBuffer.cpp was listed under “core\basics” in the project file is a mistake?

  • kbj

Ahh, then the fact that juce_AudioSampleBuffer.cpp was listed under “core\basics” in the project file is a mistake?

  • kbj[/quote]

Eh? Must have been a slip of the mouse!