Skip to content

Commit 744ef0f

Browse files
authored
Merge pull request #181 from sieren/windows-fixes-1
0.5.6 Fixes
2 parents 349b9f8 + 4c7a2e8 commit 744ef0f

File tree

5 files changed

+20
-9
lines changed

5 files changed

+20
-9
lines changed

QSyncthingTray.pro

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ SOURCES = sources/qst/main.cpp \
2424
sources/qst/updatenotifier.cpp \
2525
sources/contrib/qcustomplot.cpp
2626
RESOURCES = \
27-
resources/qsyncthing.qrc
27+
resources/qsyncthing.qrc \
28+
resources/qsyncthingblueanim.qrc \
29+
resources/qsyncthingdarkanim.qrc
2830

2931
QT += widgets
3032
QT += network

includes/qst/window.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class Window : public QDialog
7272
private slots:
7373
void updateConnectionHealth(const ConnectionStateData& state);
7474
void onNetworkActivity(bool activity);
75-
void setIcon(int index);
75+
void setIcon(int index, const bool isManualSet = false);
7676
void iconActivated(QSystemTrayIcon::ActivationReason reason);
7777
void showWebView();
7878
void messageClicked();

sources/qst/statswidget.cpp

+11-3
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,11 @@ void StatsWidget::closeEvent(QCloseEvent* event)
182182
void StatsWidget::addConnectionPoint(const std::uint16_t& numConn)
183183
{
184184
using namespace std::chrono;
185-
std::lock_guard<std::mutex> lock(mDataGuard);
185+
std::unique_lock<std::mutex> lock(mDataGuard, std::try_to_lock);
186+
if(!lock.owns_lock())
187+
{
188+
return;
189+
}
186190
mConnectionPoints.emplace_back(std::make_tuple(numConn, system_clock::now()));
187191
cleanupTimeData(mConnectionPoints, std::chrono::minutes{mMaxTimeInPlotMins});
188192
zeroMissingTimeData(mConnectionPoints);
@@ -193,7 +197,11 @@ void StatsWidget::addConnectionPoint(const std::uint16_t& numConn)
193197

194198
void StatsWidget::updateTrafficData(const TrafficData& traffData)
195199
{
196-
std::lock_guard<std::mutex> lock(mDataGuard);
200+
std::unique_lock<std::mutex> lock(mDataGuard, std::try_to_lock);
201+
if(!lock.owns_lock())
202+
{
203+
return;
204+
}
197205
mTrafficPoints.push_back(traffData);
198206
cleanupTimeData(mTrafficPoints, std::chrono::minutes{mMaxTimeInPlotMins});
199207
zeroMissingTimeData(mTrafficPoints);
@@ -340,11 +348,11 @@ void StatsWidget::zeroMissingTimeData(Container &vec)
340348
};
341349

342350
const auto itDist = std::adjacent_find(vec.begin(), vec.end(), timeCmp);
343-
const auto itDistEnd = std::next(itDist, 1);
344351
if (itDist == vec.end())
345352
{
346353
return;
347354
}
355+
const auto itDistEnd = std::next(itDist, 1);
348356
assert(itDistEnd != vec.end());
349357
const auto& timePointStart = std::get<TimeValueTypePosition>(*itDist);
350358
const auto& timePointEnd = std::get<TimeValueTypePosition>(*itDistEnd);

sources/qst/syncconnector.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ void SyncConnector::connectionHealthReceived(QNetworkReply* reply)
267267
auto result = mAPIHandler->getConnections(replyData);
268268
auto traffic = mAPIHandler->getCurrentTraffic(replyData);
269269

270-
emit(onNetworkActivityChanged(std::get<1>(traffic) + std::get<1>(traffic) > kNetworkNoiseFloor));
270+
emit(onNetworkActivityChanged(std::get<0>(traffic) + std::get<1>(traffic) > kNetworkNoiseFloor));
271271
emit(onConnectionHealthChanged({result, traffic}));
272272

273273
reply->deleteLater();

sources/qst/window.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343

4444
//! Layout
45-
#define currentVersion "0.5.5rc2"
45+
#define currentVersion "0.5.6"
4646
#define maximumWidth 400
4747
static const std::list<std::pair<std::string, std::string>> kIconSet(
4848
{{":/images/syncthingBlue.png", ":/images/syncthingGrey.png"},
@@ -165,13 +165,13 @@ void Window::onUpdateConnState(const ConnectionState& result)
165165

166166
//------------------------------------------------------------------------------------//
167167

168-
void Window::setIcon(const int index)
168+
void Window::setIcon(const int index, const bool isManualSet)
169169
{
170170
// temporary workaround as setIcon seems to leak memory
171171
// https://bugreports.qt.io/browse/QTBUG-23658?jql=text%20~%20%22setIcon%20memory%22
172172
// https://bugreports.qt.io/browse/QTBUG-16113?jql=text%20~%20%22setIcon%20memory%22
173173

174-
if (index != mLastIconIndex)
174+
if (index != mLastIconIndex || isManualSet)
175175
{
176176
QIcon icon;
177177
std::pair<std::string, std::string> iconSet = mIconMonochrome ?
@@ -314,6 +314,7 @@ void Window::monoChromeIconChanged(const int state)
314314
{
315315
mIconMonochrome = state == 2 ? true : false;
316316
mSettings.setValue("monochromeIcon", mIconMonochrome);
317+
setIcon(mLastIconIndex, true);
317318
}
318319

319320

0 commit comments

Comments
 (0)