view src/runguard.h @ 232:07d837442c55

Open the links in about dialog via external web browser.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 11 Apr 2018 12:42:11 +0300
parents 37d5f4329449
children
line wrap: on
line source

//
// Taken and modified from https://stackoverflow.com/questions/5006547/qt-best-practice-for-a-single-instance-app-protection
//
#ifndef RUNGUARD_H
#define RUNGUARD_H

#include <QObject>
#include <QSharedMemory>
#include <QSystemSemaphore>


class RunGuard
{

public:
    RunGuard(const QString &key);
    ~RunGuard();

    bool isAnotherRunning();
    bool tryToRun();
    void release();

private:
    const QString key;
    const QString memLockKey;
    const QString sharedmemKey;

    QSharedMemory sharedMem;
    QSystemSemaphore memLock;

    Q_DISABLE_COPY(RunGuard)
};


#endif // RUNGUARD_H