From 8ab304228360be5e8095e2bb932588a110660b46 Mon Sep 17 00:00:00 2001 From: Collin Kidder Date: Tue, 7 Jun 2016 10:58:13 -0400 Subject: [PATCH] Tweaks to make compiling possible on 32 bit systems. --- canframemodel.cpp | 25 +++++++++++++++++++------ canframemodel.h | 1 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/canframemodel.cpp b/canframemodel.cpp index fe54877..ef08b4f 100644 --- a/canframemodel.cpp +++ b/canframemodel.cpp @@ -34,8 +34,21 @@ int CANFrameModel::columnCount(const QModelIndex &index) const CANFrameModel::CANFrameModel(QObject *parent) : QAbstractTableModel(parent) { - frames.reserve(50000000); //yes, preallocating a huge number of frames. - filteredFrames.reserve(50000000); //the goal is to prevent a reallocation from ever happening + + if (QSysInfo::WordSize > 32) + { + qDebug() << "64 bit OS detected. Requesting a large preallocation"; + preallocSize = 50000000; + } + else //if compiling for 32 bit you can't ask for gigabytes of preallocation so tone it down. + { + qDebug() << "32 bit OS detected. Requesting a much restricted prealloc"; + preallocSize = 5000000; + } + + frames.reserve(preallocSize); + filteredFrames.reserve(preallocSize); //the goal is to prevent a reallocation from ever happening + dbcHandler = NULL; interpretFrames = false; overwriteDups = false; @@ -159,7 +172,7 @@ void CANFrameModel::recalcOverwrite() while (frames.count() > lastUnique) frames.removeLast(); filteredFrames.clear(); - filteredFrames.reserve(50000000); + filteredFrames.reserve(preallocSize); for (int i = 0; i < frames.count(); i++) { @@ -360,7 +373,7 @@ void CANFrameModel::sendRefresh() beginResetModel(); filteredFrames.clear(); filteredFrames.append(tempContainer); - filteredFrames.reserve(50000000); + filteredFrames.reserve(preallocSize); lastUpdateNumFrames = filteredFrames.count(); endResetModel(); mutex.unlock(); @@ -416,8 +429,8 @@ void CANFrameModel::clearFrames() frames.clear(); filteredFrames.clear(); filters.clear(); - frames.reserve(50000000); - filteredFrames.reserve(50000000); + frames.reserve(preallocSize); + filteredFrames.reserve(preallocSize); this->endResetModel(); lastUpdateNumFrames = 0; mutex.unlock(); diff --git a/canframemodel.h b/canframemodel.h index 7e93007..a994857 100644 --- a/canframemodel.h +++ b/canframemodel.h @@ -62,6 +62,7 @@ private: bool needFilterRefresh; uint64_t timeOffset; int lastUpdateNumFrames; + uint32_t preallocSize; };