diff --git a/extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj b/extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj
index 04a6854a04..64e2f1057e 100644
--- a/extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj
+++ b/extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj
@@ -4331,6 +4331,7 @@
+
diff --git a/extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj b/extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj
index aa79680b68..501cdd1864 100644
--- a/extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj
+++ b/extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj
@@ -4331,6 +4331,7 @@
+
diff --git a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj
index 1083b6777e..620f47a932 100644
--- a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj
+++ b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj
@@ -1608,6 +1608,7 @@
+
diff --git a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters
index 497686a5dc..73384d1d1c 100644
--- a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters
+++ b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters
@@ -2817,6 +2817,9 @@
Juce Modules\juce_opengl\opengl
+
+ Juce Modules\juce_opengl\opengl
+
Juce Modules\juce_opengl\opengl
diff --git a/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj b/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj
index a5beb85ce5..0418355bdb 100644
--- a/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj
+++ b/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj
@@ -508,6 +508,7 @@
7FC1A0B1663AC9262104D715 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyListener.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h"; sourceTree = "SOURCE_ROOT"; };
8042D0D2B38EBD19652CBA55 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OldSchoolLookAndFeel.cpp"; path = "../../../../modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; };
805B94425CD56EA78E0A705B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioDemoPlaybackPage.h; path = ../../Source/demos/AudioDemoPlaybackPage.h; sourceTree = "SOURCE_ROOT"; };
+ 80945993EC383052DA7BB92D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLRenderer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h"; sourceTree = "SOURCE_ROOT"; };
80E7D8D4E601BCC20054475E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; };
80EEC26431102B212C9F873B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathIterator.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp"; sourceTree = "SOURCE_ROOT"; };
814313374CD209A40282985E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDescription.h"; path = "../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h"; sourceTree = "SOURCE_ROOT"; };
@@ -1901,6 +1902,7 @@
17422D876DAAF091ED089B8D,
AAAA086F74F507C87200AD2E,
B81FA2ED22BCC03D124031ED,
+ 80945993EC383052DA7BB92D,
58864C3D7F369EBE01E42C5C,
8EEB4DEB11F3DF01BA6F7528,
FE9A5898294228EB7F439951,
diff --git a/extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj b/extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj
index a41d9d5a50..ae6848ac37 100644
--- a/extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj
+++ b/extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj
@@ -458,6 +458,7 @@
7F031C3EECC44A707A4B1F5A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; };
80101DB42394F099476E9EEC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; };
807C6A24C920DBD11B9D6D89 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; };
+ 81026C4FD8F62B3D78EFE722 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLRenderer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h"; sourceTree = "SOURCE_ROOT"; };
813F42FA0CDB76C5150A482E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; };
81D77B804ED4556D69FFE37D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; };
81F7A7CD9847CBAFC6615F07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; };
@@ -1831,6 +1832,7 @@
4CE76ABC51CC5E019AED3C2B,
918A6AE024A876783EC063DD,
8BA1AF085755958342C9213A,
+ 81026C4FD8F62B3D78EFE722,
DFE18134F58A9C546AD16FF7,
442E6311FB54378E88B6811C,
651055751E902F40B83EFD55,
diff --git a/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj b/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj
index c5a3ae15bf..b3c2e75405 100644
--- a/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj
+++ b/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj
@@ -4254,6 +4254,7 @@
+
diff --git a/extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj b/extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj
index cb726452c2..986177e3a2 100644
--- a/extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj
+++ b/extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj
@@ -4254,6 +4254,7 @@
+
diff --git a/extras/static library/Builds/MacOSX/juce.xcodeproj/project.pbxproj b/extras/static library/Builds/MacOSX/juce.xcodeproj/project.pbxproj
index d0872e488c..dd606731ed 100644
--- a/extras/static library/Builds/MacOSX/juce.xcodeproj/project.pbxproj
+++ b/extras/static library/Builds/MacOSX/juce.xcodeproj/project.pbxproj
@@ -191,6 +191,7 @@
36203646F7650EEBC8E561E1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; };
3693E6A29D3276AE2FD99E7C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; };
36C52951440860FFBD722ADC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; };
+ 371BD79724C7949D135B837E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLRenderer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h"; sourceTree = "SOURCE_ROOT"; };
3726D2A716AFFCAFC689F699 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; };
3739A44261DD4D4BE787109C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessage.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h"; sourceTree = "SOURCE_ROOT"; };
3775CD7D5E1F969B5159556A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -610,7 +611,7 @@
B9E3D8A5B69F14C6404E2AB2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; };
BA94000B8C2FCD758F5152FC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Path.h"; path = "../../../../modules/juce_graphics/geometry/juce_Path.h"; sourceTree = "SOURCE_ROOT"; };
BAF325E9748B0670F34129BE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; };
- BB3752B34C9A609E300D679B = { isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjucedebug.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ BB3752B34C9A609E300D679B = { isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = sourcecode.c.h; sourceTree = "BUILT_PRODUCTS_DIR"; };
BBB6077B7D799C2FD4187355 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; };
BC2411690315F3F1612A9A13 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
BCA1200B13A683E6A3DC3CEB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; };
@@ -1781,6 +1782,7 @@
7251827C30AC1C4F55C3DB69,
789DD960143BCB1B9A2559EC,
6D95302F8D68BA3F0538214F,
+ 371BD79724C7949D135B837E,
1DC59B4A97D5DF77801ACAE8,
F7010D646D19C704DE9D42A1,
A0D54F01BC8018CC41FA34E9,
diff --git a/extras/static library/Builds/VisualStudio2008/juce.vcproj b/extras/static library/Builds/VisualStudio2008/juce.vcproj
index 7ce03c7557..99d825a0b0 100644
--- a/extras/static library/Builds/VisualStudio2008/juce.vcproj
+++ b/extras/static library/Builds/VisualStudio2008/juce.vcproj
@@ -4216,6 +4216,7 @@
+
diff --git a/extras/static library/Builds/VisualStudio2010/juce.vcxproj b/extras/static library/Builds/VisualStudio2010/juce.vcxproj
index 5b26b339ba..8e2a414d06 100644
--- a/extras/static library/Builds/VisualStudio2010/juce.vcxproj
+++ b/extras/static library/Builds/VisualStudio2010/juce.vcxproj
@@ -1576,6 +1576,7 @@
+
diff --git a/extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters b/extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters
index ac830405d2..5b5cec6b1f 100644
--- a/extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters
+++ b/extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters
@@ -2700,6 +2700,9 @@
Juce Modules\juce_opengl\opengl
+
+ Juce Modules\juce_opengl\opengl
+
Juce Modules\juce_opengl\opengl
diff --git a/modules/juce_audio_basics/juce_module_info b/modules/juce_audio_basics/juce_module_info
index aece9bf25f..bf995196ff 100644
--- a/modules/juce_audio_basics/juce_module_info
+++ b/modules/juce_audio_basics/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_audio_basics",
"name": "JUCE audio and midi data classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for audio buffer manipulation, midi message handling, synthesis, etc",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_audio_devices/juce_module_info b/modules/juce_audio_devices/juce_module_info
index dedb6a3468..08964c3254 100644
--- a/modules/juce_audio_devices/juce_module_info
+++ b/modules/juce_audio_devices/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_audio_devices",
"name": "JUCE audio and midi I/O device classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes to play and record from audio and midi i/o devices.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_audio_formats/juce_module_info b/modules/juce_audio_formats/juce_module_info
index cce8a1d101..f657ecb06a 100644
--- a/modules/juce_audio_formats/juce_module_info
+++ b/modules/juce_audio_formats/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_audio_formats",
"name": "JUCE audio file format codecs",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for reading and writing various audio file formats.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_audio_plugin_client/juce_module_info b/modules/juce_audio_plugin_client/juce_module_info
index 2d2bc06026..9899f00f03 100644
--- a/modules/juce_audio_plugin_client/juce_module_info
+++ b/modules/juce_audio_plugin_client/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_audio_plugin_client",
"name": "JUCE audio plugin wrapper classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for building VST, RTAS and AU plugins.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_audio_processors/juce_module_info b/modules/juce_audio_processors/juce_module_info
index 6f29b7603c..c50edb3d18 100644
--- a/modules/juce_audio_processors/juce_module_info
+++ b/modules/juce_audio_processors/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_audio_processors",
"name": "JUCE audio plugin hosting classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for loading and playing VST, AU, or internally-generated audio processors.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_audio_utils/juce_module_info b/modules/juce_audio_utils/juce_module_info
index 5846365958..ca8be74cd2 100644
--- a/modules/juce_audio_utils/juce_module_info
+++ b/modules/juce_audio_utils/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_audio_utils",
"name": "JUCE extra audio utility classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for audio-related GUI and miscellaneous tasks.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_browser_plugin/juce_module_info b/modules/juce_browser_plugin/juce_module_info
index adc4cb412f..041144fd81 100644
--- a/modules/juce_browser_plugin/juce_module_info
+++ b/modules/juce_browser_plugin/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_browser_plugin_client",
"name": "JUCE browser plugin wrapper classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for building NPAPI and ActiveX browser plugins.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_core/juce_module_info b/modules/juce_core/juce_module_info
index 6c67c365c5..2f0670712d 100644
--- a/modules/juce_core/juce_module_info
+++ b/modules/juce_core/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_core",
"name": "JUCE core classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_core/system/juce_StandardHeader.h b/modules/juce_core/system/juce_StandardHeader.h
index e4dbf8547a..d3ec685756 100644
--- a/modules/juce_core/system/juce_StandardHeader.h
+++ b/modules/juce_core/system/juce_StandardHeader.h
@@ -33,7 +33,7 @@
*/
#define JUCE_MAJOR_VERSION 2
#define JUCE_MINOR_VERSION 0
-#define JUCE_BUILDNUMBER 18
+#define JUCE_BUILDNUMBER 19
/** Current Juce version number.
diff --git a/modules/juce_cryptography/juce_module_info b/modules/juce_cryptography/juce_module_info
index f4d548f9c4..d334ea16f8 100644
--- a/modules/juce_cryptography/juce_module_info
+++ b/modules/juce_cryptography/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_cryptography",
"name": "JUCE cryptography classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for various basic cryptography functions, including RSA, Blowfish, MD5, SHA, etc.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_data_structures/juce_module_info b/modules/juce_data_structures/juce_module_info
index fd06b8f343..8d2dce05cd 100644
--- a/modules/juce_data_structures/juce_module_info
+++ b/modules/juce_data_structures/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_data_structures",
"name": "JUCE data model helper classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for undo/redo management, and smart data structures.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_events/juce_module_info b/modules/juce_events/juce_module_info
index e4eda3c593..adaff5e480 100644
--- a/modules/juce_events/juce_module_info
+++ b/modules/juce_events/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_events",
"name": "JUCE message and event handling classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for running an application's main event loop and sending/receiving messages, timers, etc.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_graphics/juce_module_info b/modules/juce_graphics/juce_module_info
index 7482e5bc93..e3ca0f8ffa 100644
--- a/modules/juce_graphics/juce_module_info
+++ b/modules/juce_graphics/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_graphics",
"name": "JUCE graphics classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for 2D vector graphics, image loading/saving, font handling, etc.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_gui_basics/juce_module_info b/modules/juce_gui_basics/juce_module_info
index 816180d0ac..c6e72a0a36 100644
--- a/modules/juce_gui_basics/juce_module_info
+++ b/modules/juce_gui_basics/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_gui_basics",
"name": "JUCE GUI core classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Basic user-interface components and related classes.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_gui_extra/juce_module_info b/modules/juce_gui_extra/juce_module_info
index db76160596..59f0b61a70 100644
--- a/modules/juce_gui_extra/juce_module_info
+++ b/modules/juce_gui_extra/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_gui_extra",
"name": "JUCE extended GUI classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Miscellaneous GUI classes for specialised tasks.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_opengl/juce_module_info b/modules/juce_opengl/juce_module_info
index 2c6cf72e0c..0613628506 100644
--- a/modules/juce_opengl/juce_module_info
+++ b/modules/juce_opengl/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_opengl",
"name": "JUCE OpenGL classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for rendering OpenGL in a JUCE window.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",
diff --git a/modules/juce_opengl/juce_opengl.h b/modules/juce_opengl/juce_opengl.h
index 450ce3697e..897444d70c 100644
--- a/modules/juce_opengl/juce_opengl.h
+++ b/modules/juce_opengl/juce_opengl.h
@@ -105,6 +105,9 @@ namespace juce
#ifndef __JUCE_OPENGLPIXELFORMAT_JUCEHEADER__
#include "opengl/juce_OpenGLPixelFormat.h"
#endif
+#ifndef __JUCE_OPENGLRENDERER_JUCEHEADER__
+ #include "opengl/juce_OpenGLRenderer.h"
+#endif
#ifndef __JUCE_OPENGLSHADERPROGRAM_JUCEHEADER__
#include "opengl/juce_OpenGLShaderProgram.h"
#endif
diff --git a/modules/juce_opengl/opengl/juce_OpenGLContext.h b/modules/juce_opengl/opengl/juce_OpenGLContext.h
index 7a0982c301..f48228a194 100644
--- a/modules/juce_opengl/opengl/juce_OpenGLContext.h
+++ b/modules/juce_opengl/opengl/juce_OpenGLContext.h
@@ -28,54 +28,22 @@
#include "juce_OpenGLPixelFormat.h"
#include "../native/juce_OpenGLExtensions.h"
+#include "juce_OpenGLRenderer.h"
-//==============================================================================
-/**
- A base class that should be implemented by classes which want to render openGL
- on a background thread.
-
- @see OpenGLContext
-*/
-class JUCE_API OpenGLRenderer
-{
-public:
- OpenGLRenderer() {}
- virtual ~OpenGLRenderer() {}
-
- /** Called when a new GL context has been created.
- You can use this as an opportunity to create your textures, shaders, etc.
- When the method is invoked, the new GL context will be active.
- Note that this callback will be made on a background thread, so make sure
- that your implementation is thread-safe.
- */
- virtual void newOpenGLContextCreated() = 0;
-
- /** Called when you should render the next openGL frame.
- Note that this callback will be made on a background thread, so make sure
- that your implementation is thread-safe.
- */
- virtual void renderOpenGL() = 0;
-
- /** Called when the current openGL context is about to close.
- You can use this opportunity to release any GL resources that you may have
- created.
-
- Note that this callback will be made on a background thread, so make sure
- that your implementation is thread-safe.
-
- (Also note that on Android, this callback won't happen, because there's currently
- no way to implement it..)
- */
- virtual void openGLContextClosing() = 0;
-};
//==============================================================================
/**
Creates an OpenGL context, which can be attached to a component.
- To render some OpenGL in a component, you should create an instance of an OpenGLContext,
- and call attachTo() to make it use your component as its render target.
- To free the context, either call detach(), or delete the OpenGLContext.
+ To render some OpenGL, you should create an instance of an OpenGLContext,
+ and call attachTo() to make it use a component as its render target.
+
+ To provide threaded rendering, you can supply an OpenGLRenderer object that
+ will be used to render each frame.
+
+ Before your target component or OpenGLRenderer is deleted, you MUST call
+ detach() or delete the OpenGLContext to allow the background thread to
+ stop and the native resources to be freed safely.
@see OpenGLRenderer
*/
@@ -160,6 +128,7 @@ public:
/** Asynchronously causes a repaint to be made. */
void triggerRepaint();
+
//==============================================================================
/** Returns the width of this context */
inline int getWidth() const noexcept { return width; }
@@ -256,6 +225,8 @@ public:
const Rectangle& anchorPosAndTextureSize,
int contextWidth, int contextHeight);
+
+ //==============================================================================
#ifndef DOXYGEN
class NativeContext;
#endif
@@ -277,5 +248,4 @@ private:
};
-
#endif // __JUCE_OPENGLCONTEXT_JUCEHEADER__
diff --git a/modules/juce_opengl/opengl/juce_OpenGLRenderer.h b/modules/juce_opengl/opengl/juce_OpenGLRenderer.h
new file mode 100644
index 0000000000..e6772ad04a
--- /dev/null
+++ b/modules/juce_opengl/opengl/juce_OpenGLRenderer.h
@@ -0,0 +1,70 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library - "Jules' Utility Class Extensions"
+ Copyright 2004-11 by Raw Material Software Ltd.
+
+ ------------------------------------------------------------------------------
+
+ JUCE can be redistributed and/or modified under the terms of the GNU General
+ Public License (Version 2), as published by the Free Software Foundation.
+ A copy of the license is included in the JUCE distribution, or can be found
+ online at www.gnu.org/licenses.
+
+ JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ ------------------------------------------------------------------------------
+
+ To release a closed-source product which uses JUCE, commercial licenses are
+ available: visit www.rawmaterialsoftware.com/juce for more information.
+
+ ==============================================================================
+*/
+
+#ifndef __JUCE_OPENGLRENDERER_JUCEHEADER__
+#define __JUCE_OPENGLRENDERER_JUCEHEADER__
+
+//==============================================================================
+/**
+ A base class that should be implemented by classes which want to render openGL
+ on a background thread.
+
+ @see OpenGLContext
+*/
+class JUCE_API OpenGLRenderer
+{
+public:
+ OpenGLRenderer() {}
+ virtual ~OpenGLRenderer() {}
+
+ /** Called when a new GL context has been created.
+ You can use this as an opportunity to create your textures, shaders, etc.
+ When the method is invoked, the new GL context will be active.
+ Note that this callback will be made on a background thread, so make sure
+ that your implementation is thread-safe.
+ */
+ virtual void newOpenGLContextCreated() = 0;
+
+ /** Called when you should render the next openGL frame.
+ Note that this callback will be made on a background thread, so make sure
+ that your implementation is thread-safe.
+ */
+ virtual void renderOpenGL() = 0;
+
+ /** Called when the current openGL context is about to close.
+ You can use this opportunity to release any GL resources that you may have
+ created.
+
+ Note that this callback will be made on a background thread, so make sure
+ that your implementation is thread-safe.
+
+ (Also note that on Android, this callback won't happen, because there's currently
+ no way to implement it..)
+ */
+ virtual void openGLContextClosing() = 0;
+};
+
+
+#endif // __JUCE_OPENGLRENDERER_JUCEHEADER__
diff --git a/modules/juce_video/juce_module_info b/modules/juce_video/juce_module_info
index 29fec94446..9ee06462c0 100644
--- a/modules/juce_video/juce_module_info
+++ b/modules/juce_video/juce_module_info
@@ -1,7 +1,7 @@
{
"id": "juce_video",
"name": "JUCE video playback and capture classes",
- "version": "2.0.18",
+ "version": "2.0.19",
"description": "Classes for playing video and capturing camera input.",
"website": "http://www.juce.com/juce",
"license": "GPL/Commercial",