|
|
@@ -22668,7 +22668,12 @@ void AudioThumbnail::setLevels (const MinMaxValue* const* values, int thumbIndex |
|
|
|
for (int i = jmin (numChans, channels.size()); --i >= 0;) |
|
|
|
channels.getUnchecked(i)->write (values[i], thumbIndex, numValues); |
|
|
|
|
|
|
|
numSamplesFinished = jmax (numSamplesFinished, (thumbIndex + numValues) * (int64) samplesPerThumbSample); |
|
|
|
const int64 start = thumbIndex * (int64) samplesPerThumbSample; |
|
|
|
const int64 end = (thumbIndex + numValues) * (int64) samplesPerThumbSample; |
|
|
|
|
|
|
|
if (numSamplesFinished >= start && end > numSamplesFinished) |
|
|
|
numSamplesFinished = end; |
|
|
|
|
|
|
|
totalSamples = jmax (numSamplesFinished, totalSamples); |
|
|
|
window->invalidate(); |
|
|
|
sendChangeMessage(); |
|
|
@@ -244735,8 +244740,8 @@ void FileOutputStream::flushInternal() |
|
|
|
|
|
|
|
MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMode mode) |
|
|
|
: address (nullptr), |
|
|
|
internal (nullptr), |
|
|
|
length (0) |
|
|
|
length (0), |
|
|
|
fileHandle (nullptr) |
|
|
|
{ |
|
|
|
jassert (mode == readOnly || mode == readWrite); |
|
|
|
|
|
|
@@ -244754,10 +244759,9 @@ MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMo |
|
|
|
HANDLE h = CreateFile (file.getFullPathName().toWideCharPointer(), accessMode, FILE_SHARE_READ, 0, |
|
|
|
createType, FILE_ATTRIBUTE_NORMAL, 0); |
|
|
|
|
|
|
|
internal = (void*) h; |
|
|
|
|
|
|
|
if (h != INVALID_HANDLE_VALUE) |
|
|
|
{ |
|
|
|
fileHandle = (void*) h; |
|
|
|
const int64 fileSize = file.getSize(); |
|
|
|
|
|
|
|
HANDLE mappingHandle = CreateFileMapping (h, 0, protect, (DWORD) (fileSize >> 32), (DWORD) fileSize, 0); |
|
|
@@ -244778,8 +244782,8 @@ MemoryMappedFile::~MemoryMappedFile() |
|
|
|
if (address != nullptr) |
|
|
|
UnmapViewOfFile (address); |
|
|
|
|
|
|
|
if (internal != nullptr) |
|
|
|
CloseHandle ((HANDLE) internal); |
|
|
|
if (fileHandle != nullptr) |
|
|
|
CloseHandle ((HANDLE) fileHandle); |
|
|
|
} |
|
|
|
|
|
|
|
int64 File::getSize() const |
|
|
@@ -260572,42 +260576,37 @@ void FileOutputStream::flushInternal() |
|
|
|
|
|
|
|
MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMode mode) |
|
|
|
: address (nullptr), |
|
|
|
internal (nullptr), |
|
|
|
length (0) |
|
|
|
length (0), |
|
|
|
fileHandle (0) |
|
|
|
{ |
|
|
|
jassert (mode == readOnly || mode == readWrite); |
|
|
|
|
|
|
|
const int fd = open (file.getFullPathName().toUTF8(), |
|
|
|
mode == readWrite ? (O_CREAT + O_RDWR) : O_RDONLY, 00644); |
|
|
|
fileHandle = open (file.getFullPathName().toUTF8(), |
|
|
|
mode == readWrite ? (O_CREAT + O_RDWR) : O_RDONLY, 00644); |
|
|
|
|
|
|
|
internal = reinterpret_cast<void*> (fd); |
|
|
|
|
|
|
|
if (fd != -1) |
|
|
|
if (fileHandle != -1) |
|
|
|
{ |
|
|
|
const int64 fileSize = file.getSize(); |
|
|
|
|
|
|
|
address = mmap (0, (size_t) fileSize, |
|
|
|
void* m = mmap (0, (size_t) fileSize, |
|
|
|
mode == readWrite ? (PROT_READ | PROT_WRITE) : PROT_READ, |
|
|
|
MAP_SHARED, fd, 0); |
|
|
|
MAP_SHARED, fileHandle, 0); |
|
|
|
|
|
|
|
if (address == MAP_FAILED) |
|
|
|
address = nullptr; |
|
|
|
else |
|
|
|
if (m != MAP_FAILED) |
|
|
|
{ |
|
|
|
address = m; |
|
|
|
length = (size_t) fileSize; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
MemoryMappedFile::~MemoryMappedFile() |
|
|
|
{ |
|
|
|
const int fd = reinterpret_cast <int> (internal); |
|
|
|
|
|
|
|
if (fd != 0) |
|
|
|
{ |
|
|
|
if (address != nullptr) |
|
|
|
munmap (address, length); |
|
|
|
if (address != nullptr) |
|
|
|
munmap (address, length); |
|
|
|
|
|
|
|
close (fd); |
|
|
|
} |
|
|
|
if (fileHandle != 0) |
|
|
|
close (fileHandle); |
|
|
|
} |
|
|
|
|
|
|
|
const File juce_getExecutableFile() |
|
|
@@ -270603,42 +270602,37 @@ void FileOutputStream::flushInternal() |
|
|
|
|
|
|
|
MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMode mode) |
|
|
|
: address (nullptr), |
|
|
|
internal (nullptr), |
|
|
|
length (0) |
|
|
|
length (0), |
|
|
|
fileHandle (0) |
|
|
|
{ |
|
|
|
jassert (mode == readOnly || mode == readWrite); |
|
|
|
|
|
|
|
const int fd = open (file.getFullPathName().toUTF8(), |
|
|
|
mode == readWrite ? (O_CREAT + O_RDWR) : O_RDONLY, 00644); |
|
|
|
|
|
|
|
internal = reinterpret_cast<void*> (fd); |
|
|
|
fileHandle = open (file.getFullPathName().toUTF8(), |
|
|
|
mode == readWrite ? (O_CREAT + O_RDWR) : O_RDONLY, 00644); |
|
|
|
|
|
|
|
if (fd != -1) |
|
|
|
if (fileHandle != -1) |
|
|
|
{ |
|
|
|
const int64 fileSize = file.getSize(); |
|
|
|
|
|
|
|
address = mmap (0, (size_t) fileSize, |
|
|
|
void* m = mmap (0, (size_t) fileSize, |
|
|
|
mode == readWrite ? (PROT_READ | PROT_WRITE) : PROT_READ, |
|
|
|
MAP_SHARED, fd, 0); |
|
|
|
MAP_SHARED, fileHandle, 0); |
|
|
|
|
|
|
|
if (address == MAP_FAILED) |
|
|
|
address = nullptr; |
|
|
|
else |
|
|
|
if (m != MAP_FAILED) |
|
|
|
{ |
|
|
|
address = m; |
|
|
|
length = (size_t) fileSize; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
MemoryMappedFile::~MemoryMappedFile() |
|
|
|
{ |
|
|
|
const int fd = reinterpret_cast <int> (internal); |
|
|
|
|
|
|
|
if (fd != 0) |
|
|
|
{ |
|
|
|
if (address != nullptr) |
|
|
|
munmap (address, length); |
|
|
|
if (address != nullptr) |
|
|
|
munmap (address, length); |
|
|
|
|
|
|
|
close (fd); |
|
|
|
} |
|
|
|
if (fileHandle != 0) |
|
|
|
close (fileHandle); |
|
|
|
} |
|
|
|
|
|
|
|
const File juce_getExecutableFile() |
|
|
@@ -287469,42 +287463,37 @@ void FileOutputStream::flushInternal() |
|
|
|
|
|
|
|
MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMode mode) |
|
|
|
: address (nullptr), |
|
|
|
internal (nullptr), |
|
|
|
length (0) |
|
|
|
length (0), |
|
|
|
fileHandle (0) |
|
|
|
{ |
|
|
|
jassert (mode == readOnly || mode == readWrite); |
|
|
|
|
|
|
|
const int fd = open (file.getFullPathName().toUTF8(), |
|
|
|
mode == readWrite ? (O_CREAT + O_RDWR) : O_RDONLY, 00644); |
|
|
|
fileHandle = open (file.getFullPathName().toUTF8(), |
|
|
|
mode == readWrite ? (O_CREAT + O_RDWR) : O_RDONLY, 00644); |
|
|
|
|
|
|
|
internal = reinterpret_cast<void*> (fd); |
|
|
|
|
|
|
|
if (fd != -1) |
|
|
|
if (fileHandle != -1) |
|
|
|
{ |
|
|
|
const int64 fileSize = file.getSize(); |
|
|
|
|
|
|
|
address = mmap (0, (size_t) fileSize, |
|
|
|
void* m = mmap (0, (size_t) fileSize, |
|
|
|
mode == readWrite ? (PROT_READ | PROT_WRITE) : PROT_READ, |
|
|
|
MAP_SHARED, fd, 0); |
|
|
|
MAP_SHARED, fileHandle, 0); |
|
|
|
|
|
|
|
if (address == MAP_FAILED) |
|
|
|
address = nullptr; |
|
|
|
else |
|
|
|
if (m != MAP_FAILED) |
|
|
|
{ |
|
|
|
address = m; |
|
|
|
length = (size_t) fileSize; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
MemoryMappedFile::~MemoryMappedFile() |
|
|
|
{ |
|
|
|
const int fd = reinterpret_cast <int> (internal); |
|
|
|
|
|
|
|
if (fd != 0) |
|
|
|
{ |
|
|
|
if (address != nullptr) |
|
|
|
munmap (address, length); |
|
|
|
if (address != nullptr) |
|
|
|
munmap (address, length); |
|
|
|
|
|
|
|
close (fd); |
|
|
|
} |
|
|
|
if (fileHandle != 0) |
|
|
|
close (fileHandle); |
|
|
|
} |
|
|
|
|
|
|
|
const File juce_getExecutableFile() |
|
|
|