view src/runguard.h @ 243:975eeb71576f rel-0_9_3

Bump version.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 08 May 2018 00:43:46 +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