| @@ -71,7 +71,7 @@ void AudioFormatManager::registerBasicFormats() | |||||
| #if JUCE_MAC || JUCE_IOS | #if JUCE_MAC || JUCE_IOS | ||||
| registerFormat (new CoreAudioFormat(), false); | registerFormat (new CoreAudioFormat(), false); | ||||
| #elif JUCE_WINDOWS | |||||
| #elif JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| registerFormat (new WindowsMediaAudioFormat(), false); | registerFormat (new WindowsMediaAudioFormat(), false); | ||||
| #elif JUCE_USE_MP3AUDIOFORMAT | #elif JUCE_USE_MP3AUDIOFORMAT | ||||
| // The software MP3 decoder is only used as a default format if | // The software MP3 decoder is only used as a default format if | ||||
| @@ -80,7 +80,9 @@ | |||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| #include <wmsdk.h> | |||||
| #if JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| #include <wmsdk.h> | |||||
| #endif | |||||
| #endif | #endif | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -63,6 +63,18 @@ | |||||
| #define JUCE_USE_MP3AUDIOFORMAT 0 | #define JUCE_USE_MP3AUDIOFORMAT 0 | ||||
| #endif | #endif | ||||
| /** Config: JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| Enables the Windows Media SDK codecs. | |||||
| */ | |||||
| #ifndef JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| #define JUCE_USE_WINDOWS_MEDIA_FORMAT 1 | |||||
| #endif | |||||
| #if ! JUCE_MSVC | |||||
| #undef JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| #define JUCE_USE_WINDOWS_MEDIA_FORMAT 0 | |||||
| #endif | |||||
| //============================================================================= | //============================================================================= | ||||
| namespace juce | namespace juce | ||||
| { | { | ||||
| @@ -85,8 +85,7 @@ public: | |||||
| NamedValueSet properties; | NamedValueSet properties; | ||||
| //============================================================================== | //============================================================================== | ||||
| /** A convenient typedef for referring to a pointer to a node object. | |||||
| */ | |||||
| /** A convenient typedef for referring to a pointer to a node object. */ | |||||
| typedef ReferenceCountedObjectPtr <Node> Ptr; | typedef ReferenceCountedObjectPtr <Node> Ptr; | ||||
| private: | private: | ||||
| @@ -96,9 +95,9 @@ public: | |||||
| const ScopedPointer<AudioProcessor> processor; | const ScopedPointer<AudioProcessor> processor; | ||||
| bool isPrepared; | bool isPrepared; | ||||
| Node (uint32 nodeId, AudioProcessor* processor) noexcept; | |||||
| Node (uint32 nodeId, AudioProcessor*) noexcept; | |||||
| void prepare (double sampleRate, int blockSize, AudioProcessorGraph* graph); | |||||
| void prepare (double sampleRate, int blockSize, AudioProcessorGraph*); | |||||
| void unprepare(); | void unprepare(); | ||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Node); | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Node); | ||||
| @@ -161,15 +160,13 @@ public: | |||||
| int getNumNodes() const { return nodes.size(); } | int getNumNodes() const { return nodes.size(); } | ||||
| /** Returns a pointer to one of the nodes in the graph. | /** Returns a pointer to one of the nodes in the graph. | ||||
| This will return 0 if the index is out of range. | |||||
| This will return nullptr if the index is out of range. | |||||
| @see getNodeForId | @see getNodeForId | ||||
| */ | */ | ||||
| Node* getNode (const int index) const { return nodes [index]; } | Node* getNode (const int index) const { return nodes [index]; } | ||||
| /** Searches the graph for a node with the given ID number and returns it. | /** Searches the graph for a node with the given ID number and returns it. | ||||
| If no such node was found, this returns 0. | |||||
| If no such node was found, this returns nullptr. | |||||
| @see getNode | @see getNode | ||||
| */ | */ | ||||
| Node* getNodeForId (const uint32 nodeId) const; | Node* getNodeForId (const uint32 nodeId) const; | ||||
| @@ -202,7 +199,7 @@ public: | |||||
| /** Searches for a connection between some specified channels. | /** Searches for a connection between some specified channels. | ||||
| If no such connection is found, this returns 0. | |||||
| If no such connection is found, this returns nullptr. | |||||
| */ | */ | ||||
| const Connection* getConnectionBetween (uint32 sourceNodeId, | const Connection* getConnectionBetween (uint32 sourceNodeId, | ||||
| int sourceChannelIndex, | int sourceChannelIndex, | ||||
| @@ -307,7 +304,7 @@ public: | |||||
| /** Returns the mode of this processor. */ | /** Returns the mode of this processor. */ | ||||
| IODeviceType getType() const { return type; } | IODeviceType getType() const { return type; } | ||||
| /** Returns the parent graph to which this processor belongs, or 0 if it | |||||
| /** Returns the parent graph to which this processor belongs, or nullptr if it | |||||
| hasn't yet been added to one. */ | hasn't yet been added to one. */ | ||||
| AudioProcessorGraph* getParentGraph() const { return graph; } | AudioProcessorGraph* getParentGraph() const { return graph; } | ||||
| @@ -321,11 +318,11 @@ public: | |||||
| ~AudioGraphIOProcessor(); | ~AudioGraphIOProcessor(); | ||||
| const String getName() const; | const String getName() const; | ||||
| void fillInPluginDescription (PluginDescription& d) const; | |||||
| void fillInPluginDescription (PluginDescription&) const; | |||||
| void prepareToPlay (double sampleRate, int estimatedSamplesPerBlock); | void prepareToPlay (double sampleRate, int estimatedSamplesPerBlock); | ||||
| void releaseResources(); | void releaseResources(); | ||||
| void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); | |||||
| void processBlock (AudioSampleBuffer&, MidiBuffer&); | |||||
| const String getInputChannelName (int channelIndex) const; | const String getInputChannelName (int channelIndex) const; | ||||
| const String getOutputChannelName (int channelIndex) const; | const String getOutputChannelName (int channelIndex) const; | ||||
| @@ -353,7 +350,7 @@ public: | |||||
| void setStateInformation (const void* data, int sizeInBytes); | void setStateInformation (const void* data, int sizeInBytes); | ||||
| /** @internal */ | /** @internal */ | ||||
| void setParentGraph (AudioProcessorGraph* graph); | |||||
| void setParentGraph (AudioProcessorGraph*); | |||||
| private: | private: | ||||
| const IODeviceType type; | const IODeviceType type; | ||||
| @@ -369,7 +366,7 @@ public: | |||||
| void prepareToPlay (double sampleRate, int estimatedSamplesPerBlock); | void prepareToPlay (double sampleRate, int estimatedSamplesPerBlock); | ||||
| void releaseResources(); | void releaseResources(); | ||||
| void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); | |||||
| void processBlock (AudioSampleBuffer&, MidiBuffer&); | |||||
| const String getInputChannelName (int channelIndex) const; | const String getInputChannelName (int channelIndex) const; | ||||
| const String getOutputChannelName (int channelIndex) const; | const String getOutputChannelName (int channelIndex) const; | ||||
| @@ -54,7 +54,7 @@ | |||||
| #include <ws2tcpip.h> | #include <ws2tcpip.h> | ||||
| #if JUCE_MINGW | #if JUCE_MINGW | ||||
| #include <wspiapi.h> | |||||
| #include <ws2spi.h> | |||||
| #endif | #endif | ||||
| #else | #else | ||||
| @@ -54,7 +54,7 @@ void Logger::writeToLog (const String& message) | |||||
| } | } | ||||
| #if JUCE_LOG_ASSERTIONS | #if JUCE_LOG_ASSERTIONS | ||||
| void JUCE_API juce_LogAssertion (const char* filename, const int lineNum) noexcept | |||||
| void JUCE_API logAssertion (const char* filename, const int lineNum) noexcept | |||||
| { | { | ||||
| String m ("JUCE Assertion failure in "); | String m ("JUCE Assertion failure in "); | ||||
| m << filename << ", line " << lineNum; | m << filename << ", line " << lineNum; | ||||
| @@ -102,7 +102,9 @@ | |||||
| #include <shlwapi.h> | #include <shlwapi.h> | ||||
| #include <mmsystem.h> | #include <mmsystem.h> | ||||
| #if ! JUCE_MINGW | |||||
| #if JUCE_MINGW | |||||
| #include <basetyps.h> | |||||
| #else | |||||
| #include <crtdbg.h> | #include <crtdbg.h> | ||||
| #include <comutil.h> | #include <comutil.h> | ||||
| #endif | #endif | ||||
| @@ -704,16 +704,20 @@ bool Process::openDocument (const String& fileName, const String& parameters) | |||||
| void File::revealToUser() const | void File::revealToUser() const | ||||
| { | { | ||||
| #pragma warning (push) | |||||
| #pragma warning (disable: 4090) // (alignment warning) | |||||
| #if JUCE_MINGW | |||||
| jassertfalse; // not supported in MinGW.. | |||||
| #else | |||||
| #pragma warning (push) | |||||
| #pragma warning (disable: 4090) // (alignment warning) | |||||
| ITEMIDLIST* const itemIDList = ILCreateFromPath (fullPath.toWideCharPointer()); | ITEMIDLIST* const itemIDList = ILCreateFromPath (fullPath.toWideCharPointer()); | ||||
| #pragma warning (pop) | |||||
| #pragma warning (pop) | |||||
| if (itemIDList != nullptr) | if (itemIDList != nullptr) | ||||
| { | { | ||||
| SHOpenFolderAndSelectItems (itemIDList, 0, nullptr, 0); | SHOpenFolderAndSelectItems (itemIDList, 0, nullptr, 0); | ||||
| ILFree (itemIDList); | ILFree (itemIDList); | ||||
| } | } | ||||
| #endif | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -52,7 +52,7 @@ | |||||
| // Debugging and assertion macros | // Debugging and assertion macros | ||||
| #if JUCE_LOG_ASSERTIONS | #if JUCE_LOG_ASSERTIONS | ||||
| #define juce_LogCurrentAssertion juce_LogAssertion (__FILE__, __LINE__); | |||||
| #define juce_LogCurrentAssertion juce::logAssertion (__FILE__, __LINE__); | |||||
| #elif JUCE_DEBUG | #elif JUCE_DEBUG | ||||
| #define juce_LogCurrentAssertion std::cerr << "JUCE Assertion failure in " << __FILE__ << ", line " << __LINE__ << std::endl; | #define juce_LogCurrentAssertion std::cerr << "JUCE Assertion failure in " << __FILE__ << ", line " << __LINE__ << std::endl; | ||||
| #else | #else | ||||
| @@ -154,7 +154,7 @@ BEGIN_JUCE_NAMESPACE | |||||
| extern JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger(); | extern JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger(); | ||||
| #if JUCE_LOG_ASSERTIONS | #if JUCE_LOG_ASSERTIONS | ||||
| extern JUCE_API void juce_LogAssertion (const char* filename, int lineNum) noexcept; | |||||
| extern JUCE_API void logAssertion (const char* filename, int lineNum) noexcept; | |||||
| #endif | #endif | ||||
| #include "../memory/juce_Memory.h" | #include "../memory/juce_Memory.h" | ||||
| @@ -27,14 +27,19 @@ | |||||
| // these are in the windows SDK, but need to be repeated here for GCC.. | // these are in the windows SDK, but need to be repeated here for GCC.. | ||||
| #ifndef GET_APPCOMMAND_LPARAM | #ifndef GET_APPCOMMAND_LPARAM | ||||
| #define FAPPCOMMAND_MASK 0xF000 | |||||
| #define GET_APPCOMMAND_LPARAM(lParam) ((short) (HIWORD (lParam) & ~FAPPCOMMAND_MASK)) | #define GET_APPCOMMAND_LPARAM(lParam) ((short) (HIWORD (lParam) & ~FAPPCOMMAND_MASK)) | ||||
| #define FAPPCOMMAND_MASK 0xF000 | |||||
| #define APPCOMMAND_MEDIA_NEXTTRACK 11 | #define APPCOMMAND_MEDIA_NEXTTRACK 11 | ||||
| #define APPCOMMAND_MEDIA_PREVIOUSTRACK 12 | #define APPCOMMAND_MEDIA_PREVIOUSTRACK 12 | ||||
| #define APPCOMMAND_MEDIA_STOP 13 | #define APPCOMMAND_MEDIA_STOP 13 | ||||
| #define APPCOMMAND_MEDIA_PLAY_PAUSE 14 | #define APPCOMMAND_MEDIA_PLAY_PAUSE 14 | ||||
| #endif | #endif | ||||
| #ifndef WM_APPCOMMAND | |||||
| #define WM_APPCOMMAND 0x0319 | |||||
| #endif | |||||
| extern void juce_repeatLastProcessPriority(); | extern void juce_repeatLastProcessPriority(); | ||||
| extern void juce_CheckCurrentlyFocusedTopLevelWindow(); // in juce_TopLevelWindow.cpp | extern void juce_CheckCurrentlyFocusedTopLevelWindow(); // in juce_TopLevelWindow.cpp | ||||
| extern bool juce_IsRunningInWine(); | extern bool juce_IsRunningInWine(); | ||||
| @@ -44,21 +49,22 @@ extern CheckEventBlockedByModalComps isEventBlockedByModalComps; | |||||
| static bool shouldDeactivateTitleBar = true; | static bool shouldDeactivateTitleBar = true; | ||||
| void* getUser32Function (const char* functionName) // (NB: this function also used from other modules) | |||||
| { | |||||
| HMODULE user32Mod = GetModuleHandleA ("user32.dll"); | |||||
| jassert (user32Mod != 0); | |||||
| return static_cast <void*> (GetProcAddress (user32Mod, functionName)); | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| typedef BOOL (WINAPI* UpdateLayeredWinFunc) (HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); | typedef BOOL (WINAPI* UpdateLayeredWinFunc) (HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); | ||||
| static UpdateLayeredWinFunc updateLayeredWindow = nullptr; | static UpdateLayeredWinFunc updateLayeredWindow = nullptr; | ||||
| bool Desktop::canUseSemiTransparentWindows() noexcept | bool Desktop::canUseSemiTransparentWindows() noexcept | ||||
| { | { | ||||
| if (updateLayeredWindow == 0) | |||||
| { | |||||
| if (! juce_IsRunningInWine()) | |||||
| { | |||||
| HMODULE user32Mod = GetModuleHandle (_T("user32.dll")); | |||||
| jassert (user32Mod != 0); | |||||
| updateLayeredWindow = (UpdateLayeredWinFunc) GetProcAddress (user32Mod, "UpdateLayeredWindow"); | |||||
| } | |||||
| } | |||||
| if (updateLayeredWindow == nullptr && ! juce_IsRunningInWine()) | |||||
| updateLayeredWindow = (UpdateLayeredWinFunc) getUser32Function ("UpdateLayeredWindow"); | |||||
| return updateLayeredWindow != 0; | return updateLayeredWindow != 0; | ||||
| } | } | ||||
| @@ -103,12 +109,9 @@ static bool canUseMultiTouch() | |||||
| { | { | ||||
| hasCheckedForMultiTouch = true; | hasCheckedForMultiTouch = true; | ||||
| HMODULE user32Mod = GetModuleHandle (_T("user32.dll")); | |||||
| jassert (user32Mod != 0); | |||||
| registerTouchWindow = (RegisterTouchWindowFunc) GetProcAddress (user32Mod, "RegisterTouchWindow"); | |||||
| getTouchInputInfo = (GetTouchInputInfoFunc) GetProcAddress (user32Mod, "GetTouchInputInfo"); | |||||
| closeTouchInputHandle = (CloseTouchInputHandleFunc) GetProcAddress (user32Mod, "CloseTouchInputHandle"); | |||||
| registerTouchWindow = (RegisterTouchWindowFunc) getUser32Function ("RegisterTouchWindow"); | |||||
| getTouchInputInfo = (GetTouchInputInfoFunc) getUser32Function ("GetTouchInputInfo"); | |||||
| closeTouchInputHandle = (CloseTouchInputHandleFunc) getUser32Function ("CloseTouchInputHandle"); | |||||
| } | } | ||||
| return registerTouchWindow != nullptr; | return registerTouchWindow != nullptr; | ||||
| @@ -99,7 +99,7 @@ namespace ActiveXHelpers | |||||
| If you don't call AddRef then others crash (e.g. QuickTime).. Bit of a catch-22, so letting it leak is probably preferable. | If you don't call AddRef then others crash (e.g. QuickTime).. Bit of a catch-22, so letting it leak is probably preferable. | ||||
| */ | */ | ||||
| if (lplpFrame != nullptr) { frame->AddRef(); *lplpFrame = frame; } | if (lplpFrame != nullptr) { frame->AddRef(); *lplpFrame = frame; } | ||||
| if (lplpDoc != nullptr) *lplpDoc = 0; | |||||
| if (lplpDoc != nullptr) *lplpDoc = nullptr; | |||||
| lpFrameInfo->fMDIApp = FALSE; | lpFrameInfo->fMDIApp = FALSE; | ||||
| lpFrameInfo->hwndFrame = window; | lpFrameInfo->hwndFrame = window; | ||||
| lpFrameInfo->haccel = 0; | lpFrameInfo->haccel = 0; | ||||
| @@ -146,7 +146,7 @@ namespace ActiveXHelpers | |||||
| JUCE_COMRESULT SaveObject() { return E_NOTIMPL; } | JUCE_COMRESULT SaveObject() { return E_NOTIMPL; } | ||||
| JUCE_COMRESULT GetMoniker (DWORD, DWORD, IMoniker**) { return E_NOTIMPL; } | JUCE_COMRESULT GetMoniker (DWORD, DWORD, IMoniker**) { return E_NOTIMPL; } | ||||
| JUCE_COMRESULT GetContainer (LPOLECONTAINER* ppContainer) { *ppContainer = 0; return E_NOINTERFACE; } | |||||
| JUCE_COMRESULT GetContainer (LPOLECONTAINER* ppContainer) { *ppContainer = nullptr; return E_NOINTERFACE; } | |||||
| JUCE_COMRESULT ShowObject() { return S_OK; } | JUCE_COMRESULT ShowObject() { return S_OK; } | ||||
| JUCE_COMRESULT OnShowWindow (BOOL) { return E_NOTIMPL; } | JUCE_COMRESULT OnShowWindow (BOOL) { return E_NOTIMPL; } | ||||
| JUCE_COMRESULT RequestNewObjectLayout() { return E_NOTIMPL; } | JUCE_COMRESULT RequestNewObjectLayout() { return E_NOTIMPL; } | ||||
| @@ -190,7 +190,7 @@ namespace ActiveXHelpers | |||||
| case WM_MBUTTONUP: | case WM_MBUTTONUP: | ||||
| case WM_RBUTTONUP: | case WM_RBUTTONUP: | ||||
| peer->handleMouseEvent (0, Point<int> (GET_X_LPARAM (lParam) + activeXRect.left - peerRect.left, | peer->handleMouseEvent (0, Point<int> (GET_X_LPARAM (lParam) + activeXRect.left - peerRect.left, | ||||
| GET_Y_LPARAM (lParam) + activeXRect.top - peerRect.top), | |||||
| GET_Y_LPARAM (lParam) + activeXRect.top - peerRect.top), | |||||
| ModifierKeys::getCurrentModifiersRealtime(), | ModifierKeys::getCurrentModifiersRealtime(), | ||||
| getMouseEventTime()); | getMouseEventTime()); | ||||
| break; | break; | ||||
| @@ -23,9 +23,12 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| // (these functions are from juce_win32_Windowing.cpp) | |||||
| extern void* getUser32Function (const char*); | |||||
| namespace IconConverters | namespace IconConverters | ||||
| { | { | ||||
| extern HICON createHICONFromImage (const Image& image, const BOOL isIcon, int hotspotX, int hotspotY); | |||||
| extern HICON createHICONFromImage (const Image&, BOOL isIcon, int hotspotX, int hotspotY); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -185,14 +188,6 @@ private: | |||||
| const DWORD taskbarCreatedMessage; | const DWORD taskbarCreatedMessage; | ||||
| enum { WM_TRAYNOTIFY = WM_USER + 100 }; | enum { WM_TRAYNOTIFY = WM_USER + 100 }; | ||||
| static void* getUser32Function (const char* functionName) | |||||
| { | |||||
| HMODULE user32Mod = GetModuleHandle (_T("user32.dll")); | |||||
| jassert (user32Mod != 0); | |||||
| return GetProcAddress (user32Mod, functionName); | |||||
| } | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Pimpl); | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Pimpl); | ||||
| }; | }; | ||||