mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
New class: SharedResourcePointer
This commit is contained in:
parent
d7777c87c5
commit
75770f293c
41 changed files with 212 additions and 38 deletions
|
|
@ -519,6 +519,7 @@
|
|||
720C3CA9E28181C76434D465 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
7286D6380C74734603D098EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
728E67FDBD3660742A33C7B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
7319ADBC735F957219774263 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
73267FE8DDE50FD1E6E31ED4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3PluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
7338D006521EDC5C10EEF974 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
734C43C3F7918061F2DDD214 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1346,6 +1347,7 @@
|
|||
A2F0B85560090CFAC7D95132,
|
||||
734C43C3F7918061F2DDD214,
|
||||
AA967AC6E8FDCD7502272DA7,
|
||||
7319ADBC735F957219774263,
|
||||
D1D8A53A7614F106942DADED,
|
||||
6B1FEA349A6C8F51AB27E23C, ); name = memory; sourceTree = "<group>"; };
|
||||
29FD491D882C7A35353517C8 = {isa = PBXGroup; children = (
|
||||
|
|
|
|||
|
|
@ -1398,6 +1398,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
|
||||
|
|
|
|||
|
|
@ -2019,6 +2019,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -1404,6 +1404,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
|
||||
|
|
|
|||
|
|
@ -2019,6 +2019,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -1404,6 +1404,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
|
||||
|
|
|
|||
|
|
@ -2019,6 +2019,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -513,6 +513,7 @@
|
|||
720C3CA9E28181C76434D465 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
7286D6380C74734603D098EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
728E67FDBD3660742A33C7B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
7319ADBC735F957219774263 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
73267FE8DDE50FD1E6E31ED4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3PluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
7338D006521EDC5C10EEF974 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
734C43C3F7918061F2DDD214 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1336,6 +1337,7 @@
|
|||
A2F0B85560090CFAC7D95132,
|
||||
734C43C3F7918061F2DDD214,
|
||||
AA967AC6E8FDCD7502272DA7,
|
||||
7319ADBC735F957219774263,
|
||||
D1D8A53A7614F106942DADED,
|
||||
6B1FEA349A6C8F51AB27E23C, ); name = memory; sourceTree = "<group>"; };
|
||||
29FD491D882C7A35353517C8 = {isa = PBXGroup; children = (
|
||||
|
|
|
|||
|
|
@ -822,6 +822,10 @@
|
|||
<Option compile="0"/>
|
||||
<Option link="0"/>
|
||||
</Unit>
|
||||
<Unit filename="../../../../modules/juce_core/memory/juce_SharedResourcePointer.h">
|
||||
<Option compile="0"/>
|
||||
<Option link="0"/>
|
||||
</Unit>
|
||||
<Unit filename="../../../../modules/juce_core/memory/juce_Singleton.h">
|
||||
<Option compile="0"/>
|
||||
<Option link="0"/>
|
||||
|
|
|
|||
|
|
@ -177,6 +177,7 @@
|
|||
2107C02B684C7F5B75662333 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
210A4FDD4A56CF817E5E8567 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
215EAB10AE8D19F23AD2BDBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
21B527BEBFFFC536BA0DEE6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
21B6FE5EEB3E112385D62127 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Line.h"; path = "../../../../modules/juce_graphics/geometry/juce_Line.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
21D1D6A04B25346CD5524B89 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
21F4416597D1AB02D38BA62E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPathListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1135,6 +1136,7 @@
|
|||
6AA46ED6C6DDD5A7BC72F686,
|
||||
9F7896DA332F9718CAB6B162,
|
||||
1A1B5A2E9F1DA2122D21F9DF,
|
||||
21B527BEBFFFC536BA0DEE6B,
|
||||
990F2A6080B28137CCE2D7B9,
|
||||
6E815592344CAA798C9848BF, ); name = memory; sourceTree = "<group>"; };
|
||||
101599FA5E724FC0C78144B3 = {isa = PBXGroup; children = (
|
||||
|
|
|
|||
|
|
@ -679,6 +679,7 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
</Filter>
|
||||
|
|
|
|||
|
|
@ -679,6 +679,7 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
</Filter>
|
||||
|
|
|
|||
|
|
@ -1174,6 +1174,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
|
||||
|
|
|
|||
|
|
@ -1743,6 +1743,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -1180,6 +1180,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
|
||||
|
|
|
|||
|
|
@ -1743,6 +1743,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -1180,6 +1180,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
|
||||
|
|
|
|||
|
|
@ -1743,6 +1743,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -381,6 +381,7 @@
|
|||
58CEDDC16E6A5293A4F81E84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
58E978708BAA8613A40F61E3 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
58FD5A3294F6D4F415B9CA60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
595ABB3C5072077C8009AB03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
598E9C9D95393B4E4699CF0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
59968E95CF78A0E8A03B1DA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
5A15B77FF78B76ADDF1EB203 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1264,6 +1265,7 @@
|
|||
E04D8B4BAEB817D520C2EF4A,
|
||||
86B1672E14AD6F060FF57BB1,
|
||||
8BBD921B5A82DB52E6842A1B,
|
||||
595ABB3C5072077C8009AB03,
|
||||
D2724DFF5CF142D5264EE85B,
|
||||
9F9AC54CF90FDB770E5FCA03, ); name = memory; sourceTree = "<group>"; };
|
||||
94AD627E1726C9B93F8269D8 = {isa = PBXGroup; children = (
|
||||
|
|
|
|||
|
|
@ -1286,6 +1286,7 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
</Filter>
|
||||
|
|
|
|||
|
|
@ -1286,6 +1286,7 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
</Filter>
|
||||
|
|
|
|||
|
|
@ -1331,6 +1331,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
|
||||
|
|
|
|||
|
|
@ -1854,6 +1854,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -685,6 +685,7 @@
|
|||
B87F288891641371F12CB597 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
B8E2DE991BF0D13E2C488E1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ASIO.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
B9310BD20E2EF7D2A4895C1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
B9D2E7D1B6610271E1B359D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
BA2BCD20921648A42CBF54CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
BA40B3FE630313FA9BA2D9F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
BA947E82A08CB93B5A9B64F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1195,6 +1196,7 @@
|
|||
2176F72FC750E8376E696CAF,
|
||||
CF67033CFC21C0060B538042,
|
||||
E6EDE8F1BBF28362AC9E1F28,
|
||||
B9D2E7D1B6610271E1B359D6,
|
||||
D06DA3FA113EAB0CCF8D7A64,
|
||||
94B986F221A8369B8DE3D986, ); name = memory; sourceTree = "<group>"; };
|
||||
D295FCA29CAA8C0F9C29CE78 = {isa = PBXGroup; children = (
|
||||
|
|
|
|||
|
|
@ -1354,6 +1354,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_AbstractFifo.h"/>
|
||||
|
|
|
|||
|
|
@ -1875,6 +1875,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\memory\juce_Singleton.h">
|
||||
<Filter>Juce Modules\juce_core\memory</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
2D0CC061BF40931BC88D5DB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
31CA33ED0082255CC0849423 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputSource.h"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
33A39DE96B690694A19AD8C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Socket.h"; path = "../../../../modules/juce_core/network/juce_Socket.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
3456971F540274F9AB31C7BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
39CD0F6C4B430CB7857FCCB6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
39ED61F0DADF05D9388872D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
3CC375E8CCC0987FAE0B40BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -258,6 +259,7 @@
|
|||
A16A62698D337DCA6945476F,
|
||||
CA60B0396D8F46E1952F8E36,
|
||||
E8B73F6E0763B9DF3750FAB3,
|
||||
3456971F540274F9AB31C7BF,
|
||||
9BDF1653598CCC66FFF33532,
|
||||
B476D2D5837C9D5EB94C3B84, ); name = memory; sourceTree = "<group>"; };
|
||||
ED0FCD22D34539916A9A62F9 = {isa = PBXGroup; children = (
|
||||
|
|
|
|||
|
|
@ -287,6 +287,7 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
</Filter>
|
||||
|
|
|
|||
|
|
@ -363,6 +363,7 @@
|
|||
898C4B2D036C170A6ED46DD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
89A3C346A8D9173D9CBDD088 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
89C44D65C6EA486543A139E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; };
|
||||
89F164CF6D809DD8AB8FDB55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
8A3F6FFBE098968DC1C4538C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
8BA63270C9EBFE66AF17E7EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
8BEBE3E3D47AD3E8AAACF7BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -714,6 +715,7 @@
|
|||
EF28BA2B5E24F4749F732230,
|
||||
601874CF9435F18E7B69AE6A,
|
||||
45905746CA7C3BFE98B583C9,
|
||||
89F164CF6D809DD8AB8FDB55,
|
||||
6C556B58616171CC70488F0D,
|
||||
6615B376201BA6A338D7177E, ); name = memory; sourceTree = "<group>"; };
|
||||
7582B2AE14482E2927B3AE2F = {isa = PBXGroup; children = (
|
||||
|
|
|
|||
|
|
@ -289,6 +289,7 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
</Filter>
|
||||
|
|
|
|||
|
|
@ -289,6 +289,7 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
</Filter>
|
||||
|
|
|
|||
|
|
@ -360,6 +360,7 @@
|
|||
898C4B2D036C170A6ED46DD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
89A3C346A8D9173D9CBDD088 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
89C44D65C6EA486543A139E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; };
|
||||
89F164CF6D809DD8AB8FDB55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
8A3F6FFBE098968DC1C4538C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
8BA63270C9EBFE66AF17E7EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
8BEBE3E3D47AD3E8AAACF7BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -712,6 +713,7 @@
|
|||
EF28BA2B5E24F4749F732230,
|
||||
601874CF9435F18E7B69AE6A,
|
||||
45905746CA7C3BFE98B583C9,
|
||||
89F164CF6D809DD8AB8FDB55,
|
||||
6C556B58616171CC70488F0D,
|
||||
6615B376201BA6A338D7177E, ); name = memory; sourceTree = "<group>"; };
|
||||
7582B2AE14482E2927B3AE2F = {isa = PBXGroup; children = (
|
||||
|
|
|
|||
|
|
@ -1209,6 +1209,7 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_OptionalScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ReferenceCountedObject.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_ScopedPointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_SharedResourcePointer.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_Singleton.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\memory\juce_WeakReference.h"/>
|
||||
</Filter>
|
||||
|
|
|
|||
|
|
@ -272,6 +272,7 @@ extern JUCE_API void JUCE_CALLTYPE logAssertion (const char* file, int line) noe
|
|||
#include "zip/juce_GZIPDecompressorInputStream.h"
|
||||
#include "zip/juce_ZipFile.h"
|
||||
#include "containers/juce_PropertySet.h"
|
||||
#include "memory/juce_SharedResourcePointer.h"
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -329,17 +329,17 @@ public:
|
|||
|
||||
//==============================================================================
|
||||
/** Returns the object that this pointer references.
|
||||
The pointer returned may be zero, of course.
|
||||
The pointer returned may be null, of course.
|
||||
*/
|
||||
operator ReferencedType*() const noexcept { return referencedObject; }
|
||||
|
||||
/** Returns the object that this pointer references.
|
||||
The pointer returned may be zero, of course.
|
||||
The pointer returned may be null, of course.
|
||||
*/
|
||||
ReferencedType* get() const noexcept { return referencedObject; }
|
||||
|
||||
/** Returns the object that this pointer references.
|
||||
The pointer returned may be zero, of course.
|
||||
The pointer returned may be null, of course.
|
||||
*/
|
||||
ReferencedType* getObject() const noexcept { return referencedObject; }
|
||||
|
||||
|
|
|
|||
120
modules/juce_core/memory/juce_SharedResourcePointer.h
Normal file
120
modules/juce_core/memory/juce_SharedResourcePointer.h
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the juce_core module of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any purpose with
|
||||
or without fee is hereby granted, provided that the above copyright notice and this
|
||||
permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
|
||||
TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
|
||||
NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
|
||||
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
NOTE! This permissive ISC license applies ONLY to files within the juce_core module!
|
||||
All other JUCE modules are covered by a dual GPL/commercial license, so if you are
|
||||
using any other modules, be sure to check that you also comply with their license.
|
||||
|
||||
For more details, visit www.juce.com
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED
|
||||
#define JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
A smart-pointer that automatically creates and manages the lifetime of a
|
||||
shared static instance of a class.
|
||||
|
||||
The SharedObjectType template type indicates the class to use for the shared
|
||||
object - the only requirements on this class are that it must have a public
|
||||
default constructor and destructor.
|
||||
|
||||
The SharedResourcePointer offers a pattern that differs from using a singleton or
|
||||
static instance of an object, because it uses reference-counting to make sure that
|
||||
the underlying shared object is automatically created/destroyed according to the
|
||||
number of SharedResourcePointer objects that exist. When the last one is deleted,
|
||||
the underlying object is also immediately destroyed. This allows you to use scoping
|
||||
to manage the lifetime of a shared resource.
|
||||
|
||||
Note: the construction/deletion of the shared object must not involve any
|
||||
code that makes recursive calls to a SharedResourcePointer, or you'll cause
|
||||
a deadlock.
|
||||
*/
|
||||
template <typename SharedObjectType>
|
||||
class SharedResourcePointer
|
||||
{
|
||||
public:
|
||||
/** Creates an instance of the shared object.
|
||||
If other SharedResourcePointer objects for this type already exist, then
|
||||
this one will simply point to the same shared object that they are already
|
||||
using. Otherwise, if this is the first SharedResourcePointer to be created,
|
||||
then a shared object will be created automatically.
|
||||
*/
|
||||
SharedResourcePointer()
|
||||
{
|
||||
SharedObjectHolder& holder = getSharedObjectHolder();
|
||||
const SpinLock::ScopedLockType sl (holder.lock);
|
||||
|
||||
if (++(holder.refCount) == 1)
|
||||
holder.sharedInstance = new SharedObjectType();
|
||||
|
||||
sharedObject = holder.sharedInstance;
|
||||
}
|
||||
|
||||
/** Destructor.
|
||||
If no other SharedResourcePointer objects exist, this will also delete
|
||||
the shared object to which it refers.
|
||||
*/
|
||||
~SharedResourcePointer()
|
||||
{
|
||||
SharedObjectHolder& holder = getSharedObjectHolder();
|
||||
const SpinLock::ScopedLockType sl (holder.lock);
|
||||
|
||||
if (--(holder.refCount) == 0)
|
||||
holder.sharedInstance = nullptr;
|
||||
}
|
||||
|
||||
/** Returns the shared object. */
|
||||
operator SharedObjectType*() const noexcept { return sharedObject; }
|
||||
|
||||
/** Returns the shared object. */
|
||||
SharedObjectType& get() const noexcept { return *sharedObject; }
|
||||
|
||||
/** Returns the object that this pointer references.
|
||||
The pointer returned may be zero, of course.
|
||||
*/
|
||||
SharedObjectType& getObject() const noexcept { return *sharedObject; }
|
||||
|
||||
SharedObjectType* operator->() const noexcept { return sharedObject; }
|
||||
|
||||
private:
|
||||
struct SharedObjectHolder : public ReferenceCountedObject
|
||||
{
|
||||
SpinLock lock;
|
||||
ScopedPointer<SharedObjectType> sharedInstance;
|
||||
int refCount;
|
||||
};
|
||||
|
||||
static SharedObjectHolder& getSharedObjectHolder() noexcept
|
||||
{
|
||||
static char holder [sizeof (SharedObjectHolder)] = { 0 };
|
||||
return *reinterpret_cast<SharedObjectHolder*> (holder);
|
||||
}
|
||||
|
||||
SharedObjectType* sharedObject;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SharedResourcePointer)
|
||||
};
|
||||
|
||||
|
||||
#endif // JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED
|
||||
|
|
@ -37,10 +37,9 @@ public:
|
|||
D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties();
|
||||
D2D1_HWND_RENDER_TARGET_PROPERTIES propsHwnd = D2D1::HwndRenderTargetProperties (hwnd, size);
|
||||
|
||||
const Direct2DFactories& factories = Direct2DFactories::getInstance();
|
||||
if (factories.d2dFactory != nullptr)
|
||||
if (factories->d2dFactory != nullptr)
|
||||
{
|
||||
HRESULT hr = factories.d2dFactory->CreateHwndRenderTarget (props, propsHwnd, renderingTarget.resetAndGetPointerAddress());
|
||||
HRESULT hr = factories->d2dFactory->CreateHwndRenderTarget (props, propsHwnd, renderingTarget.resetAndGetPointerAddress());
|
||||
jassert (SUCCEEDED (hr)); (void) hr;
|
||||
hr = renderingTarget->CreateSolidColorBrush (D2D1::ColorF::ColorF (0.0f, 0.0f, 0.0f, 1.0f), colourBrush.resetAndGetPointerAddress());
|
||||
}
|
||||
|
|
@ -287,9 +286,8 @@ public:
|
|||
{
|
||||
renderingTarget->SetTransform (transformToMatrix (currentState->transform));
|
||||
|
||||
const Direct2DFactories& factories = Direct2DFactories::getInstance();
|
||||
DirectWriteTypeLayout::drawToD2DContext (text, area, renderingTarget, factories.directWriteFactory,
|
||||
factories.d2dFactory, factories.systemFonts);
|
||||
DirectWriteTypeLayout::drawToD2DContext (text, area, renderingTarget, factories->directWriteFactory,
|
||||
factories->d2dFactory, factories->systemFonts);
|
||||
|
||||
renderingTarget->SetTransform (D2D1::IdentityMatrix());
|
||||
return true;
|
||||
|
|
@ -695,6 +693,7 @@ public:
|
|||
|
||||
//==============================================================================
|
||||
private:
|
||||
SharedResourcePointer<Direct2DFactories> factories;
|
||||
HWND hwnd;
|
||||
ComSmartPtr <ID2D1HwndRenderTarget> renderingTarget;
|
||||
ComSmartPtr <ID2D1SolidColorBrush> colourBrush;
|
||||
|
|
@ -733,7 +732,7 @@ private:
|
|||
static ID2D1PathGeometry* rectListToPathGeometry (const RectangleList<int>& clipRegion)
|
||||
{
|
||||
ID2D1PathGeometry* p = nullptr;
|
||||
Direct2DFactories::getInstance().d2dFactory->CreatePathGeometry (&p);
|
||||
factories->d2dFactory->CreatePathGeometry (&p);
|
||||
|
||||
ComSmartPtr <ID2D1GeometrySink> sink;
|
||||
HRESULT hr = p->Open (sink.resetAndGetPointerAddress()); // xxx handle error
|
||||
|
|
@ -811,7 +810,7 @@ private:
|
|||
static ID2D1PathGeometry* pathToPathGeometry (const Path& path, const AffineTransform& transform)
|
||||
{
|
||||
ID2D1PathGeometry* p = nullptr;
|
||||
Direct2DFactories::getInstance().d2dFactory->CreatePathGeometry (&p);
|
||||
factories->d2dFactory->CreatePathGeometry (&p);
|
||||
|
||||
ComSmartPtr <ID2D1GeometrySink> sink;
|
||||
HRESULT hr = p->Open (sink.resetAndGetPointerAddress());
|
||||
|
|
|
|||
|
|
@ -389,9 +389,9 @@ namespace DirectWriteTypeLayout
|
|||
bool TextLayout::createNativeLayout (const AttributedString& text)
|
||||
{
|
||||
#if JUCE_USE_DIRECTWRITE
|
||||
const Direct2DFactories& factories = Direct2DFactories::getInstance();
|
||||
SharedResourcePointer<Direct2DFactories> factories;
|
||||
|
||||
if (factories.d2dFactory != nullptr && factories.systemFonts != nullptr)
|
||||
if (factories->d2dFactory != nullptr && factories->systemFonts != nullptr)
|
||||
{
|
||||
#if JUCE_64BIT
|
||||
// There's a mysterious bug in 64-bit Windows that causes garbage floating-point
|
||||
|
|
@ -402,13 +402,13 @@ bool TextLayout::createNativeLayout (const AttributedString& text)
|
|||
{
|
||||
hasBeenCalled = true;
|
||||
TextLayout dummy;
|
||||
DirectWriteTypeLayout::createLayout (dummy, text, factories.directWriteFactory,
|
||||
factories.d2dFactory, factories.systemFonts);
|
||||
DirectWriteTypeLayout::createLayout (dummy, text, factories->directWriteFactory,
|
||||
factories->d2dFactory, factories->systemFonts);
|
||||
}
|
||||
#endif
|
||||
|
||||
DirectWriteTypeLayout::createLayout (*this, text, factories.directWriteFactory,
|
||||
factories.d2dFactory, factories.systemFonts);
|
||||
DirectWriteTypeLayout::createLayout (*this, text, factories->directWriteFactory,
|
||||
factories->d2dFactory, factories->systemFonts);
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -107,15 +107,9 @@ public:
|
|||
systemFonts = nullptr;
|
||||
}
|
||||
|
||||
static const Direct2DFactories& getInstance()
|
||||
{
|
||||
static Direct2DFactories instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
ComSmartPtr <ID2D1Factory> d2dFactory;
|
||||
ComSmartPtr <IDWriteFactory> directWriteFactory;
|
||||
ComSmartPtr <IDWriteFontCollection> systemFonts;
|
||||
ComSmartPtr<ID2D1Factory> d2dFactory;
|
||||
ComSmartPtr<IDWriteFactory> directWriteFactory;
|
||||
ComSmartPtr<IDWriteFontCollection> systemFonts;
|
||||
|
||||
private:
|
||||
DynamicLibrary direct2dDll, directWriteDll;
|
||||
|
|
@ -255,6 +249,7 @@ public:
|
|||
IDWriteFontFace* getIDWriteFontFace() const noexcept { return dwFontFace; }
|
||||
|
||||
private:
|
||||
SharedResourcePointer<Direct2DFactories> factories;
|
||||
ComSmartPtr<IDWriteFontFace> dwFontFace;
|
||||
float unitsToHeightScaleFactor, heightToPointsFactor, ascent;
|
||||
int designUnitsPerEm;
|
||||
|
|
|
|||
|
|
@ -176,17 +176,17 @@ StringArray Font::findAllTypefaceNames()
|
|||
StringArray results;
|
||||
|
||||
#if JUCE_USE_DIRECTWRITE
|
||||
const Direct2DFactories& factories = Direct2DFactories::getInstance();
|
||||
SharedResourcePointer<Direct2DFactories> factories;
|
||||
|
||||
if (factories.systemFonts != nullptr)
|
||||
if (factories->systemFonts != nullptr)
|
||||
{
|
||||
ComSmartPtr<IDWriteFontFamily> fontFamily;
|
||||
uint32 fontFamilyCount = 0;
|
||||
fontFamilyCount = factories.systemFonts->GetFontFamilyCount();
|
||||
fontFamilyCount = factories->systemFonts->GetFontFamilyCount();
|
||||
|
||||
for (uint32 i = 0; i < fontFamilyCount; ++i)
|
||||
{
|
||||
HRESULT hr = factories.systemFonts->GetFontFamily (i, fontFamily.resetAndGetPointerAddress());
|
||||
HRESULT hr = factories->systemFonts->GetFontFamily (i, fontFamily.resetAndGetPointerAddress());
|
||||
|
||||
if (SUCCEEDED (hr))
|
||||
results.addIfNotAlreadyThere (getFontFamilyName (fontFamily));
|
||||
|
|
@ -226,20 +226,20 @@ StringArray Font::findAllTypefaceStyles (const String& family)
|
|||
StringArray results;
|
||||
|
||||
#if JUCE_USE_DIRECTWRITE
|
||||
const Direct2DFactories& factories = Direct2DFactories::getInstance();
|
||||
SharedResourcePointer<Direct2DFactories> factories;
|
||||
|
||||
if (factories.systemFonts != nullptr)
|
||||
if (factories->systemFonts != nullptr)
|
||||
{
|
||||
BOOL fontFound = false;
|
||||
uint32 fontIndex = 0;
|
||||
HRESULT hr = factories.systemFonts->FindFamilyName (family.toWideCharPointer(), &fontIndex, &fontFound);
|
||||
HRESULT hr = factories->systemFonts->FindFamilyName (family.toWideCharPointer(), &fontIndex, &fontFound);
|
||||
if (! fontFound)
|
||||
fontIndex = 0;
|
||||
|
||||
// Get the font family using the search results
|
||||
// Fonts like: Times New Roman, Times New Roman Bold, Times New Roman Italic are all in the same font family
|
||||
ComSmartPtr<IDWriteFontFamily> fontFamily;
|
||||
hr = factories.systemFonts->GetFontFamily (fontIndex, fontFamily.resetAndGetPointerAddress());
|
||||
hr = factories->systemFonts->GetFontFamily (fontIndex, fontFamily.resetAndGetPointerAddress());
|
||||
|
||||
// Get the font faces
|
||||
ComSmartPtr<IDWriteFont> dwFont;
|
||||
|
|
@ -619,11 +619,11 @@ const MAT2 WindowsTypeface::identityMatrix = { { 0, 1 }, { 0, 0 }, { 0, 0 }, { 0
|
|||
Typeface::Ptr Typeface::createSystemTypefaceFor (const Font& font)
|
||||
{
|
||||
#if JUCE_USE_DIRECTWRITE
|
||||
const Direct2DFactories& factories = Direct2DFactories::getInstance();
|
||||
SharedResourcePointer<Direct2DFactories> factories;
|
||||
|
||||
if (factories.systemFonts != nullptr)
|
||||
if (factories->systemFonts != nullptr)
|
||||
{
|
||||
ScopedPointer<WindowsDirectWriteTypeface> wtf (new WindowsDirectWriteTypeface (font, factories.systemFonts));
|
||||
ScopedPointer<WindowsDirectWriteTypeface> wtf (new WindowsDirectWriteTypeface (font, factories->systemFonts));
|
||||
|
||||
if (wtf->loadedOk())
|
||||
return wtf.release();
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
|
||||
struct NSViewResizeWatcher
|
||||
{
|
||||
NSViewResizeWatcher() : callback (nil) {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue