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

56 commits

Author SHA1 Message Date
reuk
83e5264c86
Formatting: Remove double-dots from comments and other strings 2025-11-18 15:47:42 +00:00
Anthony Nicholls
36d07a6ce3 Docs: Replace doxygen preprocessor conditionals with @cond and @endconds 2025-07-21 18:11:43 +02: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
Tom Poole
94d98a2b10 Update licensing information 2024-04-16 11:39:35 +01:00
reuk
d47a7d18c1
MessageManager::Lock: Protect Lock from concurrent accesses
Previously, the Lock was not thread-safe when multiple threads were
locking/unlocking a single Lock instance simultaneously. This
isn't normally a problem when using the MessageManagerLock type, because
each MessageManagerLock contains its own private MessageManager::Lock,
and it's not possible for multiple threads to modify that private lock.

This change improves safety when using a MessageManager::Lock in the
manner of a CriticalSection or other JUCE lock type.
2023-08-23 11:14:33 +01:00
reuk
33e81616ad
MessageManager: Improve thread safety of Lock type
Previously, the following sequence of events was possible:

Background thread                   Main thread
------------------------------------------------------------------------
Lock::tryAcquire()
    Run to blockingMessage->post()

                                    BlockingMessage::messageCallback()
                                        Run to abortWait.set (1)

Lock::tryAcquire()
    Exit through return true

Lock::~Lock()
    Destroy memory used for Lock

                                    BlockingMessage::messageCallback()
                                        Execute lockedEvent.signal()
                                        Memory already freed, crash
2023-05-02 19:37:47 +01:00
attila
d246cc280d MessageManager: Add mutex to isThisTheMessageThread() and setCurrentThreadAsMessageThread() 2022-07-14 19:18:27 +00:00
Tom Poole
dea3fe60e4 Update copyright banners 2022-04-04 12:36:32 +01:00
ed
fc0f6b1f2f Tidy up 2021-12-02 09:24:55 +00:00
Tom Poole
fe4ba9071b Set the default value of JUCE_MODAL_LOOPS_PERMITTED to 0
See BREAKING-CHANGES.txt for more details.
2021-06-30 13:01:14 +01:00
ed
11d872ea1b MessageMananger: Made dispatchNextMessageOnSystemQueue() accessible by internal code 2021-04-13 16:25:04 +01:00
ed
2bfed0b354 Removed some unnecessary JUCE_MODULE_AVAILABLE_* checks 2020-05-22 16:46:52 +01:00
Tom Poole
894e7d2bd2 Updated all license headers 2020-04-23 17:30:39 +01:00
ed
a54da0b832 Fixed some more typos 2020-01-07 08:53:23 +00:00
reuk
c80285463a MessageManager: Obey the rule of useful return in callAsync 2019-08-30 17:13:21 +01:00
jules
0367d5c3a9 Added some PopupMenu::addItem overloads which let you attach a lambda callback to be invoked for a menu item. 2019-06-19 11:39:28 +01:00
Tom Poole
ff1dbf5f6d Added a missing JUCE_API 2019-03-19 12:55:21 +00:00
reuk
4a294eaa39 Allow moving into AsyncCallInvoker 2019-03-06 17:48:47 +00:00
ed
a234721110 Added various clang-tidy modernize-* fixes 2019-01-31 15:15:31 +00:00
jules
cadac817c6 Enabled some more warning flags in Xcode, and fixed the problems they caused 2019-01-11 09:52:10 +00:00
jules
5979288706 Added some macros for asserting when functions are called in an unsafe manner outside the message thread. 2018-10-16 17:39:54 +01:00
jules
87042769b6 Tidied up some more old typedefs 2018-05-11 14:44:51 +01:00
jules
dee78f29f6 Misc cleanups and modernisation 2018-05-11 12:46:30 +01:00
jules
38295f332b Converted some old typedefs to using declarations 2018-05-03 09:59:05 +01:00
Tom Poole
ab863a6dc2 Replaced all usage of ScopedPointer with std::unique_ptr 2018-04-19 20:27:47 +01:00
ed
cdbc28c18b Add documentation tags 2018-03-15 12:10:32 +00:00
Tom Poole
8cecf0baf9 Assorted threading and undefined behaviour fixes 2017-12-11 16:37:17 +00:00
hogliux
b9b34393d1 Improved scheduling when multiple threads are fighting for the MessageManagerLock 2017-10-19 12:55:37 +01:00
jules
970eda679e Added 'final' keyword to a lot of classes from which you really shouldn't be inheriting! 2017-10-09 12:38:06 +01:00
jules
eda613c6db Moved all "namespace juce" declarations from module headers to the individual .h and .cpp source files. This makes life a lot easier for Intellisense and other IDE autocompletion tools 2017-09-08 08:59:55 +01:00
hogliux
b5afccc37c Updated file headers and the README with the JUCE 5 license 2017-04-27 14:43:04 +01:00
tpoole
23ba2e49cf Fixed VS2013 assignment operator compiler warnings 2017-04-20 12:24:49 +01:00
jules
60e9231fb1 Removed need for std::function in order to use MessageManager::callAsync(). Used it to modernise a few bits of old code. 2017-03-29 15:31:41 +01:00
hogliux
42305de6da Added method OpenGLContext::executeOnGLThread to help executing gl house-keeping tasks on the gl thread even when the message manager is locked 2017-02-14 20:20:32 +00:00
hogliux
2da1bc5f41 Replace include guards with "#pragma once" 2017-02-01 17:18:07 +00:00
tpoole
2e84129479 Updated the juce_audio_basics, juce_audio_devices, juce_blocks_basics, juce_core and juce_events modules to a new ISC license 2016-12-14 10:07:26 +00:00
jules
2a1234b6ac Simplified some inter-module dependencies and exception-catching fallbacks 2015-12-23 11:47:18 +00:00
jules
82b0a3628b Added some comments regarding MessageManagerLocks 2015-12-14 09:48:25 +00:00
jules
02492b36b9 Lots of small whitespace tweaks. 2015-12-13 19:32:05 +00:00
hogliux
c7b8e77031 Update copyright notice 2015-07-22 15:59:34 +01:00
jules
89854c55b9 Added flag JUCE_COMPILER_SUPPORTS_LAMBDAS 2014-10-08 11:26:55 +01:00
jules
df3e039bf9 Added a handy static method MessageManager::callAsync() which can asynchronously invoke a lambda on the message thread. 2014-10-07 17:15:19 +01:00
jules
7b8ab7b503 Changed MessageBase::post() to return a bool to detect failure in the OS message queue (which can happen under stress on win32), and used this to avoid some messaging classes getting stuck. 2014-07-16 21:33:11 +01:00
jules
42482fc5db Spelling fix. 2014-03-14 21:47:37 +00:00
jules
42aa27900b Moved most of the functionality from JUCEApplication into JUCEApplicationBase, so that it can be used without needing juce_gui_basics to be present. 2013-09-07 09:43:45 +01:00
jules
5a1112ab94 Updated the format of the header include guard macros. 2013-07-17 16:26:35 +01:00
jules
03c2801f3f Copyright header update in all module files. juce_core modules are now ISC licensed. All other modules are GPLv2/3/AGPLv3 2013-06-13 13:17:12 +01:00
jules
ad33fca65a Minor clean-ups and documentation. 2013-02-07 09:45:56 +00:00
jules
0ceeb573d8 Minor changes to avoid pedantic compiler warnings. 2012-12-04 21:39:15 +00:00