Allow running only one instance of application.
							parent
							
								
									6f30949343
								
							
						
					
					
						commit
						5ebea2f7c9
					
				@ -0,0 +1,31 @@
 | 
			
		||||
#include "application.h"
 | 
			
		||||
 | 
			
		||||
Application::Application(int &argc, char **argv)
 | 
			
		||||
    :QApplication(argc, argv)
 | 
			
		||||
{
 | 
			
		||||
    m_single = new QSharedMemory("ShredMemoryForOneInstanceOfProdejnaApp", this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Application::~Application()
 | 
			
		||||
{
 | 
			
		||||
    if (m_single->isAttached())
 | 
			
		||||
    {
 | 
			
		||||
        m_single->detach();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Application::lock()
 | 
			
		||||
{
 | 
			
		||||
    if (m_single->attach(QSharedMemory::ReadOnly))
 | 
			
		||||
    {
 | 
			
		||||
        m_single->detach();
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (m_single->create(1))
 | 
			
		||||
    {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,21 @@
 | 
			
		||||
#ifndef APPLICATION_H
 | 
			
		||||
#define APPLICATION_H
 | 
			
		||||
 | 
			
		||||
#include <QApplication>
 | 
			
		||||
#include <QSharedMemory>
 | 
			
		||||
 | 
			
		||||
class Application : public QApplication
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    Application(int &argc, char **argv);
 | 
			
		||||
    ~Application();
 | 
			
		||||
 | 
			
		||||
    bool lock();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QSharedMemory *m_single;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // APPLICATION_H
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue