Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix console app name #1335

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
e8d221c
CoreAudio: Fix a bug when retrieving the index of a device nested ins…
Anthony-Nicholls Nov 9, 2023
da68fe2
AudioDeviceSelector: Auto resize when showing or hiding advanced sett…
Anthony-Nicholls Nov 9, 2023
21df860
AudioDeviceSelector: Correctly display when there is no MIDI output d…
Anthony-Nicholls Nov 10, 2023
60df982
Projucer: Make Xcode copy step symlink to build result, rather than c…
reuk Nov 20, 2023
e2ecbde
LV2 Host: Allow fileAllTypesForFile to accept bundle paths as well as…
reuk Nov 20, 2023
123576b
VST3: Include header/footer sysex bytes when converting with DataEvent
reuk Nov 20, 2023
968fa96
AudioPluginHost: Fix potential hang during plugin scanning
reuk Nov 20, 2023
b4aa74b
CIPropertyDelegate: Fix issue where status field was omitted from suc…
reuk Nov 22, 2023
3037041
CachedValue: Add const accessors
reuk Nov 27, 2023
903c77b
PopupMenu: Add accessor for top-level target component to Options class
reuk Nov 27, 2023
35d29d2
Oboe: Update to 1.8.0
reuk Nov 27, 2023
2eb518e
Resave all projects
reuk Nov 27, 2023
235544f
Projucer: Tidy up unnecessary enum qualification
reuk Nov 29, 2023
4478ca7
Projucer: Tidy implementation of writeTargetLines
reuk Nov 29, 2023
b3b2be5
Projucer: Fix clean and strip rules in generated makefiles
reuk Nov 29, 2023
6e8210d
Resave all projects
reuk Nov 29, 2023
418d7b9
SharedResourcePointer: Get a SharedResourcePointer instance without c…
Anthony-Nicholls Nov 27, 2023
47be26d
Timer: Replace DeletedAtShutdown with SharedResourcePointer
Anthony-Nicholls Nov 27, 2023
005040d
TimerThread: Always wait indefinitely for the timer thread to finish
Anthony-Nicholls Nov 27, 2023
62bba21
Add SocketOptions and avoid reducing the system default buffer sizes
szarvas Dec 1, 2023
2cc41ff
Projucer: Fix handling ARA analyzable content and transform flags
szarvas Dec 1, 2023
2685604
SharedResourcePointer: Allow objects with private constructors
Anthony-Nicholls Dec 1, 2023
1b09659
FLAC: Add library source files for version 1.4.3
szarvas Nov 8, 2023
fef3160
FLAC: Retarget header includes in 1.4.3 lib files
szarvas Nov 8, 2023
31e4779
FLAC: Prepare 1.4.3 lib files for inclusion in the JUCE build
szarvas Nov 8, 2023
c4c7c86
FlacAudioFormat: Use FLAC version 1.4.3
szarvas Dec 4, 2023
d98a0bc
Fix MinGW warning
szarvas Dec 4, 2023
6be90ee
Improve SVG text parsing capabilities
szarvas Dec 5, 2023
89c2536
Move NativeScaleFactorNotifier from audio_processors to gui_basics
szarvas Dec 5, 2023
06855ed
WebBrowserComponent: Windows: Trigger resized event on DPI change whe…
szarvas Dec 5, 2023
224c4f7
JSON: Add new JSON::Formatter for configuring JSON output
reuk Dec 5, 2023
8aa9b01
KeyPress: Allow isKeyDown to handle dual-symbol keys like =/+, ;/: on…
reuk Dec 6, 2023
9c5d86c
CMake: Always remove old moduleinfo.json, even if AUTO_MANIFEST is off
reuk Dec 7, 2023
4a172a3
AUSDK: Fix out-of-bounds read when fetching parameter names
reuk Dec 7, 2023
e6509fc
ARAPluginDemo: Fix potential crash during RegionSequence removal
szarvas Dec 8, 2023
99869fc
AudioProcessor: Fix incorrect assertion when calling setParameterTree()
szarvas Dec 9, 2023
a8c114b
Android: Widen ContentSharer permissions to work with Google Drive
szarvas Dec 10, 2023
b91fec7
AudioProcessorGraph: Allow nodes with ID 0 to be added
Anthony-Nicholls Dec 8, 2023
38f10fc
Add more information about DynamicObject::writeAsJSON() to BREAKING_C…
szarvas Dec 12, 2023
627d01b
UMP Tests: Remove checked iterator macro
chromadevlabs Dec 12, 2023
780493c
juceaide: Improve error logging
tpoole Dec 13, 2023
2a60153
Xcode: Add support for Xcode 15.1
Anthony-Nicholls Dec 14, 2023
b0aa8db
Formatting: Use nested namespace
Anthony-Nicholls Dec 14, 2023
90c15c4
Remove an extraneous std::flush
tpoole Dec 15, 2023
6219eb9
Android: Fix crash when using NetworkServiceDiscovery
szarvas Dec 14, 2023
a38428a
Update the minimum required CMake version in more places
robUx4 Dec 17, 2023
7650c85
Avoid focus changes due to mouse clicks for Components with setMouseC…
szarvas Dec 15, 2023
4f4ddf9
AU Client: Use ScopedJuceInitialiser_GUI to ensure the MessageManager…
szarvas Dec 12, 2023
00e96e7
ARA: Fix plugins in Logic by making the DocumentController not inheri…
szarvas Dec 12, 2023
b016798
OpenGLContext: Make getRenderingScale() sensitive to Component transf…
szarvas Jan 2, 2024
9694c1a
build_tools: Fix Windows assertion when path contains ellipses
szarvas Dec 18, 2023
03947a2
Projucer: Fix VST3 and LV2 manifest helper paths in Xcode when using …
szarvas Dec 18, 2023
6d7054f
Docs: Fix a typo
szarvas Dec 19, 2023
fac6f4c
CMake: Enable position-independent-code by default for binary data ta…
reuk Jan 2, 2024
1506bb3
MIDI-CI: Simplify profile enablement API, and ensure that group/block…
reuk Jan 2, 2024
1e7b91b
FileChooser: Avoid potential issue when viewDidDismiss and file selec…
reuk Jan 2, 2024
810e348
XWindowSystem: Specify mouse coordinates for resize in terms of the r…
reuk Jan 3, 2024
46b90d9
VST3 Host: Ensure that parameter changes from the processor are commu…
reuk Jan 3, 2024
5ee9d24
WindowsHooks: Use appropriate dpi awareness when forwarding mouse whe…
reuk Jan 4, 2024
b8f3030
AudioProcessorGraph: Ensure graph is rebuilt if any node latencies ch…
reuk Jan 4, 2024
3f52b29
File: Avoid leaving behind file system changes when moveFileTo() fails
szarvas Jan 9, 2024
31dfb05
Toolbar: Change the background colour of CustomisationDialog, make it…
szarvas Jan 10, 2024
b05b73f
ListenerList: Fix some edge cases when iterating the listeners
Anthony-Nicholls Nov 22, 2023
67570d3
ListenerList: Prevent calling any listeners that are added during a c…
Anthony-Nicholls Jan 15, 2024
878aad6
ObjCHelpers: Remove unnecessary __block variables
reuk Jan 16, 2024
76b9b28
OpenGL: Update compatibility headers
reuk Jan 16, 2024
0611baf
Add ChildProcessManager
szarvas Jan 5, 2024
d810a16
Use the new TimedCallback in the codebase
szarvas Jan 10, 2024
cc60286
ConnectedChildProcess: Wait for process termination on Linux to not l…
szarvas Jan 5, 2024
fb14118
MacOS: Disable window controls for windows created by JUCE when a Com…
szarvas Jan 4, 2024
2f09dc0
CapabilityInquiryDemo: Formatting
reuk Jan 8, 2024
9a55eb8
CIParser: Tidy monostate handling
reuk Jan 8, 2024
0192c86
CIParser: Make property headers human-readable in getMessageDescription
reuk Jan 8, 2024
c7b975c
CIPropertyHostUtils: Fix status code for terminating a property inquiry
reuk Jan 8, 2024
16d5e4e
CIDevice: Avoid including subscribeId in replies to subscription mess…
reuk Jan 8, 2024
60757de
CIDevice: Improve robustness of subscription API
reuk Jan 8, 2024
0637f78
Resave projects
reuk Jan 17, 2024
27828bd
MPEZoneLayout: Add test to verify behaviour of RPNs
reuk Jan 17, 2024
ddeae4a
CMake: Fix typo in docs
reuk Jan 17, 2024
3b3cd1b
DemoRunner: Avoid applying insets to main component on desktop systems
reuk Jan 17, 2024
6c32c4d
CapabilityInquiryDemo: Fix shadowing warnings
reuk Jan 22, 2024
5ccf8d6
Cmake: Fix missing console app product name
RolandSchuetzenhofer Jan 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
252 changes: 250 additions & 2 deletions BREAKING_CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,258 @@
# JUCE breaking changes

# develop

## Change

The signatures of some member functions of ci::Device have been changed:
- sendPropertyGetInquiry
- sendPropertySetInquiry

The signature of ci::PropertyHost::sendSubscriptionUpdate has also changed.

The following member functions of ci::Device have been replaced with new
alternatives:
- sendPropertySubscriptionStart
- sendPropertySubscriptionEnd
- getOngoingSubscriptionsForMuid
- countOngoingPropertyTransactions

The enum field PropertyExchangeResult::Error::invalidPayload has been removed.

**Possible Issues**

Code that uses any of these symbols will fail to compile until it is updated.

**Workaround**

Device::sendPropertyGetInquiry, Device::sendPropertySetInquiry, and
PropertyHost::sendSubscriptionUpdate all now return an optional RequestKey
instead of an ErasedScopeGuard. Requests started via any of these functions may
be cancelled by the request's RequestKey to the new function
Device::abortPropertyRequest. The returned RequestKey may be null, indicating a
failure to send the request.

countOngoingPropertyTransactions has been replaced by getOngoingRequests,
which returns the RequestKeys of all ongoing requests. To find the number of
transactions, use the size of the returned container.

sendPropertySubscriptionStart has been replaced by beginSubscription.
sendPropertySubscriptionEnd has been replaced by endSubscription.
The new functions no longer take callbacks. Instead, to receive notifications
when a subscription starts or ends, override
DeviceListener::propertySubscriptionChanged.

getOngoingSubscriptionsForMuid is replaced by multiple functions.
getOngoingSubscriptions returns SubscriptionKeys for all of the subscriptions
currently in progress, which may be filtered based on SubscriptionKey::getMuid.
The subscribeId assigned to a particular SubscriptionKey can be found using
getSubscribeIdForKey, and the subscribed resource can be found using
getResourceForKey.

It's possible that the initial call to beginSubscription may not be able to
start the subscription, e.g. if the remote device is busy and request a retry.
In this case, the request is cached. If you use subscriptions, then you
should call sendPendingMessages periodically to flush any messages that may
need to be retried.

There is no need to check for the invalidPayload error when processing
property exchange results.

**Rationale**

Keeping track of subscriptions is quite involved, as the initial request to
begin a subscription might not be accepted straight away. The device may not
initially have enough vacant slots to send the request, or responder might
request a retry if it is too busy to process the request. The ci::Device now
caches requests when necessary, allowing them to be retried in the future.
This functionality couldn't be implemented without modifying the old interface.

Replacing ErasedScopeGuards with Keys makes lifetime handling a bit easier.
It's no longer necessary to store or manually release scope guards for requests
that don't need to be cancelled. The new Key types are also a bit more
typesafe, and allow for simple queries of the transaction that created the key.


## Change

The ListenerList::Iterator class has been removed.

**Possible Issues**

Any code directly referencing the ListenerList::Iterator will fail to compile.

**Workaround**

In most cases there should be a public member function that does the required
job, for example, call, add, remove, or clear. In other cases you can access the
raw array of listeners to iterate through them by calling getListeners().

**Rationale**

Iterating through the listeners using the ListenerList::Iterator could in a
number of cases lead to surprising results and undefined behavior.


## Change

The background colour of the Toolbar::CustomisationDialog has been changed from
white to a new, customisable value, that matches Toolbar::backgroundColourId by
default.

**Possible Issues**

User interfaces that use Toolbar::CustomisationDialog will render differently.

**Workaround**

You can customise the new colour using LookAndFeel::setColour() using
Toolbar::customisationDialogBackgroundColourId.

**Rationale**

Previously there was no way to customise the dialog's background colour and the
fixed white colour was inappropriate for most user interfaces.


## Change

>>>>>>> c74b2b1058 (CIDevice: Improve robustness of subscription API)
ProfileHost::enableProfile and ProfileHost::disableProfile have been combined
into a single function, ProfileHost::setProfileEnablement.

**Possible Issues**

Code that calls this function will fail to compile until it is updated.

**Workaround**

To enable a profile, call setProfileEnablement with a positive number of
channels. To disable a profile, call setProfileEnablement with zero channels.

**Rationale**

The new API is simpler, more compact, and more consistent, as it now mirrors
the signature of Device::sendProfileEnablement.


## Change

OpenGLContext::getRenderingScale() has been changed to include the effects of
AffineTransforms on all platforms.

**Possible Issues**

Applications that use OpenGLContext::getRenderingScale() and also have scaling
transformations that affect the context component's size may render incorrectly.

**Workaround**

Adjust rendering code by dividing the reported scale with the user specified
transformation scale, if necessary.

**Rationale**

The previous implementation resulted in inconsistent behaviour between Windows
and the other platforms. The main intended use-case for getRenderingScale() is
to help determine the number of physical pixels covered by the context
component. Since plugin windows will often use AffineTransforms to set up the
correct rendering scale, it makes sense to include these in the result of
getRenderingScale().


## Change

Components that have setMouseClickGrabsKeyboardFocus() set to false will not
accept or propagate keyboard focus to parent components due to a mouse click
event. This is now true even if the mouse click event happens in a child
component with setMouseClickGrabsKeyboardFocus (true) and
setWantsKeyboardFocus (false).

**Possible Issues**

Components that rely on child components propagating keyboard focus from a
mouse click, when those child components have setMouseClickGrabsKeyboardFocus()
set to false, will no longer grab keyboard focus.

**Workaround**

Add a MouseListener to the component receiving the click and override the
mouseDown() method in the listener. In the mouseDown() method call
Component::grabKeyboardFocus() for the component that should be focused.

**Rationale**

The intent of setMouseClickGrabsKeyboardFocus (false) is to reject focus changes
coming from mouse clicks even if the component is otherwise capable of receiving
keyboard focus.

The previous behaviour could result in surprising focus changes when a child
component was clicked. This manifested in the focus seemingly disappearing when
a PopupMenu item added to a component was clicked.


## Change

The NodeID argument to AudioProcessorGraph::addNode() has been changed to take
a std::optional<NodeID>.

**Possible Issues**

The behavior of any code calling AudioProcessorGraph::addNode(), that explicitly
passes a default constructed NodeID or a NodeID constructed with a value of 0,
will change. Previously these values would have been treated as a null value
resulting in the actual NodeID being automatically determined. These will now
be treated as requests for an explicit value.

**Workaround**

Either remove the explicit NodeID argument and rely on the default argument or
pass a std::nullopt instead.

**Rationale**

The previous version prevented users from specifying a NodeID of 0 and resulted
in unexpected behavior.


## Change

The signature of DynamicObject::writeAsJSON() has been changed to accept a
more extensible JSON::FormatOptions argument.

**Possible Issues**

Code that overrides or calls this function will fail to compile.

**Workaround**

Update the signatures of overriding functions. Use FormatOptions::getIndentLevel()
and FormatOptions::getMaxDecimalPlaces() as necessary. To find whether the output
should be multi-line, compare the result of FormatOptions::getSpacing() with
JSON::Spacing::multiLine.

Callers of the function can construct the new argument type using the old
arguments accordingly

```
JSON::FormatOptions{}.withIndentLevel (indentLevel)
.withSpacing (allOnOneLine ? JSON::Spacing::singleLine
: JSON::Spacing::multiLine)
.withMaxDecimalPlaces (maximumDecimalPlaces);
```

**Rationale**

The previous signature made it impossible to add new formatting options. Now,
if we need to add further options in the future, these can be added to the
FormatOptions type, which will not be a breaking change.


# Version 7.0.9

## Change

CachedValue::operator==() will now emit floating point comparison warnings if
CachedValue::operator==() will now emit floating point comparison warnings if
they are enabled for the project.

**Possible Issues**
Expand All @@ -20,7 +268,7 @@ CachedValue::get().

**Rationale**

The JUCE Framework now offers the free-standing exactlyEqual() and
The JUCE Framework now offers the free-standing exactlyEqual() and
approximatelyEqual() functions to clearly express the desired semantics when
comparing floating point values. These functions are intended to eliminate
the ambiguity in code-bases regarding these types. However, when such a value
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ For further help getting started, please refer to the JUCE

### CMake

Version 3.15 or higher is required. To use CMake, you will need to install it,
Version 3.22 or higher is required. To use CMake, you will need to install it,
either from your system package manager or from the [official download
page](https://cmake.org/download/). For comprehensive documentation on JUCE's
CMake API, see the [JUCE CMake documentation](/docs/CMake%20API.md). For
Expand Down
19 changes: 9 additions & 10 deletions docs/CMake API.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## System Requirements

- All project types require CMake 3.15 or higher.
- All project types require CMake 3.22 or higher.
- Android targets are not currently supported.
- WebView2 on Windows via JUCE_USE_WIN_WEBVIEW2 flag in juce_gui_extra is not currently supported.

Expand Down Expand Up @@ -144,11 +144,10 @@ you can configure a Clang-cl build by passing "-T ClangCL" on your configuration
If you wish to use Clang with GNU-like command-line instead, you can pass
`-DCMAKE_CXX_COMPILER=clang++` and `-DCMAKE_C_COMPILER=clang` on your configuration commandline.
clang++ and clang must be on your `PATH` for this to work. Only more recent versions of CMake
support Clang's GNU-like command-line on Windows. CMake 3.12 is not supported, CMake 3.15 has
support, CMake 3.20 or higher is recommended. Note that CMake doesn't seem to automatically link a
runtime library when building in this configuration, but this can be remedied by setting the
`MSVC_RUNTIME_LIBRARY` property. See the [official
documentation](https://cmake.org/cmake/help/v3.15/prop_tgt/MSVC_RUNTIME_LIBRARY.html) of this
support Clang's GNU-like command-line on Windows. Note that CMake doesn't seem to automatically
link a runtime library when building in this configuration, but this can be remedied by setting
the `MSVC_RUNTIME_LIBRARY` property. See the [official
documentation](https://cmake.org/cmake/help/v3.22/prop_tgt/MSVC_RUNTIME_LIBRARY.html) of this
property for usage recommendations.

### A note about compile definitions
Expand All @@ -169,10 +168,10 @@ appropriate:

target_compile_definitions(my_target PUBLIC NAME_OF_KEY=<value>)

The `JucePlugin_PreferredChannelConfig` preprocessor definition for plugins is difficult to specify
in a portable way due to its use of curly braces, which may be misinterpreted in Linux/Mac builds
using the Ninja/Makefile generators. It is recommended to avoid this option altogether, and to use
the newer buses API to specify the desired plugin inputs and outputs.
The `JucePlugin_PreferredChannelConfigurations` preprocessor definition for plugins is difficult to
specify in a portable way due to its use of curly braces, which may be misinterpreted in Linux/Mac
builds using the Ninja/Makefile generators. It is recommended to avoid this option altogether, and
to use the newer buses API to specify the desired plugin inputs and outputs.

## API Reference

Expand Down
Loading
Loading