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

15579 commits

Author SHA1 Message Date
reuk
d0167d8e3e VST3 Client: Silence memcpy warning 2025-09-09 13:50:38 +01:00
reuk
e27183e044 LV2: Add clang-tidy warning suppression comments 2025-09-09 13:33:34 +01:00
reuk
0788df388b VSTMidiEventList: Silence clang-analyzer OOB read warning 2025-09-09 13:20:20 +01:00
reuk
641497918c
Direct2D: Always call SetTransform for gradient/image brushes
This partly reverts commit ad28684b10.
Prior to that change, getBrush() would always end up calling
SetTransform on gradient/image brushes. This is important because, when
drawing text, we combine the current brush transform with the text
transform. If we don't reset the brush transform each time, these
transforms end up accumulating across frames.
2025-09-09 11:32:00 +01:00
reuk
17df2b8037
VST3 Client: Fix defaulted preprocessor definition in manifest helper target 2025-09-08 13:29:12 +01:00
reuk
aa9b593473
JUCEUtils: Fix target name in generator expressions 2025-09-08 13:28:05 +01:00
reuk
5d00156491
Remove unnecessary virtual keywords in final classes 2025-09-08 12:01:53 +01:00
reuk
5a02f5231d
SimpleShapedText: Silence conversion warning 2025-09-08 11:54:30 +01:00
reuk
45a19830b5
Projucer: Add check for invalid file in NewFileWizard 2025-09-08 10:30:30 +01:00
reuk
bc3c171c9d
AudioBuffer: Avoid unnecessary allocations when reassigning referenced channels 2025-09-04 15:01:20 +01:00
reuk
848082095f
VST3 Client: Additionally call setIComponentHandler when the handler is set on the edit controller 2025-09-02 13:56:12 +01:00
reuk
7bc7dff6f6
iOS: Fix screen size detection in plugins
initWithWindowScene appears to create a window with no area if the
provided scene is null. As a fallback, creating a window without an
associated scene still returns usable bounds.
2025-09-02 13:46:01 +01:00
reuk
7a2d7ad013
Slider: Fix typo in docs 2025-09-01 23:33:43 +01:00
reuk
fdaf71b50f
PopupMenu: Fix some issues with positioning of initially-visible items
The old implementation had a few problems:

- For a target area near but not touching the bottom of the parent area,
  and a long menu with an initially-visible item halfway through the
  list, the initially-visible item would sometimes be obscured by the
  scroller area. The new implementation adjusts the size of the menu to
  ensure that there's enough additional room for the scroller areas.
- For a target area at the very top or very bottom of the target area,
  the menu would be positioned inconsistently; sometimes it would
  overlap with the target area, but other times it would be positioned
  with a gap separating the menu and target area. In the new
  implementation, if there's not enough room for scrollers to be
  positioned above/below the target area, the menu will always be
  positioned so that it touches but does not overlap the target area.
- The initially-selected item would normally be
  positioned as close as possible to the target area, but this wasn't
  always applied consistently for long menus, and the menu would
  sometimes only be scrolled enough to make the item visible at the end
  of the menu furthest from the target area. In the new implementation,
  the initially-visible item will always be positioned on top of the
  target area, or adjacent to it, depending on the available space.
2025-09-01 23:33:43 +01:00
reuk
d929adc9e8
PopupMenu: Change argument type to optional
Negative wantedY arguments are valid, so we need to be able to
differentiate between an unspecified argument and a
specified-but-negative argument.
2025-09-01 23:33:43 +01:00
reuk
78a93157de
PopupMenu: Remove unused function argument 2025-09-01 23:33:43 +01:00
reuk
edfa87801c
PopupMenu: Extract implementation of ensureItemComponentIsVisible into static function
This makes it a bit easier to see exactly which PopupMenu state is used
during the calculation, and enforces that no menu state is modified
during the call.
2025-09-01 23:33:43 +01:00
reuk
90abc8c1c5
PopupMenu: Clarify behaviour of withItemThatMustBeVisible() in docs 2025-09-01 23:33:42 +01:00
reuk
d2cb90cded
PopupMenu: Simplify expressions in ensureItemComponentIsVisible() 2025-09-01 23:33:42 +01:00
reuk
41a6ed37e4
PopupMenu: Use early return in ensureItemComponentIsVisible() 2025-09-01 23:33:42 +01:00
reuk
9b226f93f4
PopupMenu: Replace raw loop with find_if 2025-09-01 23:33:42 +01:00
reuk
33a735dfd8
Android: Avoid restarting activities on system-wide theme change 2025-09-01 15:51:30 +01:00
Tom Poole
f72bad64d2 JUCE version 8.0.9 2025-09-01 14:50:10 +01:00
Anthony Nicholls
1eec73cab3 VST3: Add flag for ignoring parameter migration warning to the module header 2025-09-01 14:49:38 +01:00
Tom Poole
d107f3ae40 Resave all projects 2025-09-01 14:48:34 +01:00
Tom Poole
cb9ec7e38f Bump version number to 8.0.9 2025-09-01 14:44:25 +01:00
reuk
a37b35ad15
D2D: Avoid crashing when attempting to create a vblank dispatcher on a headless system 2025-08-27 18:09:23 +01:00
reuk
9be03bc99e
Android Oboe: Reopen streams correctly after device disconnection
Even if the output stream is the only one receiving callbacks, it's
possible that the input device got disconnected, in which case we'll
still need to recreate both streams.
2025-08-27 16:57:17 +01:00
reuk
6473deb155
PluginListComponent: Fix potential use-after-free on modal component dismiss 2025-08-27 16:57:17 +01:00
reuk
f9b70f1d39
LV2 Host: Fix leak of plugin classes when scanning plugins multiple times 2025-08-27 16:57:17 +01:00
reuk
eef9183fad
LV2 Host: Fix leak of LV2 path when calling lilv_world_set_option multiple times 2025-08-27 14:56:42 +01:00
Oli
1843554ad8 DSP: Don't include neon headers for Windows-ARM64-ClangCL 2025-08-26 18:11:18 +01:00
Oli
ceaa708042 Core: Use correct "debug break" intrinsic for Windows-ARM64-ClangCL 2025-08-26 16:43:46 +01:00
reuk
ac89007949
ARA Host: Fix build
The build got broken in f3d7c74ea1 - the
ARAVST3.h include is needed for both hosts and clients.
2025-08-21 17:42:59 +01:00
Oli
4263efb96a Jpeg: Disable "extern C" in jpeglib.h 2025-08-20 09:51:28 +01:00
attila
ad28684b10 Tidying: Remove unused code 2025-08-19 16:51:15 +01:00
attila
35fe3ac714 Direct2D: Fix gradient fill when the brush is transformed with not just translation
The code contains a performance optimisation for cases where the world
transform is translation only. In this case instead of applying the
brush transformation first and then the world translation, the order is
reversed. The translation is applied first and then the brush
transformation.

Flipping the transformations however is only correct in the special case
when both transformations are translation only.
2025-08-19 16:51:15 +01:00
attila
bb5a9cbac9 Direct2D: Fix wrong brush transform calculation
This change is practically a no-op, because if the affected branch is
taken, then the world transform was not applied, so transform is a
unity matrix. But if transform was non-unity, then the wrong ordering
would cause an observable error.

Logically the brush transformation is nested inside the world
transformation so the right order is applying the brush transform first
followed by the world transform.
2025-08-19 16:51:15 +01:00
Oli
270063ac31 Projucer: (MSVC) Emit message on plugin install location and config error 2025-08-18 16:00:00 +01:00
Oli
cb698566e8 Projucer: (MSVC) Add missing Unity binary location property 2025-08-18 16:00:00 +01:00
reuk
b9a0dd4b56
CMake: Fix juce_vst3_helper target check 2025-08-14 17:08:25 +01:00
reuk
ccdc9d6779
AudioProcessor: Remove friendship with AudioProcessorParameter 2025-08-14 14:14:47 +01:00
reuk
da8150bb58
AudioProcessorParameter: Break dependency cycle with AudioProcessor 2025-08-14 14:14:47 +01:00
reuk
96ff7a0dcb
AudioProcessor: Move getDefaultNumParameterSteps() to AudioProcessorParameter 2025-08-14 14:14:47 +01:00
reuk
476f09f2c9
AudioProcessorParameter: Remove friendship with unrelated types 2025-08-14 14:14:47 +01:00
reuk
edd274f18e
AudioProcessorListener: Move impl to dedicated file 2025-08-14 14:14:47 +01:00
reuk
1623b63889
AudioProcessorParameter: Move impl to dedicated file 2025-08-14 14:14:47 +01:00
reuk
90b948dffd
AudioProcessor: Remove deprecated functions 2025-08-14 14:14:47 +01:00
reuk
5eba9a6434
OpenGL: Clear bound texture after rendering transparency layer
A change introduced in 00836d1e94 meant
that GL renderers could sometimes assert in
StateHelpers::ActiveTextures::bindTexture() when ending a transparency
layer.

Specifically, the issue was provoked by adding the ScopedTextureBinding
in the constructor of OpenGLFrameBuffer. This reset the bound texture
after creating a new transparency layer.

I think the previous implementation worked by accident, not by design.
It so happens that when rendering multiple transparency layers within
the same frame (i.e. calling begin/end several times in that order,
*not* nesting the calls), the same texture ID will generally get reused.

From the graphics context's (GC's) perspective, we create a texture with
ID "2", then call bindTexture() to bind it, and the GC remembers that
this ID is bound. We draw the frame, and the texture gets destroyed. The
call to glDeleteTextures() will cause the default texture, "0", to be
bound if the texture being destroyed is bound at the point of
destruction. So, after the texture is destroyed, the GC's stored binding
no longer reflects reality, since texture "0" is now bound.

The next time we create a texture, that texture also gets created with
ID "2". Previously, we would leave this texture bound after
construction, but now we re-bind the previously-bound texture, "0". This
causes the assertion in bindTexture() to fire when we next attempt to
bind texture "2", since the actual bound texture is "0".

The solution added in this patch will bind texture "0" when the
transparency layer image is destroyed, in order to keep the GC's view of
the GL context consistent with the real state.
2025-08-14 14:13:09 +01:00
reuk
2712f63628
Graphics: Use unique_ptr instead of raw pointers in RenderingHelpers 2025-08-14 14:13:09 +01:00