1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-13 00:04:19 +00:00
JUCE/modules/juce_graphics/native
reuk 3768349a05
Font: Make Font and TypefaceCache threadsafe
Previously, it wasn't safe to access Font instances from multiple
threads because there was a chance that they might reference the same
shared internal state. In this case, calling getTypeface() or getAscent from
two threads simultaneously would cause a race on the typeface and ascent
data members, even though the Font instances appeared to be disjoint.

With this change in place, it is now safe to use Font instances from
multiple threads simultaneously.

It is still an error to modify the same Font instance from multiple
threads without synchronization!

    // Fine:
    Font a;
    Font b = a;

    auto futureA = std::async (std::launch::async, [&a] { /* do something with a */ });
    auto futureB = std::async (std::launch::async, [&b] { /* do something with b */ });

    // Bad idea:
    Font f;

    auto futureA = std::async (std::launch::async, [&f] { /* do something with f */ });
    auto futureB = std::async (std::launch::async, [&f] { /* do something with f */ });
2021-09-23 10:28:47 +01:00
..
juce_android_Fonts.cpp Android: Fix numeric conversion warnings 2021-02-03 16:09:54 +00:00
juce_android_GraphicsContext.cpp Updated all license headers 2020-06-29 08:30:22 +01:00
juce_android_IconHelpers.cpp Updated all license headers 2020-06-29 08:30:22 +01:00
juce_freetype_Fonts.cpp Clang: Fix warnings when building with clang 10 2020-07-01 10:00:43 +01:00
juce_linux_Fonts.cpp Added preliminary support for FreeBSD 2021-03-29 14:16:46 +01:00
juce_linux_IconHelpers.cpp Updated all license headers 2020-06-29 08:30:22 +01:00
juce_mac_CoreGraphicsContext.h Updated all license headers 2020-06-29 08:30:22 +01:00
juce_mac_CoreGraphicsContext.mm Font: Make Font and TypefaceCache threadsafe 2021-09-23 10:28:47 +01:00
juce_mac_CoreGraphicsHelpers.h Accessibility: Remove redundant method declaration and general fixups 2021-07-28 11:44:29 +01:00
juce_mac_Fonts.mm Font: Make Font and TypefaceCache threadsafe 2021-09-23 10:28:47 +01:00
juce_mac_IconHelpers.cpp Use RAII for CFTypes 2021-03-25 15:48:35 +00:00
juce_RenderingHelpers.h Font: Make Font and TypefaceCache threadsafe 2021-09-23 10:28:47 +01:00
juce_win32_Direct2DGraphicsContext.cpp Font: Make Font and TypefaceCache threadsafe 2021-09-23 10:28:47 +01:00
juce_win32_Direct2DGraphicsContext.h Updated all license headers 2020-06-29 08:30:22 +01:00
juce_win32_DirectWriteTypeface.cpp Windows: Fix clang/gnu compiler warnings 2021-06-03 17:30:44 +01:00
juce_win32_DirectWriteTypeLayout.cpp Font: Make Font and TypefaceCache threadsafe 2021-09-23 10:28:47 +01:00
juce_win32_Fonts.cpp Font: Make Font and TypefaceCache threadsafe 2021-09-23 10:28:47 +01:00
juce_win32_IconHelpers.cpp Updated all license headers 2020-06-29 08:30:22 +01:00