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

10146 commits

Author SHA1 Message Date
Oliver James
9c8a2b9609 OpenGL (Windows): Only trigger async update after first buffer swap
This fixes an issue where OpenGL would continuously repaint on Windows.
2025-02-11 10:43:17 +00:00
reuk
70652e3d23
AudioProcessor: Use new MessageManager::callSync 2025-02-06 18:22:33 +00:00
reuk
95d416ab77
DropShadow: Draw shadows for paths at correct scale to avoid stretching the blurred bitmap 2025-02-06 18:22:33 +00:00
reuk
09b10428ec
CoreGraphics: Remove CoreImage implementations for desaturation and transparency 2025-02-06 18:22:33 +00:00
reuk
c46bcb677e
CoreGraphics: Remove CoreImage single-channel blur implementation
The CoreImage blur implementation is often significantly slower than
the old software blur in common scenarios such as rendering shadows.
2025-02-06 18:22:33 +00:00
reuk
95610e6c5e
Component: Add more stringent checks for deleted components when handling mouse events 2025-02-06 18:22:32 +00:00
attila
49b6dfb7c8 Fix 0 file descriptor handling on POSIX systems 2025-02-06 12:12:15 +01:00
reuk
da09b99bbf
MessageManager: Add callSync counterpart to callAsync 2025-02-05 10:59:51 +00:00
reuk
29cf6ecf04
MessageManager: Update callAsync to take an arbitrary callable instead of a function 2025-02-04 13:15:44 +00:00
reuk
19edd53842
EdgeTable: Fix issue where edges of paths could be anti-aliased incorrectly at edges of clip regions 2025-02-03 19:16:46 +00:00
reuk
56ea531298
CoreGraphics: Fix bug where subsection images were rendered incorrectly 2025-02-03 13:56:31 +00:00
reuk
a381fdf81d
Font: Allow overriding typeface ascent and descent metrics 2025-01-29 13:36:28 +00:00
reuk
f12d29899c
Direct2D: Remove SetDpi call in startFrame
Previously, plugins and standalone apps could produce slightly different
visual results, particularly anti-aliasing, when displaying on a display
with native scaling applied. The discrepancy was caused by SetDpi being
called with a larger-than-default value (e.g. 192 DPI on a 200% scaled
display) in a standalone app, whereas SetDpi would always be called with
the default value of 96 in a plugin.

Keeping the default value seems to produce better results, so standalone
apps will now retain the default DPI.
2025-01-29 11:00:44 +00:00
reuk
183c327e75
Windowing: Fix mouse position in client area for maximised windows with non-native titlebar
The incorrect mouse coordinates could be observed by hovering over
widgets such as buttons in a maximised window using a non-native
titlebar.
2025-01-29 11:00:44 +00:00
reuk
c3e8b6bff3
CoreGraphics: Use Image NativeExtensions to avoid dynamic casts in graphics context 2025-01-23 12:21:33 +00:00
reuk
d3ca5961e7
Direct2D: Use Image NativeExtensions to avoid dynamic casts in graphics context 2025-01-23 12:21:33 +00:00
reuk
9b08c8fd51
Image: Add NativeExtensions type to help with inspecting images from graphics context implementations
This type isn't used anywhere in this commit, but this change lays the
foundation for the following commits.
2025-01-23 12:21:33 +00:00
reuk
55e5e2082c
Image: Add new backup-extensions interface to support images with no main-memory backup 2025-01-23 12:21:33 +00:00
reuk
2fbb72d960
OpenGLFrameBufferImage: Refactor and simplify BitmapData releaser 2025-01-23 12:21:33 +00:00
reuk
ada2c88b03
ImagePixelData: Update signatures of functions providing whole-image effects 2025-01-23 12:21:33 +00:00
reuk
8cb8c5e572
Image: Add new BitmapData constructor accepting a Rectangle 2025-01-23 12:20:27 +00:00
reuk
01821b5811
OpenGLFrameBuffer: Fix writePixels implementation, which previously blended instead of replacing existing pixels 2025-01-23 12:20:27 +00:00
reuk
5f7d6d70fc
Direct2DContext: Remove unnecessary public constants 2025-01-23 12:20:27 +00:00
reuk
2d01e326db
ObjCHelpers: Rename makeCGRect from makeNSRect 2025-01-23 12:20:27 +00:00
attila
90e72dbd98 Windows: Fix faulty mechanism for creating multiple WebView2 instances serially
Prior to this commit it was possible for the WebBrowserComponent
implementation on Windows to end up in an infinite loop if multiple
WebBrowserComponent objects were being created at the same time.

When an instance was already being created, the createWebView() call for
the second would place it in a queue and return without initiating its
creation. When the first WebView finishes creation, it calls the
handleAsyncUpdate() function of the second. However handleAsyncUdpate()
would see that the webViewBeingCreated helper variable was already true
and not call createWebView(), hence the second WebView would never be
created.

If, in the meantime, the scriptsWaitingForExecution variable wasn't
empty, handleAsyncUpdate() would endlessly call triggerAsyncUpdate().
2025-01-17 16:29:42 +01:00
reuk
612c50f4a4
Windowing: Store originator component when initiating a mouse drag
Before this change, when starting a mouse drag from a nested view such
as a webview, JUCE was unable to automatically determine which component
is associated with the drag.

Instead of relying on automatic detection, users can pass the
"sourceComponent" argument when initiating a drag to specify the parent
view that should receive associated drag events. However, previously the
sourceComponent was only used to find the view associated with the
mouse-down, but not the mouse-up. Automatic detection was always used
for the mouse-up, but this could fail in the case of a drag started from
a nested view.

Now, the drag event source will store a weak reference to the source
component provided by the user, and use the same component for both
mouse-down and mouse-up events.
2025-01-13 16:56:42 +00:00
reuk
08fcb744cc
JACK: Fix missing-prototype and unused-function warnings emitted by clang
Co-authored-by: Pierre Guillot <guillotpierre6@gmail.com>
2025-01-13 15:27:00 +00:00
tpoole
0baffff182 Bump version number to 8.0.6 2025-01-10 09:29:00 +00:00
tpoole
7e8b2b25ae Docs: Add some missing Doxygen markup 2025-01-10 09:25:04 +00:00
tpoole
902ddc7567 Bump version number to 8.0.5 2025-01-08 14:23:21 +00:00
attila
d73b1768a7 Fall back to default sans serif font if resolution would fail otherwise
This restores the JUCE 7 behaviour when the JUCE 8 font fallback
mechanism fails to resolve a non-null Typeface::Ptr. This behaviour is
significant when the base font specified is not available on the system.
2025-01-07 17:29:43 +01:00
attila
ba61c9edb9 Fix crash when no valid Typeface::Ptr can be resolved 2025-01-07 17:29:43 +01:00
reuk
8be78e9f7f
WebBrowserComponent: Avoid nullptr dereference when WebView2 loader library is not present 2025-01-07 11:21:14 +00:00
reuk
9092182605
WebBrowserComponent: Fix leak on Windows
Co-authored-by: Aid Vllasaliu <vllasaliu.aid@gmail.com>
2025-01-07 11:21:05 +00:00
Oliver James
f72cf8ff14
WebBrowserComponent (macOS): Catch use after free async callback bug 2025-01-07 11:19:56 +00:00
Oliver James
cafe62dd88 SystemStats (macOS): Add macOS 15 (Sequoia) enum 2025-01-06 11:52:55 +00:00
Oliver James
7145356583 AudioProcessor: Update getNameForMidiNoteNumber docs for note ranges 2024-12-27 12:24:18 +00:00
reuk
29e6bee01f
OpenGL: Fix mouse-move handling for OpenGL views
Since b108fe26c3, JUCE NSViews have
ignored mouse movements for child views. However, this causes issues for
OpenGL views, which still expect to receive mouse input via the parent
view. This fix makes the inner OpenGL view effectively invisible to the
mouse, so all mouse events are handled by the owning JUCE view.
2024-12-19 22:58:33 +00:00
reuk
0aafcdbb4c
OpenGL: Adjust formatting to reduce line lengths 2024-12-19 22:57:36 +00:00
Oliver James
98e21c6ad8 PopupMenu: Move section header size calculation into LookAndFeel methods.
This fixes a bug introduced in the previous commit that caused all menu items to be sized too large.
2024-12-19 21:51:40 +00:00
Oliver James
e360d83057 PopupMenu: Move IdealSize modifiers to LookAndFeel 2024-12-19 14:00:23 +00:00
Oliver James
9b959bd223 AudioProcessor: Use std::optional in TrackProperties 2024-12-19 13:36:35 +00:00
Oliver James
96e4ba06af AudioProcessor: Add VST2/VST3 midi note name support
Co-authored-by: Roland Rabien <roland@rabien.com>
2024-12-19 10:15:34 +00:00
Anthony Nicholls
ad3457434e SimpleShapedText: Prevent running tests when no default typefaces can be found 2024-12-18 17:55:27 +00:00
Anthony Nicholls
7a1f397de6 Fonts (Linux): Return a null typeface when no default typefaces can be found 2024-12-18 16:00:44 +00:00
tpoole
df14e83838 Image: Remove an unused function 2024-12-18 13:04:27 +00:00
attila
9dd8a2af13 Fix SimpleShapedText::getTextRange() when the input text contains hard breaks
The issue prior to this commit would be observable when using the
GlyphArrangement functions e.g. addFittedText.

This is a fix for a regression introduced in
9223805b9c.
2024-12-17 18:27:30 +01:00
reuk
52beda1396 ImagePixelData: Speed up format conversions by hoisting switch statements out of tight loops 2024-12-13 14:49:46 +00:00
reuk
d3d7d4c89c VBlank: If previous frame is still in progress, wait until next frame to trigger a new vblank
Previously, the vblank's thread loop would block on each iteration until
the current async callback had finished, at which point a new async
callback would be immediately triggered.

The new implementation only waits on the vblank event. If a vblank
callback is still in progress the next time the vblank event is
signalled, we assume the last frame is overrunning and avoid sending a
new async update.

The intention of this change is to avoid saturating the message thread
with expensive vblank callbacks. It's also nice to remove a lock,
although that's just an incidental change.
2024-12-13 14:49:46 +00:00
reuk
f887979ec0 Direct2D: Fix performance issue when drawing transformed unclipped regions
This issue could be observed in the GraphicsDemo's SVG pane, when the
"rotation" option was enabled.

Drawables internally enable the unclipped painting flag, which normally
prevents slow clipping when drawing subcomponents of the drawable.

The Direct2D graphics context was using the frame area as the default
area, used to signal that no clipping should be applied. However, when
non-axis-aligned transform was active, this area was incorrectly applied
as a geometric clipping region. D2D geometric clips are relatively slow,
so this caused large slowdowns.

This solution adds a flag that is set whenever a clip is explicitly
requested. If no clip is explicitly requested, then clipping will be
entirely bypassed. This can make rendering of Drawables significantly
faster.
2024-12-13 14:49:46 +00:00