summaryrefslogtreecommitdiff
path: root/src/singleinstance.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/singleinstance.h')
-rw-r--r--src/singleinstance.h40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/singleinstance.h b/src/singleinstance.h
index 14d49d6d..5f6c3633 100644
--- a/src/singleinstance.h
+++ b/src/singleinstance.h
@@ -27,8 +27,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
/**
* used to ensure only a single instance of Mod Organizer is started and to
- * allow secondary instances to send messages to the primary (visible) one. This way,
- * secondary instances can start a download in the primary one
+ * allow ephemeral instances to send messages to the primary (visible) one.
+ * This way, other instances can start a download in the primary one
**/
class SingleInstance : public QObject
{
@@ -36,24 +36,26 @@ class SingleInstance : public QObject
Q_OBJECT
public:
+ // `allowMultiple`: if another instance is running, run this one
+ // disconnected from the shared memory
+ explicit SingleInstance(bool allowMultiple, QObject *parent = 0);
/**
- * @brief constructor
- *
- * @param forcePrimary if true, this will be treated as the primary instance even
- * if another instance is running. This is used after an update since
- * the other instance is assumed to be in the process of quitting
- * @param parent parent object
- * @todo the forcePrimary parameter makes no sense. The second instance after an update
- * needs to delete the files from before the update so the first instance needs to quit
- * first anyway
+ * @return true if this instance's job is to forward data to the primary
+ * instance through shared memory
**/
- explicit SingleInstance(bool forcePrimary, QObject *parent = 0);
+ bool ephemeral() const
+ {
+ return m_Ephemeral;
+ }
- /**
- * @return true if this is the primary instance (the one that gets to display a UI)
- **/
- bool primaryInstance() const { return m_PrimaryInstance; }
+ // returns true if this is not the primary instance, but was allowed because
+ // of the AllowMultiple flag
+ //
+ bool secondary() const
+ {
+ return !m_Ephemeral && !m_OwnsSM;
+ }
/**
* send a message to the primary instance. This can be used to transmit download urls
@@ -65,7 +67,7 @@ public:
signals:
/**
- * @brief emitted when a secondary instance has sent a message (to us)
+ * @brief emitted when an ephemeral instance has sent a message (to us)
*
* @param message the message we received
**/
@@ -78,8 +80,8 @@ private slots:
void receiveMessage();
private:
-
- bool m_PrimaryInstance;
+ bool m_Ephemeral;
+ bool m_OwnsSM;
QSharedMemory m_SharedMem;
QLocalServer m_Server;