mirror of
https://github.com/KDE/konsole.git
synced 2025-12-23 23:38:08 -05:00
Make CompactHistoryBlock size variable
When needed CompactHistoryBlock can now increase from 256kb to a bigger size. BUG: 436031
This commit is contained in:
@@ -9,13 +9,19 @@
|
||||
|
||||
using namespace Konsole;
|
||||
|
||||
CompactHistoryBlock::CompactHistoryBlock() :
|
||||
_blockLength(4096 * 64), // 256kb
|
||||
_head(static_cast<quint8 *>(mmap(nullptr, _blockLength, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0))),
|
||||
constexpr size_t BLOCK_LENGTH = 4096 * 64 ; // 256kb
|
||||
|
||||
CompactHistoryBlock::CompactHistoryBlock(size_t blockLength) :
|
||||
_blockLength(BLOCK_LENGTH),
|
||||
_tail(nullptr),
|
||||
_blockStart(nullptr),
|
||||
_allocCount(0)
|
||||
{
|
||||
if (blockLength > _blockLength) {
|
||||
_blockLength = blockLength;
|
||||
}
|
||||
|
||||
_head = static_cast<quint8 *>(mmap(nullptr, _blockLength, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0));
|
||||
Q_ASSERT(_head != MAP_FAILED);
|
||||
_tail = _blockStart = _head;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Konsole
|
||||
class CompactHistoryBlock
|
||||
{
|
||||
public:
|
||||
CompactHistoryBlock();
|
||||
CompactHistoryBlock(size_t blockLength = 0);
|
||||
|
||||
virtual ~CompactHistoryBlock();
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ CompactHistoryBlockList::CompactHistoryBlockList()
|
||||
void *CompactHistoryBlockList::allocate(size_t size)
|
||||
{
|
||||
if (_blocks.empty() || _blocks.back()->remaining() < size) {
|
||||
_blocks.push_back(std::make_unique<CompactHistoryBlock>());
|
||||
_blocks.push_back(std::make_unique<CompactHistoryBlock>(size));
|
||||
////qDebug() << "new block created, remaining " << block->remaining() << "number of blocks=" << _blocks.size();
|
||||
}
|
||||
return _blocks.back()->allocate(size);
|
||||
|
||||
@@ -38,9 +38,9 @@ public:
|
||||
protected:
|
||||
CompactHistoryBlockList &_blockListRef;
|
||||
CharacterFormat *_formatArray;
|
||||
quint16 _length;
|
||||
int _length;
|
||||
uint *_text;
|
||||
quint16 _formatLength;
|
||||
int _formatLength;
|
||||
LineProperty _lineProperty;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user