diff --git a/extras/Introjucer/Source/Project/jucer_ProjectExport_Android.h b/extras/Introjucer/Source/Project/jucer_ProjectExport_Android.h index 02dddf65ee..46b1cae854 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectExport_Android.h +++ b/extras/Introjucer/Source/Project/jucer_ProjectExport_Android.h @@ -55,7 +55,7 @@ public: getTargetLocation() = getDefaultBuildsRootFolder() + "Android"; if (getSDKPath().toString().isEmpty()) - getSDKPath() = "${user.home}/SDKs/android-sdk-mac_86"; + getSDKPath() = "${user.home}/SDKs/android-sdk-mac_x86"; if (getNDKPath().toString().isEmpty()) getNDKPath() = "${user.home}/SDKs/android-ndk-r5"; diff --git a/extras/JuceDemo/Builds/Android/local.properties b/extras/JuceDemo/Builds/Android/local.properties index 0f2a997c4e..d04423f3c7 100644 --- a/extras/JuceDemo/Builds/Android/local.properties +++ b/extras/JuceDemo/Builds/Android/local.properties @@ -1,6 +1,6 @@ # This file is used to override default values used by the Ant build system. # It is automatically generated by the Jucer - DO NOT EDIT IT or your changes will be lost!. -sdk.dir=${user.home}/SDKs/android-sdk-mac_86 +sdk.dir=${user.home}/SDKs/android-sdk-mac_x86 ndk.dir=${user.home}/SDKs/android-ndk-r5 diff --git a/extras/JuceDemo/Juce Demo.jucer b/extras/JuceDemo/Juce Demo.jucer index 94cbedb865..c1874be94d 100644 --- a/extras/JuceDemo/Juce Demo.jucer +++ b/extras/JuceDemo/Juce Demo.jucer @@ -21,7 +21,7 @@ - diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index 17f27b87c7..57e611b09b 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -1658,9 +1658,15 @@ SystemStats::CPUFlags SystemStats::cpuFlags; const String SystemStats::getJUCEVersion() { - return "JUCE v" + String (JUCE_MAJOR_VERSION) - + "." + String (JUCE_MINOR_VERSION) - + "." + String (JUCE_BUILDNUMBER); + #define JUCE_STRINGIFYVERSION2(a) #a + #define JUCE_STRINGIFYVERSION(a) JUCE_STRINGIFYVERSION2(a) + + return "JUCE v" JUCE_STRINGIFYVERSION(JUCE_MAJOR_VERSION) + "." JUCE_STRINGIFYVERSION(JUCE_MINOR_VERSION) + "." JUCE_STRINGIFYVERSION(JUCE_BUILDNUMBER); + + #undef JUCE_STRINGIFYVERSION + #undef JUCE_STRINGIFYVERSION2 } #ifdef JUCE_DLL @@ -1779,7 +1785,7 @@ namespace TimeHelpers #elif JUCE_WINDOWS HeapBlock tempDest; tempDest.calloc (maxChars + 2); - const int result = (int) wcsftime (tempDest, maxChars, format.toUTF16(), tm); + const int result = (int) wcsftime (tempDest, maxChars, format.toWideCharPointer(), tm); if (result > 0) dest.writeAll (CharPointer_UTF16 (tempDest.getData())); return result; @@ -71021,15 +71027,13 @@ public: if (owner->shouldDropFilesWhenDraggedExternally (dragDescLocal, source, files, canMoveFiles) && files.size() > 0) { - WeakReference cdw (this); + WeakReference thisWeakRef (this); setVisible (false); if (ModifierKeys::getCurrentModifiersRealtime().isAnyMouseButtonDown()) DragAndDropContainer::performExternalDragDropOfFiles (files, canMoveFiles); - if (cdw != 0) - delete this; - + delete thisWeakRef.get(); return; } } @@ -242089,7 +242093,7 @@ DynamicLibraryLoader::~DynamicLibraryLoader() bool DynamicLibraryLoader::load (const String& name) { FreeLibrary ((HMODULE) libHandle); - libHandle = name.isNotEmpty() ? LoadLibrary (name.toUTF16()) : 0; + libHandle = name.isNotEmpty() ? LoadLibrary (name.toWideCharPointer()) : 0; return libHandle != 0; } @@ -242110,7 +242114,7 @@ void* DynamicLibraryLoader::findProcAddress (const String& functionName) void Logger::outputDebugString (const String& text) { - OutputDebugString ((text + "\n").toUTF16()); + OutputDebugString ((text + "\n").toWideCharPointer()); } static int64 hiResTicksPerSecond; @@ -242698,9 +242702,9 @@ void Process::lowerPrivilege() void Process::terminate() { - #if JUCE_MSVC && JUCE_CHECK_MEMORY_LEAKS + #if JUCE_MSVC && JUCE_CHECK_MEMORY_LEAKS _CrtDumpMemoryLeaks(); - #endif + #endif // bullet in the head in case there's a problem shutting down.. ExitProcess (0); @@ -242712,7 +242716,7 @@ void* PlatformUtilities::loadDynamicLibrary (const String& name) JUCE_TRY { - result = LoadLibrary (name.toUTF16()); + result = LoadLibrary (name.toWideCharPointer()); } JUCE_CATCH_ALL @@ -242880,7 +242884,7 @@ namespace WindowsFileHelpers { ULARGE_INTEGER spc, tot, totFree; - if (GetDiskFreeSpaceEx (getDriveFromPath (path).toUTF16(), &spc, &tot, &totFree)) + if (GetDiskFreeSpaceEx (getDriveFromPath (path).toWideCharPointer(), &spc, &tot, &totFree)) return total ? (int64) tot.QuadPart : (int64) spc.QuadPart; @@ -242889,7 +242893,7 @@ namespace WindowsFileHelpers unsigned int getWindowsDriveType (const String& path) { - return GetDriveType (getDriveFromPath (path).toUTF16()); + return GetDriveType (getDriveFromPath (path).toWideCharPointer()); } const File getSpecialFolderPath (int type) @@ -242909,25 +242913,25 @@ const String File::separatorString ("\\"); bool File::exists() const { return fullPath.isNotEmpty() - && GetFileAttributes (fullPath.toUTF16()) != INVALID_FILE_ATTRIBUTES; + && GetFileAttributes (fullPath.toWideCharPointer()) != INVALID_FILE_ATTRIBUTES; } bool File::existsAsFile() const { return fullPath.isNotEmpty() - && (GetFileAttributes (fullPath.toUTF16()) & FILE_ATTRIBUTE_DIRECTORY) == 0; + && (GetFileAttributes (fullPath.toWideCharPointer()) & FILE_ATTRIBUTE_DIRECTORY) == 0; } bool File::isDirectory() const { - const DWORD attr = GetFileAttributes (fullPath.toUTF16()); + const DWORD attr = GetFileAttributes (fullPath.toWideCharPointer()); return ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) && (attr != INVALID_FILE_ATTRIBUTES); } bool File::hasWriteAccess() const { if (exists()) - return (GetFileAttributes (fullPath.toUTF16()) & FILE_ATTRIBUTE_READONLY) == 0; + return (GetFileAttributes (fullPath.toWideCharPointer()) & FILE_ATTRIBUTE_READONLY) == 0; // on windows, it seems that even read-only directories can still be written into, // so checking the parent directory's permissions would return the wrong result.. @@ -242936,7 +242940,7 @@ bool File::hasWriteAccess() const bool File::setFileReadOnlyInternal (const bool shouldBeReadOnly) const { - DWORD attr = GetFileAttributes (fullPath.toUTF16()); + DWORD attr = GetFileAttributes (fullPath.toWideCharPointer()); if (attr == INVALID_FILE_ATTRIBUTES) return false; @@ -242949,22 +242953,21 @@ bool File::setFileReadOnlyInternal (const bool shouldBeReadOnly) const else attr &= ~FILE_ATTRIBUTE_READONLY; - return SetFileAttributes (fullPath.toUTF16(), attr) != FALSE; + return SetFileAttributes (fullPath.toWideCharPointer(), attr) != FALSE; } bool File::isHidden() const { - return (GetFileAttributes (getFullPathName().toUTF16()) & FILE_ATTRIBUTE_HIDDEN) != 0; + return (GetFileAttributes (getFullPathName().toWideCharPointer()) & FILE_ATTRIBUTE_HIDDEN) != 0; } bool File::deleteFile() const { if (! exists()) return true; - else if (isDirectory()) - return RemoveDirectory (fullPath.toUTF16()) != 0; - else - return DeleteFile (fullPath.toUTF16()) != 0; + + return isDirectory() ? RemoveDirectory (fullPath.toWideCharPointer()) != 0 + : DeleteFile (fullPath.toWideCharPointer()) != 0; } bool File::moveToTrash() const @@ -242990,17 +242993,17 @@ bool File::moveToTrash() const bool File::copyInternal (const File& dest) const { - return CopyFile (fullPath.toUTF16(), dest.getFullPathName().toUTF16(), false) != 0; + return CopyFile (fullPath.toWideCharPointer(), dest.getFullPathName().toWideCharPointer(), false) != 0; } bool File::moveInternal (const File& dest) const { - return MoveFile (fullPath.toUTF16(), dest.getFullPathName().toUTF16()) != 0; + return MoveFile (fullPath.toWideCharPointer(), dest.getFullPathName().toWideCharPointer()) != 0; } void File::createDirectoryInternal (const String& fileName) const { - CreateDirectory (fileName.toUTF16(), 0); + CreateDirectory (fileName.toWideCharPointer(), 0); } int64 juce_fileSetPosition (void* handle, int64 pos) @@ -243015,7 +243018,7 @@ void FileInputStream::openHandle() { totalSize = file.getSize(); - HANDLE h = CreateFile (file.getFullPathName().toUTF16(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, + HANDLE h = CreateFile (file.getFullPathName().toWideCharPointer(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, 0); if (h != INVALID_HANDLE_VALUE) @@ -243041,7 +243044,7 @@ size_t FileInputStream::readInternal (void* buffer, size_t numBytes) void FileOutputStream::openHandle() { - HANDLE h = CreateFile (file.getFullPathName().toUTF16(), GENERIC_WRITE, FILE_SHARE_READ, 0, + HANDLE h = CreateFile (file.getFullPathName().toWideCharPointer(), GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (h != INVALID_HANDLE_VALUE) @@ -243085,7 +243088,7 @@ int64 File::getSize() const { WIN32_FILE_ATTRIBUTE_DATA attributes; - if (GetFileAttributesEx (fullPath.toUTF16(), GetFileExInfoStandard, &attributes)) + if (GetFileAttributesEx (fullPath.toWideCharPointer(), GetFileExInfoStandard, &attributes)) return (((int64) attributes.nFileSizeHigh) << 32) | attributes.nFileSizeLow; return 0; @@ -243096,7 +243099,7 @@ void File::getFileTimesInternal (int64& modificationTime, int64& accessTime, int using namespace WindowsFileHelpers; WIN32_FILE_ATTRIBUTE_DATA attributes; - if (GetFileAttributesEx (fullPath.toUTF16(), GetFileExInfoStandard, &attributes)) + if (GetFileAttributesEx (fullPath.toWideCharPointer(), GetFileExInfoStandard, &attributes)) { modificationTime = fileTimeToTime (&attributes.ftLastWriteTime); creationTime = fileTimeToTime (&attributes.ftCreationTime); @@ -243113,7 +243116,7 @@ bool File::setFileTimesInternal (int64 modificationTime, int64 accessTime, int64 using namespace WindowsFileHelpers; bool ok = false; - HANDLE h = CreateFile (fullPath.toUTF16(), GENERIC_WRITE, FILE_SHARE_READ, 0, + HANDLE h = CreateFile (fullPath.toWideCharPointer(), GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (h != INVALID_HANDLE_VALUE) @@ -243161,7 +243164,7 @@ void File::findFileSystemRoots (Array& destArray) const String File::getVolumeLabel() const { TCHAR dest[64]; - if (! GetVolumeInformation (WindowsFileHelpers::getDriveFromPath (getFullPathName()).toUTF16(), dest, + if (! GetVolumeInformation (WindowsFileHelpers::getDriveFromPath (getFullPathName()).toWideCharPointer(), dest, numElementsInArray (dest), 0, 0, 0, 0, 0)) dest[0] = 0; @@ -243173,7 +243176,7 @@ int File::getVolumeSerialNumber() const TCHAR dest[64]; DWORD serialNum; - if (! GetVolumeInformation (WindowsFileHelpers::getDriveFromPath (getFullPathName()).toUTF16(), dest, + if (! GetVolumeInformation (WindowsFileHelpers::getDriveFromPath (getFullPathName()).toWideCharPointer(), dest, numElementsInArray (dest), &serialNum, 0, 0, 0, 0)) return 0; @@ -243282,7 +243285,7 @@ const File File::getCurrentWorkingDirectory() bool File::setAsCurrentWorkingDirectory() const { - return SetCurrentDirectory (getFullPathName().toUTF16()) != FALSE; + return SetCurrentDirectory (getFullPathName().toWideCharPointer()) != FALSE; } const String File::getVersion() const @@ -243290,11 +243293,11 @@ const String File::getVersion() const String result; DWORD handle = 0; - DWORD bufferSize = GetFileVersionInfoSize (getFullPathName().toUTF16(), &handle); + DWORD bufferSize = GetFileVersionInfoSize (getFullPathName().toWideCharPointer(), &handle); HeapBlock buffer; buffer.calloc (bufferSize); - if (GetFileVersionInfo (getFullPathName().toUTF16(), 0, bufferSize, buffer)) + if (GetFileVersionInfo (getFullPathName().toWideCharPointer(), 0, bufferSize, buffer)) { VS_FIXEDFILEINFO* vffi; UINT len = 0; @@ -243327,7 +243330,7 @@ const File File::getLinkedTarget() const ComSmartPtr persistFile; if (SUCCEEDED (shellLink.QueryInterface (IID_IPersistFile, persistFile))) { - if (SUCCEEDED (persistFile->Load (p.toUTF16(), STGM_READ)) + if (SUCCEEDED (persistFile->Load (p.toWideCharPointer(), STGM_READ)) && SUCCEEDED (shellLink->Resolve (0, SLR_ANY_MATCH | SLR_NO_UI))) { WIN32_FIND_DATA winFindData; @@ -243366,7 +243369,7 @@ public: if (handle == INVALID_HANDLE_VALUE) { - handle = FindFirstFile (directoryWithWildCard.toUTF16(), &findData); + handle = FindFirstFile (directoryWithWildCard.toWideCharPointer(), &findData); if (handle == INVALID_HANDLE_VALUE) return false; @@ -243418,7 +243421,7 @@ bool PlatformUtilities::openDocument (const String& fileName, const String& para JUCE_TRY { - hInstance = ShellExecute (0, 0, fileName.toUTF16(), parameters.toUTF16(), 0, SW_SHOWDEFAULT); + hInstance = ShellExecute (0, 0, fileName.toWideCharPointer(), parameters.toWideCharPointer(), 0, SW_SHOWDEFAULT); } JUCE_CATCH_ALL @@ -243444,9 +243447,9 @@ public: { cancelEvent = CreateEvent (0, FALSE, FALSE, 0); - pipeH = isPipe ? CreateNamedPipe (file.toUTF16(), PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, 0, + pipeH = isPipe ? CreateNamedPipe (file.toWideCharPointer(), PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, 0, PIPE_UNLIMITED_INSTANCES, 4096, 4096, 0, 0) - : CreateFile (file.toUTF16(), GENERIC_READ | GENERIC_WRITE, 0, 0, + : CreateFile (file.toWideCharPointer(), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); } @@ -243870,7 +243873,7 @@ private: uc.lpszUrlPath = file; uc.lpszHostName = server; - if (InternetCrackUrl (address.toUTF16(), 0, 0, &uc)) + if (InternetCrackUrl (address.toWideCharPointer(), 0, 0, &uc)) { int disable = 1; InternetSetOption (sessionHandle, INTERNET_OPTION_DISABLE_AUTODIAL, &disable, sizeof (disable)); @@ -243930,7 +243933,7 @@ private: INTERNET_BUFFERS buffers; zerostruct (buffers); buffers.dwStructSize = sizeof (INTERNET_BUFFERS); - buffers.lpcszHeader = headers.toUTF16(); + buffers.lpcszHeader = headers.toWideCharPointer(); buffers.dwHeadersLength = headers.length(); buffers.dwBufferTotal = (DWORD) postData.getSize(); @@ -244158,13 +244161,13 @@ namespace if (createForWriting) { - if (RegCreateKeyEx (rootKey, name.toUTF16(), 0, 0, REG_OPTION_NON_VOLATILE, + if (RegCreateKeyEx (rootKey, name.toWideCharPointer(), 0, 0, REG_OPTION_NON_VOLATILE, (KEY_WRITE | KEY_QUERY_VALUE), 0, &key, &result) == ERROR_SUCCESS) return key; } else { - if (RegOpenKeyEx (rootKey, name.toUTF16(), 0, KEY_READ, &key) == ERROR_SUCCESS) + if (RegOpenKeyEx (rootKey, name.toWideCharPointer(), 0, KEY_READ, &key) == ERROR_SUCCESS) return key; } } @@ -244185,7 +244188,7 @@ const String PlatformUtilities::getRegistryValue (const String& regValuePath, unsigned long bufferSize = sizeof (buffer); DWORD type = REG_SZ; - if (RegQueryValueEx (k, valueName.toUTF16(), 0, &type, (LPBYTE) buffer, &bufferSize) == ERROR_SUCCESS) + if (RegQueryValueEx (k, valueName.toWideCharPointer(), 0, &type, (LPBYTE) buffer, &bufferSize) == ERROR_SUCCESS) { if (type == REG_SZ) result = buffer; @@ -244207,7 +244210,7 @@ void PlatformUtilities::setRegistryValue (const String& regValuePath, if (k != 0) { - RegSetValueEx (k, valueName.toUTF16(), 0, REG_SZ, + RegSetValueEx (k, valueName.toWideCharPointer(), 0, REG_SZ, (const BYTE*) value.toWideCharPointer(), CharPointer_UTF16::getBytesRequiredFor (value.getCharPointer())); @@ -244227,7 +244230,7 @@ bool PlatformUtilities::registryValueExists (const String& regValuePath) unsigned long bufferSize = sizeof (buffer); DWORD type = 0; - if (RegQueryValueEx (k, valueName.toUTF16(), 0, &type, buffer, &bufferSize) == ERROR_SUCCESS) + if (RegQueryValueEx (k, valueName.toWideCharPointer(), 0, &type, buffer, &bufferSize) == ERROR_SUCCESS) exists = true; RegCloseKey (k); @@ -244243,7 +244246,7 @@ void PlatformUtilities::deleteRegistryValue (const String& regValuePath) if (k != 0) { - RegDeleteValue (k, valueName.toUTF16()); + RegDeleteValue (k, valueName.toWideCharPointer()); RegCloseKey (k); } } @@ -244255,7 +244258,7 @@ void PlatformUtilities::deleteRegistryKey (const String& regKeyPath) if (k != 0) { - RegDeleteKey (k, valueName.toUTF16()); + RegDeleteKey (k, valueName.toWideCharPointer()); RegCloseKey (k); } } @@ -244319,9 +244322,9 @@ void PlatformUtilities::setCurrentModuleInstanceHandle (void* const newHandle) t void PlatformUtilities::fpuReset() { -#if JUCE_MSVC + #if JUCE_MSVC _clearfp(); -#endif + #endif } void PlatformUtilities::beep() @@ -244589,7 +244592,7 @@ void MessageManager::doPlatformSpecificInitialisation() wc.lpfnWndProc = (WNDPROC) juce_MessageWndProc; wc.cbWndExtra = 4; wc.hInstance = hmod; - wc.lpszClassName = className.toUTF16(); + wc.lpszClassName = className.toWideCharPointer(); RegisterClassEx (&wc); @@ -244602,7 +244605,7 @@ void MessageManager::doPlatformSpecificInitialisation() void MessageManager::doPlatformSpecificShutdown() { DestroyWindow (juce_messageWindowHandle); - UnregisterClass (getMessageWindowClassName().toUTF16(), 0); + UnregisterClass (getMessageWindowClassName().toWideCharPointer(), 0); OleUninitialize(); } @@ -245901,8 +245904,6 @@ static bool shouldDeactivateTitleBar = true; #define WM_TRAYNOTIFY WM_USER + 100 -using ::abs; - typedef BOOL (WINAPI* UpdateLayeredWinFunc) (HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); static UpdateLayeredWinFunc updateLayeredWindow = 0; @@ -246027,7 +246028,7 @@ public: previousBitmap = SelectObject (hdc, hBitmap); if (format_ == Image::ARGB && clearImage) - zeromem (bitmapData, abs (h * lineStride)); + zeromem (bitmapData, std::abs (h * lineStride)); imageData = bitmapData - (lineStride * (h - 1)); } @@ -246303,11 +246304,7 @@ public: HWND parentToAddTo_) : ComponentPeer (component, windowStyleFlags), dontRepaint (false), - #if JUCE_DIRECT2D - currentRenderingEngine (direct2DRenderingEngine), - #else currentRenderingEngine (softwareRenderingEngine), - #endif fullScreen (false), isDragging (false), isMouseOver (false), @@ -246374,7 +246371,7 @@ public: void setTitle (const String& title) { - SetWindowText (hwnd, title.toUTF16()); + SetWindowText (hwnd, title.toWideCharPointer()); } void setPosition (int x, int y) @@ -246905,7 +246902,7 @@ private: wcex.cbSize = sizeof (wcex); wcex.style = CS_OWNDC; wcex.lpfnWndProc = (WNDPROC) windowProc; - wcex.lpszClassName = windowClassName.toUTF16(); + wcex.lpszClassName = windowClassName.toWideCharPointer(); wcex.cbClsExtra = 0; wcex.cbWndExtra = 32; wcex.hInstance = moduleHandle; @@ -246922,7 +246919,7 @@ private: ~WindowClassHolder() { if (ComponentPeer::getNumPeers() == 0) - UnregisterClass (windowClassName.toUTF16(), (HINSTANCE) PlatformUtilities::getCurrentModuleInstanceHandle()); + UnregisterClass (windowClassName.toWideCharPointer(), (HINSTANCE) PlatformUtilities::getCurrentModuleInstanceHandle()); clearSingletonInstance(); } @@ -246987,12 +246984,12 @@ private: && Desktop::canUseSemiTransparentWindows()) exstyle |= WS_EX_LAYERED; - hwnd = CreateWindowEx (exstyle, WindowClassHolder::getInstance()->windowClassName.toUTF16(), L"", type, 0, 0, 0, 0, + hwnd = CreateWindowEx (exstyle, WindowClassHolder::getInstance()->windowClassName.toWideCharPointer(), L"", type, 0, 0, 0, 0, parentToAddTo, 0, (HINSTANCE) PlatformUtilities::getCurrentModuleInstanceHandle(), 0); - #if JUCE_DIRECT2D - updateDirect2DContext(); - #endif + #if JUCE_DIRECT2D + setCurrentRenderingEngine (1); + #endif if (hwnd != 0) { @@ -247092,7 +247089,7 @@ private: void handlePaintMessage() { -#if JUCE_DIRECT2D + #if JUCE_DIRECT2D if (direct2DContext != 0) { RECT r; @@ -247106,7 +247103,8 @@ private: } } else -#endif + #endif + { HRGN rgn = CreateRectRgn (0, 0, 0, 0); const int regionType = GetUpdateRgn (hwnd, rgn, false); @@ -247231,9 +247229,9 @@ private: EndPaint (hwnd, &paintStruct); } -#ifndef JUCE_GCC //xxx should add this fn for gcc.. + #ifndef JUCE_GCC _fpreset(); // because some graphics cards can unmask FP exceptions -#endif + #endif lastPaintTime = Time::getMillisecondCounter(); } @@ -247247,15 +247245,11 @@ private: { StringArray s (ComponentPeer::getAvailableRenderingEngines()); -#if JUCE_DIRECT2D - // xxx is this correct? Seems to enable it on Vista too?? - OSVERSIONINFO info; - zerostruct (info); - info.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); - GetVersionEx (&info); - if (info.dwMajorVersion >= 6) + #if JUCE_DIRECT2D + if (SystemStats::getOperatingSystemType() >= SystemStats::Windows7) s.add ("Direct2D"); -#endif + #endif + return s; } @@ -247264,7 +247258,7 @@ private: return currentRenderingEngine; } -#if JUCE_DIRECT2D + #if JUCE_DIRECT2D void updateDirect2DContext() { if (currentRenderingEngine != direct2DRenderingEngine) @@ -247272,17 +247266,20 @@ private: else if (direct2DContext == 0) direct2DContext = new Direct2DLowLevelGraphicsContext (hwnd); } -#endif + #endif void setCurrentRenderingEngine (int index) { (void) index; -#if JUCE_DIRECT2D - currentRenderingEngine = index == 1 ? direct2DRenderingEngine : softwareRenderingEngine; - updateDirect2DContext(); - repaint (component->getLocalBounds()); -#endif + #if JUCE_DIRECT2D + if (getAvailableRenderingEngines().size() > 1) + { + currentRenderingEngine = index == 1 ? direct2DRenderingEngine : softwareRenderingEngine; + updateDirect2DContext(); + repaint (component->getLocalBounds()); + } + #endif } void doMouseMove (const Point& position) @@ -248246,7 +248243,7 @@ bool AlertWindow::showNativeDialogBox (const String& title, const String& bodyText, bool isOkCancel) { - return MessageBox (0, bodyText.toUTF16(), title.toUTF16(), + return MessageBox (0, bodyText.toWideCharPointer(), title.toWideCharPointer(), MB_SETFOREGROUND | (isOkCancel ? MB_OKCANCEL : MB_OK)) == IDOK; } @@ -248513,7 +248510,6 @@ class JuceDropSource : public ComBaseClassHelper { public: JuceDropSource() {} - ~JuceDropSource() {} HRESULT __stdcall QueryContinueDrag (BOOL escapePressed, DWORD keys) { @@ -248541,8 +248537,6 @@ public: { } - ~JuceEnumFormatEtc() {} - HRESULT __stdcall Clone (IEnumFORMATETC** result) { if (result == 0) @@ -248939,7 +248933,7 @@ void FileChooser::showPlatformDialog (Array& results, const String& title_ bi.hwndOwner = (HWND) parentWindow.getWindowHandle(); bi.pszDisplayName = files; - bi.lpszTitle = title.toUTF16(); + bi.lpszTitle = title.toWideCharPointer(); bi.lParam = (LPARAM) &info; bi.lpfn = browseCallbackProc; #ifdef BIF_USENEWUI @@ -249006,8 +249000,8 @@ void FileChooser::showPlatformDialog (Array& results, const String& title_ of.nFilterIndex = 1; of.lpstrFile = files; of.nMaxFile = charsAvailableForResult; - of.lpstrInitialDir = localPath.toUTF16(); - of.lpstrTitle = title.toUTF16(); + of.lpstrInitialDir = localPath.toWideCharPointer(); + of.lpstrTitle = title.toWideCharPointer(); of.Flags = flags; of.lCustData = (LPARAM) &info; @@ -249115,7 +249109,6 @@ namespace ActiveXHelpers { public: JuceIStorage() {} - ~JuceIStorage() {} HRESULT __stdcall CreateStream (const WCHAR*, DWORD, DWORD, DWORD, IStream**) { return E_NOTIMPL; } HRESULT __stdcall OpenStream (const WCHAR*, void*, DWORD, DWORD, IStream**) { return E_NOTIMPL; } @@ -249140,7 +249133,6 @@ namespace ActiveXHelpers public: JuceOleInPlaceFrame (HWND window_) : window (window_) {} - ~JuceOleInPlaceFrame() {} HRESULT __stdcall GetWindow (HWND* lphwnd) { *lphwnd = window; return S_OK; } HRESULT __stdcall ContextSensitiveHelp (BOOL) { return E_NOTIMPL; } @@ -253710,7 +253702,7 @@ private: // doing a direct load of the COM object (only available via the juce_createASIOAudioIODeviceForGUID function). if (optionalDllForDirectLoading.isNotEmpty()) { - HMODULE h = LoadLibrary (optionalDllForDirectLoading.toUTF16()); + HMODULE h = LoadLibrary (optionalDllForDirectLoading.toWideCharPointer()); if (h != 0) { @@ -254690,7 +254682,7 @@ private: { HKEY subKey; - if (RegOpenKeyEx (hk, keyName.toUTF16(), 0, KEY_READ, &subKey) == ERROR_SUCCESS) + if (RegOpenKeyEx (hk, keyName.toWideCharPointer(), 0, KEY_READ, &subKey) == ERROR_SUCCESS) { TCHAR buf [256] = { 0 }; DWORD dtype = REG_SZ; @@ -257455,7 +257447,7 @@ public: if (SUCCEEDED (hr)) { - hr = fileSink->SetFileName (file.getFullPathName().toUTF16(), 0); + hr = fileSink->SetFileName (file.getFullPathName().toWideCharPointer(), 0); if (SUCCEEDED (hr)) { @@ -257499,7 +257491,7 @@ public: .replace ("$AVGTIMEPERFRAME", String (10000000 / maxFramesPerSecond)); ComSmartPtr currentProfile; - hr = profileManager->LoadProfileByData (prof.toUTF16(), currentProfile.resetAndGetPointerAddress()); + hr = profileManager->LoadProfileByData (prof.toWideCharPointer(), currentProfile.resetAndGetPointerAddress()); hr = asfConfig->ConfigureFilterUsingProfile (currentProfile); if (SUCCEEDED (hr)) diff --git a/juce_amalgamated.h b/juce_amalgamated.h index 4ff32233a7..b646e1f53b 100644 --- a/juce_amalgamated.h +++ b/juce_amalgamated.h @@ -73,7 +73,7 @@ namespace JuceDummyNamespace {} */ #define JUCE_MAJOR_VERSION 1 #define JUCE_MINOR_VERSION 53 -#define JUCE_BUILDNUMBER 48 +#define JUCE_BUILDNUMBER 49 /** Current Juce version number. @@ -17390,8 +17390,6 @@ public: /** Returns the current version of JUCE, - (just in case you didn't already know at compile-time.) - See also the JUCE_VERSION, JUCE_MAJOR_VERSION and JUCE_MINOR_VERSION macros. */ static const String getJUCEVersion(); @@ -34172,8 +34170,8 @@ public: inline void skip (int numSamples) throw() { data += numSamples; } inline float getAsFloatLE() const throw() { return (float) ((1.0 / (1.0 + maxValue)) * (int16) ByteOrder::swapIfBigEndian (*data)); } inline float getAsFloatBE() const throw() { return (float) ((1.0 / (1.0 + maxValue)) * (int16) ByteOrder::swapIfLittleEndian (*data)); } - inline void setAsFloatLE (float newValue) throw() { *data = ByteOrder::swapIfBigEndian ((uint16) jlimit ((int16) -maxValue, (int16) maxValue, (int16) roundToInt (newValue * (1.0 + maxValue)))); } - inline void setAsFloatBE (float newValue) throw() { *data = ByteOrder::swapIfLittleEndian ((uint16) jlimit ((int16) -maxValue, (int16) maxValue, (int16) roundToInt (newValue * (1.0 + maxValue)))); } + inline void setAsFloatLE (float newValue) throw() { *data = ByteOrder::swapIfBigEndian ((uint16) jlimit ((int) -maxValue, (int) maxValue, roundToInt (newValue * (1.0 + maxValue)))); } + inline void setAsFloatBE (float newValue) throw() { *data = ByteOrder::swapIfLittleEndian ((uint16) jlimit ((int) -maxValue, (int) maxValue, roundToInt (newValue * (1.0 + maxValue)))); } inline int32 getAsInt32LE() const throw() { return (int32) (ByteOrder::swapIfBigEndian ((uint16) *data) << 16); } inline int32 getAsInt32BE() const throw() { return (int32) (ByteOrder::swapIfLittleEndian ((uint16) *data) << 16); } inline void setAsInt32LE (int32 newValue) throw() { *data = ByteOrder::swapIfBigEndian ((uint16) (newValue >> 16)); } diff --git a/src/audio/dsp/juce_AudioDataConverters.h b/src/audio/dsp/juce_AudioDataConverters.h index 670c5a8532..834f48bfb8 100644 --- a/src/audio/dsp/juce_AudioDataConverters.h +++ b/src/audio/dsp/juce_AudioDataConverters.h @@ -156,8 +156,8 @@ public: inline void skip (int numSamples) throw() { data += numSamples; } inline float getAsFloatLE() const throw() { return (float) ((1.0 / (1.0 + maxValue)) * (int16) ByteOrder::swapIfBigEndian (*data)); } inline float getAsFloatBE() const throw() { return (float) ((1.0 / (1.0 + maxValue)) * (int16) ByteOrder::swapIfLittleEndian (*data)); } - inline void setAsFloatLE (float newValue) throw() { *data = ByteOrder::swapIfBigEndian ((uint16) jlimit ((int16) -maxValue, (int16) maxValue, (int16) roundToInt (newValue * (1.0 + maxValue)))); } - inline void setAsFloatBE (float newValue) throw() { *data = ByteOrder::swapIfLittleEndian ((uint16) jlimit ((int16) -maxValue, (int16) maxValue, (int16) roundToInt (newValue * (1.0 + maxValue)))); } + inline void setAsFloatLE (float newValue) throw() { *data = ByteOrder::swapIfBigEndian ((uint16) jlimit ((int) -maxValue, (int) maxValue, roundToInt (newValue * (1.0 + maxValue)))); } + inline void setAsFloatBE (float newValue) throw() { *data = ByteOrder::swapIfLittleEndian ((uint16) jlimit ((int) -maxValue, (int) maxValue, roundToInt (newValue * (1.0 + maxValue)))); } inline int32 getAsInt32LE() const throw() { return (int32) (ByteOrder::swapIfBigEndian ((uint16) *data) << 16); } inline int32 getAsInt32BE() const throw() { return (int32) (ByteOrder::swapIfLittleEndian ((uint16) *data) << 16); } inline void setAsInt32LE (int32 newValue) throw() { *data = ByteOrder::swapIfBigEndian ((uint16) (newValue >> 16)); } diff --git a/src/core/juce_StandardHeader.h b/src/core/juce_StandardHeader.h index 42bb1f4bcc..c9c615c631 100644 --- a/src/core/juce_StandardHeader.h +++ b/src/core/juce_StandardHeader.h @@ -33,7 +33,7 @@ */ #define JUCE_MAJOR_VERSION 1 #define JUCE_MINOR_VERSION 53 -#define JUCE_BUILDNUMBER 48 +#define JUCE_BUILDNUMBER 49 /** Current Juce version number.