Difference between Mac and Windows JUCE downloads


#1

What is the difference between the Mac and Windows JUCE downloads?

If the source code is platform independent why is there not one download?

Is only the Projucer application different and the modules are exactly the same?

On GitHub is the zip file for Windows and tar.gz for Mac OSX?

Also what is the major advantage of moving up to JUCE 5 from 4.3.1?

My plugin is just a basic VST synth, nothing fancy. I’ve been using 4.3.1 in Windows for ages and it has always been super stable both during development and in the field with over a thousand users worldwide.

I’ve tried using JUCE 5 in Mac OSX and it crashes constantly in Sierra with Logic Pro.

Also I’m having other problems with JUCE 5 in Mac as well. A lot of functionality in my GUI breaks because JUCE sends a mouse drag event after each mouse down event though the mouse position has not changed. This is caused by
MouseInputSourceInternal::handleEvent() thinking there is a pressure change when there is not.

Because of this I’m considering moving my Mac build back to 4.3.1 which I’m perfectly happy with except I’m not sure If I need a special download of 4.3.1 for the Mac?


#2

The source code is exactly the same. It’s just the pre-built binaries that is different.

Can you be more specific where exactly the crash is happening? Maybe we could then help you figure out the cause of the crash.


#3

Thanks for your quick response. I’ll do my best to catch the crash in my xcode debugger on Mac Sierra. It’s tough because its very intermittent and as yet I have not linked it to any one particular set of steps in the plugin, except that it crashes in Logic when I hit play or record.

I moved back to the 4.3.1 JUCE library and it no longer crashes.

However, I would recommend fixing what appears to me to be a bug in JUCE related to mouse events.

JUCE\modules\juce_gui_basics\mouse\juce_MouseInputSource.cpp

void handleEvent (ComponentPeer& newPeer, Point<float> positionWithinPeer, Time time,
                  const ModifierKeys newMods, float newPressure)

This is on Mac Sierra 10.12 and there is no pressure input device of any kind, just a normal mouse.

In this method pressureChanged is being set to true because pressure does not equal newPressure.

This is causing shouldUpdate to be passed as true to setScreenPos. Which in turn causes setScreenPos to send a mouseDrag event to the plugin immediately after the mouseDown event.

This is problematic for my plugin because there are many places on the interface where different features are employed depending on whether or not the user clicks on something, or clicks and drags something.

For instance in my graphical envelopes if the user clicks on a point it changes the envelope segment type, and if the user drags the point it only changes the position of the point.

With the bug mentioned above all my users on Mac OSX Sierra were reporting that they could not access envelope segment types beacause JUCE was sending mouse drag events to my plugin, for the reasons stated, even though they were using a normal mouse with no pressure signal.

Incidentally, I’m not sure it makes sense to send the plugin a drag event even if the pressure did change because it incorrectly gives the plugin the impression that the mouse position has changed when in fact is has not.

Thanks, Hope that helps.
Everett