New release announcement.

This commit is contained in:
Martin Rotter 2015-05-02 08:02:25 +02:00
parent 406c1257fa
commit 9106c422b9
8 changed files with 40 additions and 34 deletions

View File

@ -545,7 +545,7 @@ if(WIN32)
# set(APP_DLLS_QT4_MSVC2013 # set(APP_DLLS_QT4_MSVC2013
# resources/binaries/windows/deployment/qt4-msvc2013/libeay32.dll # resources/binaries/windows/deployment/qt4-msvc2013/libeay32.dll
# resources/binaries/windows/deployment/qt4-msvc2013/msvcp120.dll # resources/binaries/windows/deployment/qt4-msvc2013/msvcp120.dll
# resources/binaries/windows/deployment/qt4-msvc2013/msvcr120.dll # resourcegit coms/binaries/windows/deployment/qt4-msvc2013/msvcr120.dll
# resources/binaries/windows/deployment/qt4-msvc2013/QtCore4.dll # resources/binaries/windows/deployment/qt4-msvc2013/QtCore4.dll
# resources/binaries/windows/deployment/qt4-msvc2013/QtGui4.dll # resources/binaries/windows/deployment/qt4-msvc2013/QtGui4.dll
# resources/binaries/windows/deployment/qt4-msvc2013/QtNetwork4.dll # resources/binaries/windows/deployment/qt4-msvc2013/QtNetwork4.dll

View File

@ -1,4 +1,11 @@
<body> <body>
<center><h2>2.3.1</h2></center>
Fixed:
<ul>
<li>Many minor fixes, mainly code cleanup and refactoring.</li>
</ul>
<hr/>
<center><h2>2.3.0</h2></center> <center><h2>2.3.0</h2></center>
Fixed: Fixed:

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<releases> <releases>
<release version="2.2.0"> <release version="2.3.0">
<url platform="x86" os="Windows">https://bitbucket.org/skunkos/rssguard/downloads/rssguard-2.2.0-win32.exe</url> <url platform="x86" os="Windows">https://bitbucket.org/skunkos/rssguard/downloads/rssguard-2.3.0-win32.exe</url>
</release> </release>
</releases> </releases>

View File

@ -176,7 +176,7 @@ void FeedMessageViewer::onFeedUpdatesProgress(FeedsModelFeed *feed, int current,
} }
void FeedMessageViewer::onFeedUpdatesFinished() { void FeedMessageViewer::onFeedUpdatesFinished() {
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
qApp->mainForm()->statusBar()->clearProgressFeeds(); qApp->mainForm()->statusBar()->clearProgressFeeds();
m_messagesView->reloadSelections(1); m_messagesView->reloadSelections(1);
} }
@ -367,7 +367,7 @@ void FeedMessageViewer::initializeViews() {
} }
void FeedMessageViewer::vacuumDatabase() { void FeedMessageViewer::vacuumDatabase() {
if (!qApp->closeLock()->tryLock()) { if (!qApp->feedUpdateLock()->tryLock()) {
// Lock was not obtained because // Lock was not obtained because
// it is used probably by feed updater or application // it is used probably by feed updater or application
// is quitting. // is quitting.
@ -391,7 +391,7 @@ void FeedMessageViewer::vacuumDatabase() {
this); this);
} }
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
} }
void FeedMessageViewer::refreshVisualProperties() { void FeedMessageViewer::refreshVisualProperties() {

View File

@ -166,7 +166,7 @@ void FeedsView::loadExpandedStates() {
} }
void FeedsView::updateAllFeeds() { void FeedsView::updateAllFeeds() {
if (qApp->closeLock()->tryLock()) { if (qApp->feedUpdateLock()->tryLock()) {
emit feedsUpdateRequested(allFeeds()); emit feedsUpdateRequested(allFeeds());
} }
else { else {
@ -184,7 +184,7 @@ void FeedsView::updateAllFeedsOnStartup() {
} }
void FeedsView::updateSelectedFeeds() { void FeedsView::updateSelectedFeeds() {
if (qApp->closeLock()->tryLock()) { if (qApp->feedUpdateLock()->tryLock()) {
emit feedsUpdateRequested(selectedFeeds()); emit feedsUpdateRequested(selectedFeeds());
} }
else { else {
@ -195,7 +195,7 @@ void FeedsView::updateSelectedFeeds() {
} }
void FeedsView::executeNextAutoUpdate() { void FeedsView::executeNextAutoUpdate() {
if (!qApp->closeLock()->tryLock()) { if (!qApp->feedUpdateLock()->tryLock()) {
qDebug("Delaying scheduled feed auto-updates for one minute due to another running update."); qDebug("Delaying scheduled feed auto-updates for one minute due to another running update.");
// Cannot update, quit. // Cannot update, quit.
@ -219,7 +219,7 @@ void FeedsView::executeNextAutoUpdate() {
if (feeds_for_update.isEmpty()) { if (feeds_for_update.isEmpty()) {
// No feeds are scheduled for update now, unlock the master lock. // No feeds are scheduled for update now, unlock the master lock.
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
} }
else { else {
// Request update for given feeds. // Request update for given feeds.
@ -253,7 +253,7 @@ void FeedsView::clearAllFeeds() {
} }
void FeedsView::addNewCategory() { void FeedsView::addNewCategory() {
if (!qApp->closeLock()->tryLock()) { if (!qApp->feedUpdateLock()->tryLock()) {
// Lock was not obtained because // Lock was not obtained because
// it is used probably by feed updater or application // it is used probably by feed updater or application
// is quitting. // is quitting.
@ -270,7 +270,7 @@ void FeedsView::addNewCategory() {
delete form_pointer.data(); delete form_pointer.data();
// Changes are done, unlock the update master lock. // Changes are done, unlock the update master lock.
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
} }
void FeedsView::editCategory(FeedsModelCategory *category) { void FeedsView::editCategory(FeedsModelCategory *category) {
@ -282,7 +282,7 @@ void FeedsView::editCategory(FeedsModelCategory *category) {
} }
void FeedsView::addNewFeed() { void FeedsView::addNewFeed() {
if (!qApp->closeLock()->tryLock()) { if (!qApp->feedUpdateLock()->tryLock()) {
// Lock was not obtained because // Lock was not obtained because
// it is used probably by feed updater or application // it is used probably by feed updater or application
// is quitting. // is quitting.
@ -299,7 +299,7 @@ void FeedsView::addNewFeed() {
delete form_pointer.data(); delete form_pointer.data();
// Changes are done, unlock the update master lock. // Changes are done, unlock the update master lock.
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
} }
void FeedsView::editFeed(FeedsModelFeed *feed) { void FeedsView::editFeed(FeedsModelFeed *feed) {
@ -347,7 +347,7 @@ void FeedsView::receiveMessageCountsChange(MessagesModel::MessageMode mode,
} }
void FeedsView::editSelectedItem() { void FeedsView::editSelectedItem() {
if (!qApp->closeLock()->tryLock()) { if (!qApp->feedUpdateLock()->tryLock()) {
// Lock was not obtained because // Lock was not obtained because
// it is used probably by feed updater or application // it is used probably by feed updater or application
// is quitting. // is quitting.
@ -370,11 +370,11 @@ void FeedsView::editSelectedItem() {
} }
// Changes are done, unlock the update master lock. // Changes are done, unlock the update master lock.
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
} }
void FeedsView::deleteSelectedItem() { void FeedsView::deleteSelectedItem() {
if (!qApp->closeLock()->tryLock()) { if (!qApp->feedUpdateLock()->tryLock()) {
// Lock was not obtained because // Lock was not obtained because
// it is used probably by feed updater or application // it is used probably by feed updater or application
// is quitting. // is quitting.
@ -390,7 +390,7 @@ void FeedsView::deleteSelectedItem() {
if (!current_index.isValid()) { if (!current_index.isValid()) {
// Changes are done, unlock the update master lock and exit. // Changes are done, unlock the update master lock and exit.
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
return; return;
} }
@ -398,7 +398,7 @@ void FeedsView::deleteSelectedItem() {
tr("You are about to delete selected feed or category."), tr("Do you really want to delete selected item?"), tr("You are about to delete selected feed or category."), tr("Do you really want to delete selected item?"),
QString(), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::No) { QString(), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::No) {
// User changed his mind. // User changed his mind.
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
return; return;
} }
@ -415,7 +415,7 @@ void FeedsView::deleteSelectedItem() {
} }
// Changes are done, unlock the update master lock. // Changes are done, unlock the update master lock.
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
} }
void FeedsView::markSelectedFeedsReadStatus(int read) { void FeedsView::markSelectedFeedsReadStatus(int read) {

View File

@ -448,7 +448,7 @@ void FormMain::showAbout() {
} }
void FormMain::showUpdates() { void FormMain::showUpdates() {
if (!qApp->closeLock()->tryLock()) { if (!qApp->feedUpdateLock()->tryLock()) {
if (SystemTrayIcon::isSystemTrayActivated()) { if (SystemTrayIcon::isSystemTrayActivated()) {
qApp->trayIcon()->showMessage(tr("Cannot check for updates"), qApp->trayIcon()->showMessage(tr("Cannot check for updates"),
tr("You cannot check for updates because feed update is ongoing."), tr("You cannot check for updates because feed update is ongoing."),
@ -468,7 +468,7 @@ void FormMain::showUpdates() {
form_update.data()->exec(); form_update.data()->exec();
delete form_update.data(); delete form_update.data();
qApp->closeLock()->unlock(); qApp->feedUpdateLock()->unlock();
} }
void FormMain::showWiki() { void FormMain::showWiki() {

View File

@ -32,7 +32,7 @@
Application::Application(const QString &id, int &argc, char **argv) Application::Application(const QString &id, int &argc, char **argv)
: QtSingleApplication(id, argc, argv), : QtSingleApplication(id, argc, argv),
m_closeLock(NULL), m_userActions(QList<QAction*>()), m_mainForm(NULL), m_updateFeedsLock(NULL), m_userActions(QList<QAction*>()), m_mainForm(NULL),
m_trayIcon(NULL), m_settings(NULL), m_system(NULL), m_skins(NULL), m_trayIcon(NULL), m_settings(NULL), m_system(NULL), m_skins(NULL),
m_localization(NULL), m_icons(NULL), m_database(NULL), m_downloadManager(NULL), m_shouldRestart(false) { m_localization(NULL), m_icons(NULL), m_database(NULL), m_downloadManager(NULL), m_shouldRestart(false) {
connect(this, SIGNAL(aboutToQuit()), this, SLOT(onAboutToQuit())); connect(this, SIGNAL(aboutToQuit()), this, SLOT(onAboutToQuit()));
@ -41,7 +41,7 @@ Application::Application(const QString &id, int &argc, char **argv)
} }
Application::~Application() { Application::~Application() {
delete m_closeLock; delete m_updateFeedsLock;
} }
QList<QAction*> Application::userActions() { QList<QAction*> Application::userActions() {
@ -188,9 +188,8 @@ void Application::onSaveState(QSessionManager &manager) {
} }
void Application::onAboutToQuit() { void Application::onAboutToQuit() {
// Make sure that we obtain close lock // Make sure that we obtain close lock BEFORE even trying to quit the application.
// BEFORE even trying to quit the application. bool locked_safely = feedUpdateLock()->tryLock(CLOSE_LOCK_TIMEOUT);
bool locked_safely = closeLock()->tryLock(CLOSE_LOCK_TIMEOUT);
processEvents(); processEvents();
@ -209,7 +208,7 @@ void Application::onAboutToQuit() {
qDebug("Close lock was obtained safely."); qDebug("Close lock was obtained safely.");
// We locked the lock to exit peacefully, unlock it to avoid warnings. // We locked the lock to exit peacefully, unlock it to avoid warnings.
closeLock()->unlock(); feedUpdateLock()->unlock();
} }
else { else {
// Request for write lock timed-out. This means // Request for write lock timed-out. This means

View File

@ -110,12 +110,12 @@ class Application : public QtSingleApplication {
} }
// Access to application-wide close lock. // Access to application-wide close lock.
inline QMutex *closeLock() { inline QMutex *feedUpdateLock() {
if (m_closeLock == NULL) { if (m_updateFeedsLock == NULL) {
m_closeLock = new QMutex(); m_updateFeedsLock = new QMutex();
} }
return m_closeLock; return m_updateFeedsLock;
} }
inline FormMain *mainForm() { inline FormMain *mainForm() {
@ -188,7 +188,7 @@ class Application : public QtSingleApplication {
// But of user decides to close the application (in other words, // But of user decides to close the application (in other words,
// tries to lock the lock for writing), then no other // tries to lock the lock for writing), then no other
// action will be allowed to lock for reading. // action will be allowed to lock for reading.
QMutex *m_closeLock; QMutex *m_updateFeedsLock;
QList<QAction*> m_userActions; QList<QAction*> m_userActions;
FormMain *m_mainForm; FormMain *m_mainForm;
SystemTrayIcon *m_trayIcon; SystemTrayIcon *m_trayIcon;