1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-11 23:54:18 +00:00
Commit graph

9680 commits

Author SHA1 Message Date
reuk
2301f398aa
Fonts: Replace heavyweight leak detector in FTFaceWrapper 2024-06-20 17:52:22 +01:00
Tatsuya Shiozawa
131b838c65
String: Use string length during UTF8 conversion
This implementation is equivalent to JUCE 7.
2024-06-20 17:52:22 +01:00
attila
4828bd886d Fix assertion during Font fallback
Since 4122427748 assertions are guarding
the FontOptions::withName, withStyle and withTypeface member functions.

Since then the only way to replace an existing typeface without hitting
these assertions is to clear all three fields before calling
withTypeface, which then sets all three values. It is always legal to
just clear an existing Typeface and rely on the name and style fields.
2024-06-20 08:45:17 +00:00
reuk
308619fb5f
TextLayout: Fix unused variable warning 2024-06-19 15:06:23 +01:00
attila
453e57bade Add erase() and drop() to Ranges and RangedValues 2024-06-18 15:29:42 +02:00
Anthony Nicholls
4e106a76e8 AudioUnit (host): Prevent a warning from using bitwise operations with different enum types 2024-06-13 16:09:38 +00:00
Anthony Nicholls
29cb346db2 ListenerList: Prevent a data race while clearing the list 2024-06-13 11:22:04 +01:00
reuk
a904aa592f
DocumentWindow: Allow custom titlebar controls to respond to mouse
Prior to this change, the 'options' button in the StandaloneFilterWindow
border did not respond to mouse clicks on Windows.
2024-06-12 19:16:32 +01:00
reuk
473da34dfa
InAppPurchases: Update Android implementation to support GPB 7.0.0
Also updates the Projucer's Android exporter to update Google Play
Billing Library dependency to 7.0.0.
2024-06-12 19:16:32 +01:00
reuk
e5c32e3490
VST3 Host: Refresh parameter info after receiving kParamTitlesChanged 2024-06-12 19:16:31 +01:00
reuk
1d90ea72e7
VST3 Client: Update ParameterInfo default value and numSteps when AudioProcessor changes 2024-06-12 19:16:31 +01:00
reuk
bf384427d1 AU Client: Avoid repetition of function implementations 2024-06-12 11:24:16 +01:00
reuk
a66fd53630 AU Client: Report correct AUChannelInfo for MIDI FX plugins
Previously, MIDI FX would report an input and output channel count of 0.
However, a non-empty output bus is required in order to retrieve the
processing sample rate.

With this change in place, MIDI FX plugins will now report an output
channel count of -1, which indicates that any number of output channels
is valid.
2024-06-12 11:24:16 +01:00
reuk
203934d949 HarfBuzz: Enable atexit to silence some CRT debug memory leak warnings
Before this change, after running a JUCE app on Windows under a
debugger, and quitting it normally (e.g. pressing the close title
button), the output log would display some memory leak diagnostics. This
is because HarfBuzz expects to clean up statics using atexit, but atexit
was not enabled. This change enables atexit on supported platforms,
including Windows.
2024-06-12 11:24:16 +01:00
Tom Poole
05b036272a Fix some Doxygen docstrings 2024-06-12 09:35:32 +01:00
Anthony Nicholls
4808fdce30 CoreAudio: Prevent racing between calls to start and stop a device 2024-06-12 09:35:32 +01:00
attila
2516ad808e WebBrowserComponent: Linux: Add support for libwebkit2gtk-4.1 2024-06-11 20:51:22 +02:00
attila
b5cbdfd980 ResizableWindow: Fix window becoming non-resizable when a constrainer is added
This is fixing a regression in f764026626.
2024-06-11 20:49:56 +02:00
Anthony Nicholls
59e98710f0 AudioUnit (host): Prevent potential out of bounds memory access
Reading or writing the kAudioUnitProperty_AudioChannelLayout property
could result in out-of-bounds reads or writes as AudioChannelLayout
has a variable length array as the last member of the struct
2024-06-11 15:30:06 +00:00
reuk
95b49f668b
AudioChannelSet: Fix typos in comments 2024-06-11 11:34:05 +01:00
reuk
8acd81e587
Direct2D: Allow drawing rects with very small widths/heights 2024-06-11 11:34:05 +01:00
reuk
182dd84e59
Slider: Avoid updating internal Value when old and new values are both NaN
Without this change in place, setting the Value to NaN can cause a stack
overflow because the old and new values always compare unequal, causing
new change notifications to be sent.
2024-06-11 11:34:05 +01:00
reuk
2a264390e8
Direct2D: Update assertion to check for alignment against screen rather than current transform
This assertion is intended to mirror the behaviour of an
informational/performance diagnostic message raised by the D2D debugging
layer.

It seems the D2D diagnostic is raised when the proposed clip region is
aligned to the screen, not to the current transform.

Before this change, the assertion could incorrectly fire when clipping
to transformed rectangles. This could be seen when clicking the
star-shaped buttons in the ComponentTransformsDemo.

With this change in place, the assertion will still fire when e.g.
calling Graphics::reduceClipRegion on a screen-aligned rectangular path,
but will not fire when this path is skewed/rotated etc.
2024-06-11 11:34:04 +01:00
reuk
4122427748
FontOptions: Add some assertions to warn about misuse 2024-06-11 11:34:04 +01:00
reuk
d69dee0f5b
Font: Return correct result from getStringWidth after setting size in points
Previously, code such as the following would return a smaller string
width for larger tracking values:

    juce::Font f { juce::FontOptions{}.withPointHeight (16.0f) };
    const auto g = f.withExtraKerningFactor (1.0f);

    const auto a = f.getStringWidth ("foobar");
    const auto b = g.getStringWidth ("foobar");

With this change applied, the width 'b' is greater than the width 'a',
as expected.
2024-06-11 11:34:04 +01:00
reuk
e8b38b8922
Revert "Windows: Use new window hit-testing API to implement Windows window-management features like Aero Snap"
This reverts commit adc63cecb1.

Reverting this commit is only a temporary measure to facilitate a stable
release of JUCE 8. Further work on this feature will continue on
develop, and will likely be included in a future release of JUCE 8.
2024-06-11 11:34:04 +01:00
reuk
9c192940e0
VST3 Client: Avoid returning kResultNotImplemented from setComponentState
The base implementation of this function does nothing, and returns 'not
implemented'. It is more correct to return 'ok', to indicate that
setting the component state succeeded.
2024-06-11 11:34:04 +01:00
reuk
a42a498f5e
VST3: Add support for new wide/Atmos speaker layouts 2024-06-11 11:34:04 +01:00
reuk
34e454e3f1
AudioChannelSet: Fix formatting 2024-06-11 11:34:04 +01:00
reuk
57c308b685
AudioChannelSet: Add new ITU variants of 9.0.4, 9.1.4, 9.0.6, and 9.1.6 2024-06-11 11:34:04 +01:00
reuk
632bdafab7
VST3 Client: Update moduleinfotool to write compatibility info from plugin
Reintegrates changes from 06a2089872
2024-06-11 11:34:03 +01:00
reuk
ebae624d52
VST3: Update SDK to 3.7.11 2024-06-11 11:34:03 +01:00
attila
17611f74ca Minor code cleanup 2024-06-10 17:51:26 +02:00
attila
c2b461026b Fix shaping for text that uses a single CR for line breaking 2024-06-10 17:51:26 +02:00
Anthony Nicholls
c4d5ffa7ab ListenerList: Add a thread safe ListenerList type 2024-06-07 20:25:39 +01:00
Anthony Nicholls
0dfff1454c ListenerList: Optimise empty listener list 2024-06-07 20:25:39 +01:00
Anthony Nicholls
315167a91a ValueTree: Optimise when listeners don't remove themselves 2024-06-07 20:25:39 +01:00
Oliver James
3988d492ac Core: Move __DATE__ and __TIME__ into a dedicated TU 2024-06-07 09:23:23 +01:00
attila
57d1ad9ca6 Suppress GCC warnings related to the anonymous namespace used around choc::javascript
The warnings are emitted by GCC on Linux, since the commit
dbd3b4f34b.
2024-06-06 13:48:51 +02:00
attila
abdf9a6b75 Add WebView related helper classes for implementing AudioProcessorEditor::getControlParameterIndex 2024-06-06 13:48:51 +02:00
attila
d61e516bbc Add the parameterIndex property to all WebView related parameter ParameterAttachments
This affects the WebSliderParameterAttachment,
WebToggleButtonParameterAttachment, and WebComboBoxParameterAttachment
classes.
2024-06-06 13:48:51 +02:00
attila
0d8b05e8ee WebBrowserComponent: Enable click-through behaviour for WkWebView, add option to disable it
The default is enabled to behave similarly to NSViewComponentPeer. The
behaviour for the old Apple WebView is unchanged.
2024-06-06 13:48:51 +02:00
attila
4d2986ea59 Add new WebBrowserComponent option for file access control on Apple platforms
If allowAccessToEnclosingDirectory is set to true, it is now possible
for the WkWebView implementation to access sibling files relative to a
file specified with the file:// scheme.

This allows an iOS app to load an HTML file in the documents directory,
and that HTML file can reference and load image files inside the HTML
file's parent directory.
2024-06-06 13:48:51 +02:00
reuk
f764026626
ResizableWindow: Disable resizing border for desktop windows 2024-05-31 11:43:30 +01:00
reuk
659de5842f
Direct2D: Fix flickery resizing when using an internal resizer
Resizing using window manager functionality (e.g. clicking and dragging
in the non-client area) will send WM_SIZING to the window, which in turn
will enable continuous repainting in the D2D renderer until the resize
operation ends.

Continuous repainting is required in order for the window to display
correctly during the resize. Without continuous repainting, some frames
may not be completely painted, and may display with black areas,
producing a flickery effect.

When a resize is controlled entirely by the client, e.g. using the
corner resizer in the AudioPluginDemo standalone, WM_SIZING is never
posted. Instead, we assume that if the window has captured the cursor
during a setBounds call then it is probably resizing. We enable
continuous repainting in this case, and stop repainting once the window
releases the mouse.

An alternative appropach would be to add some kind of start/stop resize
API to ComponentPeer. I'm currently reluctant to do that because the
ComponentPeer API is already so large.
2024-05-31 11:43:30 +01:00
reuk
adc63cecb1
Windows: Use new window hit-testing API to implement Windows window-management features like Aero Snap 2024-05-31 11:43:30 +01:00
reuk
bb47c6c99a
ComponentPeer: Fix typo in name of internal windowRepaintedExplicitly enum 2024-05-31 11:43:30 +01:00
reuk
edd5745d7f
DocumentWindow: Implement window hit-testing API 2024-05-31 11:43:30 +01:00
reuk
9a91ae2ab6
Component: Add API for window-control hit-testing 2024-05-31 11:43:30 +01:00
reuk
8a09ac37cb
ResizableWindow: Always set resizable flag, regardless of whether the window has a title bar 2024-05-31 11:43:29 +01:00