mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-15 00:24:19 +00:00
Small fixes to MemoryMappedFile, AudioThumbnail.
This commit is contained in:
parent
df2526e33b
commit
2ecb4d3419
6 changed files with 94 additions and 96 deletions
|
|
@ -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 (address != nullptr)
|
||||
munmap (address, length);
|
||||
|
||||
if (fd != 0)
|
||||
{
|
||||
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);
|
||||
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 (address != nullptr)
|
||||
munmap (address, length);
|
||||
|
||||
if (fd != 0)
|
||||
{
|
||||
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 (address != nullptr)
|
||||
munmap (address, length);
|
||||
|
||||
if (fd != 0)
|
||||
{
|
||||
if (address != nullptr)
|
||||
munmap (address, length);
|
||||
|
||||
close (fd);
|
||||
}
|
||||
if (fileHandle != 0)
|
||||
close (fileHandle);
|
||||
}
|
||||
|
||||
const File juce_getExecutableFile()
|
||||
|
|
|
|||
|
|
@ -19463,9 +19463,14 @@ public:
|
|||
private:
|
||||
|
||||
void* address;
|
||||
void* internal;
|
||||
size_t length;
|
||||
|
||||
#if JUCE_WINDOWS
|
||||
void* fileHandle;
|
||||
#else
|
||||
int fileHandle;
|
||||
#endif
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MemoryMappedFile);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -706,7 +706,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();
|
||||
|
|
|
|||
|
|
@ -74,9 +74,14 @@ public:
|
|||
private:
|
||||
//==============================================================================
|
||||
void* address;
|
||||
void* internal;
|
||||
size_t length;
|
||||
|
||||
#if JUCE_WINDOWS
|
||||
void* fileHandle;
|
||||
#else
|
||||
int fileHandle;
|
||||
#endif
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MemoryMappedFile);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -526,42 +526,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 (address != nullptr)
|
||||
munmap (address, length);
|
||||
|
||||
if (fd != 0)
|
||||
{
|
||||
if (address != nullptr)
|
||||
munmap (address, length);
|
||||
|
||||
close (fd);
|
||||
}
|
||||
if (fileHandle != 0)
|
||||
close (fileHandle);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -302,8 +302,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);
|
||||
|
||||
|
|
@ -321,10 +321,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);
|
||||
|
|
@ -345,8 +344,8 @@ MemoryMappedFile::~MemoryMappedFile()
|
|||
if (address != nullptr)
|
||||
UnmapViewOfFile (address);
|
||||
|
||||
if (internal != nullptr)
|
||||
CloseHandle ((HANDLE) internal);
|
||||
if (fileHandle != nullptr)
|
||||
CloseHandle ((HANDLE) fileHandle);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue