Commit Graph

42 Commits

Author SHA1 Message Date
Itay Grudev
46b2204a3f
Proposed SA changes still containing a race condition (#48) 2018-07-27 04:29:55 +03:00
Francis Giraldeau
f975da90cc Fix sendmessage (#46)
* Fix send message example

If a secondary instance sends a message immediately after connecting, the
message follows the init message. This causes the slotConnectionEstablished to
read and consume the tail of the message and interpret it as the checksum. The
checksum fails and the connection becomes invalid.

To avoid this race, we prefix the init message with its length. This way, we
consume only the data relevant to the init message.

This patch fixes the sending_arguments example.

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>

* Fix include file case

Signed-off-by: Francis Giraldeau <francis.giraldeau@nrc-cnrc.gc.ca>
2018-07-27 02:10:14 +03:00
Jedidiah Buck McCready
a956ae47d1 removed c style casts and eliminated all clang warnings, ... (#38)
* removed c style casts and eliminated all clang warnings, fixed instanceId reading from only one byte in deserialization of message, cleaned up serialization code using QDataStream, changed connection type to use quint8 enum rather than char

* renamed SingleAppConnectionType to ConnectionType, added initialization values to all ConnectionType enum cases
2017-12-03 17:04:02 +00:00
Itay Grudev
4f03651072 Primary PID support (#36)
* Added the ability to bring the primary application window to the foreground on Windows systems by adding an option flag. THis option can only be used in Windows development and in applications derived from QApplication with a QMainWindow object.
Because the primary application needs to be instructed to go to the foreground, the option SecondaryNotification must also be set to use this functionality

* Changed the ability to bring the primary application window to the front as discussed in itay-grudev/SingleApplication#31.

Now the process ID of the primary application get stored and is accessible for other instances of the application. It is to the developer to bring the applications windows to the front. For convenience the accompanying readme now contains a paragraph with example of how to do this on Windows systems.

* v3.0.9 Added SingleApplicationPrivate::primaryPid()
2017-10-02 12:17:41 +01:00
BG4444
ca149f4436 bugfix - change QApplication to macro QAPPLICATION_CLASS (#34)
Bug fix - changed QApplication to macro QCoreApplication when invoking QApplication::instance()
2017-08-20 20:30:29 +03:00
Itay Grudev
c2a6faca68 Removed QMutex for thread safe behaviour and support for multiple SingleApplication instances
Problem raised by @retmas in #24
2017-04-23 14:31:32 +03:00
Vitaly Tonkacheyev
eee5d9544b Fixed compilation error: cannot convert wchar_t* to LPSTR {aka char*} (#29) 2017-02-23 13:41:11 +00:00
Evgeny
d561026d83 Remove magic chars from code - use more readable code style (#28) 2017-02-22 13:27:48 +00:00
Itay Grudev
4841681918 Reverted GetUserName API usage on Windows (#25)
* Added back support for getting username on Windows

* Fixed typo in singleapplication.pri

* Compiler specific Advapi32.lib links

* Removed username debug statement
2017-02-02 04:28:00 +00:00
Itay Grudev
cf347c47af Refactored SingleApplicationPrivate destructor.
Deleted the separate cleanUp method as it’s not used from anywhere but
the destructor.
2017-01-30 17:47:01 +00:00
retmas
b0078af7d3 Fix memory leak on SingleApplicationPrivate destruction (#23)
The issue is non critical as if the library is used properly this destructor is not called until the end of the program anyway.
2017-01-30 17:38:16 +00:00
pjwhams
c7b8e20905 Fixed shadow variable warning (#21) 2017-01-24 22:18:55 +00:00
Itay Grudev
6a4d89297b
Removed Windows specific code for getting username
On the absolute path to the home directory is now explicitly used.
2017-01-24 17:25:00 +00:00
Itay Grudev
60d30db837
Refactored slotConnectionEstablished()
The code is now shorter and easier to understand. Fixed an
uninitialised variable warning as reported in #20.
2017-01-24 16:54:53 +00:00
Le Liu
5aa7430f56 Fix crash when username contains Unicode characters on Windows (#17)
*   Fixed bug on Windows with username containing wide characters causing the
    library to crash.
    _Le Liu_
2016-11-27 11:09:42 +00:00
Le Liu
0f821d44f3 Allow data exclusion for the server name hash and Windows fixes (#16)
*   Allows the application path and version to be excluded from the server name
    hash. The following flags were added for this purpose:
      * `SingleApplication::Mode::ExcludeAppVersion`
      * `SingleApplication::Mode::ExcludeAppPath`
*   Allow a non elevated process to connect to a local server created by an
    elevated process run by the same user on Windows
*   Fixes a problem with upper case letters in paths on Windows
2016-11-26 17:40:47 +00:00
Svintsov Dmitry
06f5e17544 fix Windows warning about unused parameter 2016-08-24 16:04:49 +05:00
Svintsov Dmitry
ebcfabc3ae Added missing "QMutex" dependencies 2016-08-22 15:29:14 +05:00
Itay Grudev
5d867d77a5
Fix bug (and compiler error) on Windows - wchar username support 2016-08-18 18:28:57 +01:00
Itay Grudev
4e5c1647cc
SingleApplication v3.0a 2016-08-10 03:41:03 +01:00
Itay Grudev
b459c9247b Fixed signal formatting 2016-07-10 01:11:55 +01:00
Itay Grudev
1db662d0e6 Updated license dates. Explicit license statement in the header and source files 2016-07-04 18:19:48 +01:00
Itay Grudev
fe84b5663e SIGBUSS should be signal 10. Fixed comment 2016-05-14 20:38:15 +01:00
Itay Grudev
5e67bf9751 Code style improvements 2016-05-04 21:05:59 +01:00
Itay Grudev
6fe4403941 Bugfix no showUp notification. Some minor improvements 2016-05-04 20:51:06 +01:00
Itay Grudev
8bccf446e1 Improved restoring QSharedMemory after crash 2016-05-04 20:41:23 +01:00
Itay Grudev
84d86455e7 Secondary instance implementation 2016-05-04 19:59:07 +01:00
Itay Grudev
fc5ce4c335 Bug fix possible situation in which memory is detached 2016-05-04 17:36:32 +01:00
Itay Grudev
c5ea3f6d30 Now handling all relevant signals
New handled signals are:

SIGHUP, SIGQUIT, SIGBUS, SIGSYS, SIGPIPE, SIGALRM, SIGXCPU, SIGXFSZ
2016-05-04 14:36:51 +01:00
Vlad Pyatnichenko
8eb993a7f8 Ensure backward compatibility and some cosmetic changes. 2016-04-05 20:31:05 +03:00
Vlad Pyatnichenko
7a3858a214 HOTFIX: use Q_Q instead of q_ptr directly. 2016-03-22 01:32:20 +02:00
Vlad Pyatnichenko
27df0ec8d0 HOTFIX: added Qt's modules prefixes to #include statements. 2016-03-06 01:09:04 +02:00
Vlad Pyatnichenko
35ee984d72 Adaptation to Qt's pimpl idiom design. Improved inheritance safety.
Details:
* Improved unsafe C-style macros inheritance approach to the project-wide
DEFINES: it is unspecified in
which order source files are being preprocessed ones, so in
singleapplication.cpp the class might be inherent of default-specified
base, while in main.cpp this can be a user-provided QAPPLICATION_CLASS
definition.

* Replace Qt's pseudo-keywords to more library-independent counterparts
('emit -> Q_EMIT', etc)

* Indentation fixes (80 character column-width)

* Rearragned #include statements: from most platform-independen to more
app-specific.

* Fixed some grammar typos.

* README.md updated respectively.
2016-03-05 01:05:45 +02:00
Itay Grudev
219383657a QApplication inherit macro 2015-06-09 17:29:20 +03:00
Itay Grudev
2dd9a4e553 Fixed race condition #3! Library version 2.1; Explained implementation in README 2015-06-06 00:32:50 +03:00
Itay Grudev
bae14d8d45 Client disconnect is not required 2015-05-07 15:53:48 +01:00
Itay Grudev
41eb2c3499 Fixed memory leak
As described in issue #2 each new socket is not deallocated and creates a memory leak
2015-05-07 15:29:06 +01:00
Itay Grudev
d33b4c1c61 Bugfix: SingleApplication passing a copy of argc instead of reference
QApplication uses a reference of argc so it could modify it's value when
it substitutes known arguments for example.

Thanks to @Chocobozzz for reporting the issue.
https://github.com/itay-grudev/SingleApplication/issues/1
2015-04-07 22:17:57 +01:00
Itay Grudev
ff14d2b59d Fixed new line issue 2015-02-26 19:19:38 +00:00
Itay Grudev
e16742fe4e Using Regex to remove invalid Filename Charecters 2015-02-26 19:09:45 +00:00
Itay Grudev
5c89ab17cf Completly rewritten and simplified source 2015-02-26 19:00:11 +00:00
Itay Grudev
230b4ebe94 Add base files 2012-12-23 00:12:38 +02:00