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

2561 commits

Author SHA1 Message Date
Tom Poole
acc4b9c6d0 Bump version number to 8.0.12 2025-12-16 08:48:49 +00:00
Tom Poole
ae3b811c50 Bump version number to 8.0.11 2025-12-01 10:21:13 +00:00
reuk
540830506b
MemoryOutputStream: Avoid integer overflow which may result in incorrect size after expansion 2025-11-26 10:32:20 +00:00
Anthony Nicholls
a4e03bdad1 CharPointer: Fix a crash in the UTF32 unit tests
In a recent version of Xcode (26.1) release builds would crash the
unittest runner during any tests using a std::vector<char32_t> where
its data was reinterpreted as const CharPointer_UTF32::CharType*.
Similar attempts were made to update the UTF8 a UTF16 tests,
unfortunately avoiding a reinterpret_cast for UTF16 isn't as easy
because CharPointer_UTF16 uses a signed integer type which makes the
test data more awkward to work with.
2025-11-20 17:43:41 +00:00
reuk
f0560cefbb
String: Fix mangled decoding of UTF-16 strings containing surrogate pairs in createStringFromData() 2025-11-19 20:01:17 +00:00
reuk
9715b901a8
OutputStream: Fix implementation of writeText when converting to UTF-16 2025-11-19 10:32:59 +00:00
reuk
8b77aca786
CharPointer_UTF16: Make behaviour consistent when iterating through unpaired surrogates
There's a few things going on in this commit:

- The implementation of CharPointer_UTF16 now uses helpers from
  CharacterFunctions to avoid a few instances of magic numbers.
- Where it makes sense, member functions of that class have been DRYed
  by e.g. implementing getAndAdvance in terms of operator*() and
  operator++().
- Added more tests for incrementing/decrementing/dereferencing
  CharPointer_UTF16.

After this change, a CharPointer_UTF16 that points to an unpaired
surrogate will always dereference to a 32-bit character with that
surrogate's value.

Note that dereferencing a CharPointer_UTF16 that points to a high
surrogate at the final code unit in a memory region is inherently
unsafe, because CharPointer_UTF16 can't track its own size, and the
dereference operation will check the following code unit to see whether
it is a low surrogate.
2025-11-18 18:54:47 +00:00
reuk
c514c95797
ScopedValueSetter: Make nodiscard 2025-11-18 15:47:42 +00:00
reuk
e465b71188
Docs: Update language to be more diplomatic 2025-11-18 15:47:42 +00:00
reuk
83e5264c86
Formatting: Remove double-dots from comments and other strings 2025-11-18 15:47:42 +00:00
Oli
2da6a5fb62 SystemStats (Linux): Fix locale clobbering
This fixes a bug where the wrong locale was being restored when querying locale 
information.
2025-10-28 11:58:54 +00:00
reuk
7aa7f49a8c
LruCache: Add workaround for GCC 15.2 bug 2025-10-20 17:34:48 +01:00
Anthony Nicholls
4212720f7d Time: Add support for variable number of millisecond digits in ISO8601 format 2025-10-16 16:55:44 +01:00
Anthony Nicholls
ea37e71f87 Time: Add assertions for issues parsing an ISO8601 formatted string 2025-10-16 16:55:44 +01:00
Tom Poole
be58c6de30 AbstractFifo: Improve docs 2025-10-13 12:07:00 +01:00
Anthony Nicholls
28880fcee9 macOS: Fix an issue in detecting the correct API level available
This may be due to a bug in the macOS SDK but the user facing
versions of these preprocessor definitions are returning the
incorrect details for at least the macOS 26 SDK
2025-09-30 16:33:02 +01:00
Anthony Nicholls
667b3fae86 LruCache: Make the LRU cache implementation thread safe 2025-09-25 14:56:34 +01:00
Anthony Nicholls
d0aa6d0486 iOS and macOS: Use consistent capitalisation with @available syntax 2025-09-25 14:56:34 +01:00
Anthony Nicholls
e68627c9ed Smart Pointers: Add a new enum for indicating if a smart point should increment a reference count or not 2025-09-25 14:56:34 +01:00
Tom Poole
8931d45fe9 Docs: Generate Doxygen output for static functions 2025-09-25 12:32:48 +01:00
reuk
0ad77e3394
Docs: Fix typo in juce_Serialisation.h 2025-09-22 11:01:03 +01:00
Tom Poole
99b552da39 OptionsHelpers: Add a missing juce namespace 2025-09-18 13:36:58 +01:00
reuk
50b51f512a
juce_audio_processors_headless: Remove juce_graphics dependency 2025-09-17 12:50:08 +01:00
reuk
2e5ecceea8
JNIHelpers: Add a mechanism for loading optional JNI classes 2025-09-17 12:50:06 +01:00
reuk
3d8a97c1c1
Android: Update bytecode minimum version requirements 2025-09-17 12:50:06 +01:00
reuk
f9fc03eb2b
juce_core: Update instructions for generating Java bytecode with new tools 2025-09-17 12:50:06 +01:00
reuk
51e5820cd3
FunctionNotificationCenterObserver: Move to ObjCHelpers header
This type will be used to monitor UMP endpoint changes in an upcoming
commit.
2025-09-17 12:50:06 +01:00
reuk
1f4cc7bbb1
ObjCClass: Remove virtual destructor and add move operations
ObjCClass doesn't have other virtual methods; it is not intended to be
used as an interface or dynamic type. Removing the virtual destructor
is intended to promote composition over inheritance when using this
type.
2025-09-17 12:50:05 +01:00
reuk
1b401b9c0a
StringArray: Add nodiscard 2025-09-17 12:50:05 +01:00
reuk
9a7ac1f743
Bela: Drop support 2025-09-17 12:50:05 +01:00
reuk
d64b9e7782
JNI: Add WeakGlobalRef helper type 2025-09-17 12:50:05 +01:00
reuk
8ce1f19bf0
JNI: Tidying 2025-09-17 12:50:05 +01:00
Tom Poole
360dfe5f3d Bump version number to 8.0.10 2025-09-15 09:30:11 +01:00
Tom Poole
cb9ec7e38f Bump version number to 8.0.9 2025-09-01 14:44:25 +01:00
Oli
ceaa708042 Core: Use correct "debug break" intrinsic for Windows-ARM64-ClangCL 2025-08-26 16:43:46 +01:00
Anthony Nicholls
5b4fca7bd0 String: Fix a bug in calculating the number of significant digits for exact powers of 10 2025-08-13 13:11:36 +01:00
reuk
be8a5f72cc
Android: Add new ActivityLifecycleCallbacks base class 2025-07-29 15:04:15 +01:00
reuk
c34208b3b0
Android: Fix formatting in JuceInvocationHandler.java 2025-07-29 15:04:15 +01:00
reuk
1c2eb2d056
Android: Refactor lifecycle callbacks to reduce repetition in lifecycle listener registration 2025-07-29 15:04:15 +01:00
reuk
1e1e5036fb
Android: Fix bug where system bars could incorrectly become opaque after adding/removing desktop components
This bug could be observed in the DemoRunner:
- Enable "button" navigation mode (as opposed to "gesture" mode) on the
  Android device.
- Remove the line enabling kiosk mode, build and install the DemoRunner.
- Run the app and navigate to the Settings pane. Open a menu, or the
  bluetooth MIDI dialog window, then close the popup window.
- Rotate the device.

Previously, the steps above could result in the system painting its own
backgrounds behind the system bars. With this patch in place, we reset
the requested system UI colours and transparency, which seems to
maintain the desired appearance.
2025-07-22 15:18:12 +01:00
Anthony Nicholls
36d07a6ce3 Docs: Replace doxygen preprocessor conditionals with @cond and @endconds 2025-07-21 18:11:43 +02:00
Sudara
30b62cc6be Docs: Hide noisy/excessive doxygen references to jassert/jassertfalse 2025-07-21 18:11:43 +02:00
Sudara
67265f7b98 Docs: Remove dozens of internal JUCE_EACH macros from muddying up doxygen 2025-07-21 18:11:43 +02:00
Anthony Nicholls
59612477bb UnitTest: Add a way to get and run tests by name 2025-07-14 16:50:08 +01:00
Anthony Nicholls
51b46f3cd1 NewLine: Add support for strings appearing on the opposite side of the plus operator 2025-07-14 16:50:08 +01:00
Anthony Nicholls
4ed15dbc9e Time: Prevent errors calculating the UTC offset
Errors might occur on or near epoch or a transition to summer time.
2025-07-11 16:41:01 +01:00
reuk
5298225ee7
Android: Set fullscreen peers as content views, instead of floating windows
This is intended to fix an issue when running Android 33 or 34 in desktop/windowing mode.
2025-07-09 11:30:28 +01:00
reuk
21b0cd4663
Network: Fix potential deadlock in macOS WebInputStream
Regarding didComplete():

When a WebInputStream is destroyed, the thread of execution will wait in
SharedSession::removeTask() until the task is no longer present in the
list of all active tasks. If multiple threads are all waiting in
removeTask(), then all of those threads should wake when the set of
active tasks changes. Waking only a single thread may result in
deadlocks, as that thread's task may not have completed successfully.
Then, the thread that woke up will be forced to sleep again and may not
get another chance to wake.

Regarding didBecomeInvalid():

Normally, didBecomeInvalid() will only be called after the
SharedSession's destructor. If the destructor is running, we may assume
that no other thread can access the SharedSession, so using notify_one()
in didBecomeInvalid() should be sufficient to wake up the destructor's
thread. However, there's a chance that the NSURLSession may be
invalidated unexpectedly (i.e. before the SharedSession's destructor
runs), in which case there may still be threads waiting in removeTask().
In this scenario we need to notify_all() so that all waiting threads are
able to wake and make progress.
2025-06-30 19:46:19 +01:00
reuk
b8e0146a3c
Network: Make Linux networking code robust against user headers that already end with CRLF 2025-06-19 14:45:30 +01:00
reuk
58fabf3a8f
XmlElement: Add new API to allow iterating over attributes 2025-06-19 14:45:30 +01:00