Save power by adding delay between network requests in background.
This commit is contained in:
parent
fd7563bc88
commit
15caa6f3c6
4 changed files with 20 additions and 1 deletions
|
@ -81,6 +81,8 @@ namespace {
|
|||
const QString TYPE_ANIMATED_EMOJI("animatedEmoji");
|
||||
const QString TYPE_INPUT_MESSAGE_REPLY_TO_MESSAGE("inputMessageReplyToMessage");
|
||||
const QString TYPE_DRAFT_MESSAGE("draftMessage");
|
||||
|
||||
const double POWERSAVING_TDLIB_REQUEST_INTERVAL = 100;
|
||||
}
|
||||
|
||||
static QString getChatPositionOrder(const QVariantMap &position)
|
||||
|
@ -191,9 +193,15 @@ void TDLibReceiver::setActive(bool active)
|
|||
} else {
|
||||
LOG("Deactivating receiver loop, this may take a while...");
|
||||
}
|
||||
this->powerSavingMode = false;
|
||||
this->isActive = active;
|
||||
}
|
||||
|
||||
void TDLibReceiver::setPowerSavingMode(bool powerSavingMode)
|
||||
{
|
||||
this->powerSavingMode = powerSavingMode;
|
||||
}
|
||||
|
||||
void TDLibReceiver::receiverLoop()
|
||||
{
|
||||
LOG("Starting receiver loop");
|
||||
|
@ -205,6 +213,9 @@ void TDLibReceiver::receiverLoop()
|
|||
VERBOSE("Raw result:" << receivedJsonDocument.toJson(QJsonDocument::Indented).constData());
|
||||
processReceivedDocument(receivedJsonDocument);
|
||||
}
|
||||
if(this->powerSavingMode) {
|
||||
msleep(POWERSAVING_TDLIB_REQUEST_INTERVAL);
|
||||
}
|
||||
}
|
||||
LOG("Stopping receiver loop");
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ class TDLibReceiver : public QThread
|
|||
public:
|
||||
explicit TDLibReceiver(void *tdLibClient, QObject *parent = nullptr);
|
||||
void setActive(bool active);
|
||||
void setPowerSavingMode(bool active);
|
||||
|
||||
signals:
|
||||
void versionDetected(const QString &version);
|
||||
|
@ -115,6 +116,7 @@ private:
|
|||
QHash<QString, Handler> handlers;
|
||||
void *tdLibClient;
|
||||
bool isActive;
|
||||
bool powerSavingMode;
|
||||
|
||||
private:
|
||||
static const QVariantList cleanupList(const QVariantList& list, bool *updated = Q_NULLPTR);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <QDir>
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
#include <QGuiApplication>
|
||||
#include <QLocale>
|
||||
#include <QProcess>
|
||||
#include <QSysInfo>
|
||||
|
@ -102,7 +103,7 @@ TDLibWrapper::TDLibWrapper(AppSettings *settings, MceInterface *mce, QObject *pa
|
|||
|
||||
connect(this->appSettings, SIGNAL(useOpenWithChanged()), this, SLOT(handleOpenWithChanged()));
|
||||
connect(this->appSettings, SIGNAL(storageOptimizerChanged()), this, SLOT(handleStorageOptimizerChanged()));
|
||||
|
||||
connect(qGuiApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(handleApplicationStateChanged(Qt::ApplicationState)));
|
||||
connect(networkConfigurationManager, SIGNAL(configurationChanged(QNetworkConfiguration)), this, SLOT(handleNetworkConfigurationChanged(QNetworkConfiguration)));
|
||||
|
||||
this->setLogVerbosityLevel();
|
||||
|
@ -2204,6 +2205,10 @@ void TDLibWrapper::handleGetPageSourceFinished()
|
|||
}
|
||||
}
|
||||
|
||||
void TDLibWrapper::handleApplicationStateChanged(Qt::ApplicationState state) {
|
||||
this->tdLibReceiver->setPowerSavingMode(state != Qt::ApplicationState::ApplicationActive);
|
||||
}
|
||||
|
||||
QVariantMap& TDLibWrapper::fillTdlibParameters(QVariantMap& parameters)
|
||||
{
|
||||
parameters.insert("api_id", TDLIB_API_ID);
|
||||
|
|
|
@ -373,6 +373,7 @@ public slots:
|
|||
void handleNetworkConfigurationChanged(const QNetworkConfiguration &config);
|
||||
void handleActiveEmojiReactionsUpdated(const QStringList& emojis);
|
||||
void handleGetPageSourceFinished();
|
||||
void handleApplicationStateChanged(Qt::ApplicationState state);
|
||||
|
||||
private:
|
||||
void setOption(const QString &name, const QString &type, const QVariant &value);
|
||||
|
|
Loading…
Reference in a new issue