Commit Graph

1042 Commits

Author SHA1 Message Date
Povilas Kanapickas
0f29c7716d Merge pull request #656 from galkinvv/fix-win10-cpu-usage-spikes
Fixes high cpu usage spikes on win10
2020-06-05 00:30:22 +03:00
GeorgH93
64a9320d61 Fix build on Windows 2020-06-03 15:48:44 +02:00
Jonathan Martens
583b2cb5ae Make connection message a NOTE for consistency
When disconnected a NOTE log entry is made in the log, when connected it just prints which seems inconsistent to me:

```
[2020-06-01T11:50:55] INFO: AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD

	/home/jonathan/barrier/src/lib/net/SecureSocket.cpp,872
connected to server
[2020-06-01T11:52:43] INFO: entering screen
```
vs.
```
[2020-06-01T11:59:01] NOTE: disconnected from server
	/home/jonathan/barrier/src/lib/barrier/ClientApp.cpp,315
```
Since everything else logs with a timestamp I suggest changing this to NOTE as well for connection events being logged.
2020-06-01 12:02:33 +02:00
Dom Rodriguez
b373d8eda9 Merge pull request #679 from p12tic/x11-fix-event-wait-race-condition
XWindowsEventQueueBuffer: Fix delays when waiting for new events
2020-05-31 00:07:14 +01:00
Povilas Kanapickas
89c6623c0e lib/common: Remove no longer used stdexcept.h 2020-05-30 23:35:27 +03:00
Povilas Kanapickas
5eac13a969 Use noexcept instead of exception specifications 2020-05-30 23:35:27 +03:00
Dom Rodriguez
5d0f6e6f73 Merge pull request #719 from p12tic/tests
Fix building of tests
2020-05-30 21:14:08 +01:00
Povilas Kanapickas
13a0359c58 tests: Fix crash in XWindowsKeyStateTests 2020-05-30 22:41:25 +03:00
Povilas Kanapickas
5eafd30de4 lib/platform: Use std::string directly instead of String typedef 2020-05-30 21:46:49 +03:00
Povilas Kanapickas
a626f245a9 lib/net: Add missing include 2020-05-30 21:46:16 +03:00
Dom Rodriguez
4a2f1a9b61 Merge pull request #709 from p12tic/use-std-string-1
lib/base: Use std::string directly instead of String typedef
2020-05-30 18:00:54 +01:00
Dom Rodriguez
b02a20bd36 Merge pull request #712 from p12tic/use-std-string-4
lib/ipc: Use std::string directly instead of String typedef
2020-05-30 18:00:35 +01:00
Dom Rodriguez
df15e76e12 Merge pull request #710 from p12tic/use-std-string-2
lib/client: Use std::string directly instead of String typedef
2020-05-30 17:59:58 +01:00
Dom Rodriguez
4039bc2f3d Merge pull request #711 from p12tic/use-std-string-3
lib/arch: Use std::string directly instead of String typedef
2020-05-30 17:59:50 +01:00
Dom Rodriguez
9368845d8e Merge pull request #713 from p12tic/use-std-string-5
lib/net: Use std::string directly instead of String typedef
2020-05-30 17:59:36 +01:00
Povilas Kanapickas
787f907587 lib/ipc: Use std::string directly instead of String typedef 2020-05-30 16:00:42 +03:00
Povilas Kanapickas
61771d9039 lib/base: Use std::string directly instead of String typedef 2020-05-30 14:50:36 +03:00
Povilas Kanapickas
b4c1e4c239 lib/server: Use std::string directly instead of String typedef 2020-05-30 14:48:11 +03:00
Povilas Kanapickas
b93bcccf57 lib/net: Use std::string directly instead of String typedef 2020-05-30 14:47:11 +03:00
Povilas Kanapickas
6868491483 lib/arch: Use std::string directly instead of String typedef 2020-05-30 14:45:21 +03:00
Povilas Kanapickas
a0af288b2b lib/client: Use std::string directly instead of String typedef 2020-05-30 14:42:59 +03:00
Vasily Galkin
95f2a840be Windows 8+: make waiting for messages correspond to emptiness check
Fixes high cpu usage spikes on win10.
When queue was containing messages of only non-QS_POSTMESSAGE type the
"while (m_buffer->isEmpty())" busy-looped in EventQueue::getEvent
since isEmpty was true (checked only QS_POSTMESSAGE message type),
but waitForEvent returned immediately (checked more message types).

Investigation shows that the difference was introduced in
https://github.com/debauchee/barrier/commit/dbfb04a6e
to fix a problem with bad behaviour of GetQueueStatus
Researching showed that a similar problem was fixed in Qt,
and the solution was
"pass different flags to GetQueueStatus depending on version of windows"
https://bugreports.qt.io/browse/QTBUG-29097

So this patch makes changes to a barrier non-GUI core similar to Qt fix.
2020-05-29 14:09:48 +03:00
Povilas Kanapickas
722b7d6cc4 XWindowsEventQueueBuffer: Fix delays when waiting for new events
QLength() may return 0 even if there are events pending because they
need to be read from the display socket in order to become visible. We
must use XPending() which will poll the socket if QLength() == 0.
2020-05-20 22:11:14 +03:00
Vasily Galkin
8ab6ad64f9 Remove unused IEventQueue::isEmpty() method to simplify code understanding
Current code base don't use IEventQueue::isEmpty() method.
Remove it to simplify IEventQueue API and to remove confusion with
IEventQueueBuffer with same name.

The IEventQueueBuffer::isEmpty() and all its implementations kept unchanged
2020-05-13 01:35:40 +03:00
Dom Rodriguez
dbd10820c3 Merge pull request #585 from chewi/pthread
Use -pthread flag and simplify pthread build logic
2020-05-12 23:13:16 +01:00
Dom Rodriguez
fe0f3303d7 Merge pull request #655 from simons-public/elevate-bind-failure-to-error
Elevate XSocketAddressInUse to ERROR
2020-05-12 23:06:15 +01:00
Chris Simons
a9421a9cd3 Change log level on several status messages (Fixes #652, Fixes #516)
This changes the log level for several statuses (started server,
connected to server, server status:) from CLOG_NOTE or CLOG_INFO to
CLOG_PRINT so they will be printed to stdout regardless of the log
level. This allows the GUI to accurately report the status of the
`barriers` or `barrierc` processes in src/gui/src/MainWindow.cpp#L379-L399.
2020-05-11 20:36:51 -07:00
Chris Simons
b3349ddfec Elevate XSocketAddressInUse to ERROR
Errors where the socket address is in use will keep the server from connecting
with clients. This should be reported as an ERROR instead of a warning. Also,
if the retry time is shorter issues will be more obvious, since the error will
cause the log to scroll visibly.
2020-05-06 15:36:34 -07:00
James Le Cuirot
a0b3124f80 Use -pthread flag and simplify pthread build logic
Sometimes -lpthread is not enough. This has caused build failures on
Gentoo Linux in the past.

The logic also seems needlessly complex. We check for HAVE_PTHREAD on
UNIX platforms even though CMake errors out if pthreads are not
found. Similarly, we have a fallback for HAVE_PTHREAD_SIGNAL being
false even though we always set it to true.
2020-03-10 21:10:48 +00:00
Vasily Galkin
c79120c049 Fix infinite loop on fast TCP disconnection
The commit a841b28 changed the condition for removing job from processing.
New flag MultiplexerJobStatus::continue_servicing become used
instead of checking pointer for NULL.
However for cases when TCPSocket::newJob() returns nullptr
the behaviour changed: earlier the job was removed, but after change
it is called again, since MultiplexerJobStatus equal to {true, nullptr}
means "run this job again".

This leads to problem with eating CPU and RAM on linux
https://github.com/debauchee/barrier/issues/470

There is similar windows problem, but not sure it is related.
https://github.com/debauchee/barrier/issues/552

Since it looks that the goal of a841b28 was only clarifying
object ownership and not changing job deletion behaviour,
this commit tries to get original behaviour and fix the bugs above
by returning {false, nullptr} instead of {true, nullptr}
when TCPSocket::newJob() returns nullptr.
2020-02-09 23:27:26 +03:00
Keegan Quinn
3d832fd728 Cast values to fix build errors on OS X 10.11. 2019-11-24 12:40:13 -08:00
Daniel Seither
dc2d8e9661 Add override specifiers 2019-11-19 12:04:55 +01:00
Daniel Seither
937326bf4f OSXDragView: Get rid of uninitialized variable warning 2019-11-19 12:04:29 +01:00
Daniel Seither
96e8adbaae IpcLogOutputter: Put member initializers in execution order
Member initializers are always run in the order defined in the header.
This commit reorders them in the implementation so that their order
reflects their execution order.
2019-11-19 12:03:53 +01:00
Daniel Seither
da3876325d Remove unused variables 2019-11-19 12:01:37 +01:00
Casey Barton
69a65e4725 Merged mouse drift fix from synergy-core 2019-09-03 13:24:46 -04:00
Adrian Lucrèce Céleste
fca05b9163 Use standard mutex APIs instead of the home-grown wrapper (#410)
Use standard mutex APIs instead of the home-grown wrapper
2019-08-22 15:01:35 -04:00
Adrian Lucrèce Céleste
7bb541ea91 Merge pull request #411 from p12tic/rewrite-memory-management
Use explicit memory ownership in SocketMultiplexer
2019-08-22 15:01:21 -04:00
Adrian Lucrèce Céleste
ccfa10f2a0 Merge pull request #391 from EbonJaeger
Re-implement patch for horizontal scrolling and extra mouse buttons
2019-08-22 14:57:46 -04:00
Adrian Lucrèce Céleste
e31ebc1b22 Merge pull request #408 from p12tic/fix-ssl-mem-leak
Fix memory leak during SSL socket shutdown
2019-08-22 12:54:27 -04:00
Povilas Kanapickas
3600f4b255 Fix retry timer not being unregistered properly
This is cherry-pick of 70ba53caf4 from symless/synergy-core
2019-08-22 18:11:03 +03:00
Povilas Kanapickas
b0e415de03 Fix race condition in IArchString
Even though the calls to C functions are protected with a mutex, the
initialization and destruction of the mutex itself had race conditions.
2019-08-17 16:40:25 +03:00
Povilas Kanapickas
83d0639230 Use std::mutex instead of ArchMutex in IpcLogOutputter 2019-08-17 16:40:24 +03:00
Povilas Kanapickas
93c04bb2fa Use std::mutex instead of ArchMutex in IpcClientProxy 2019-08-17 16:40:23 +03:00
Povilas Kanapickas
36f3235f51 Use std::mutex instead of ArchMutex in IpcServer 2019-08-17 16:40:22 +03:00
Povilas Kanapickas
d9d39040ae Use std::mutex instead of ArchMutex in Log 2019-08-17 16:40:21 +03:00
Povilas Kanapickas
9df4741748 Use std::mutex instead of ArchMutex in EventQueue 2019-08-17 16:40:20 +03:00
Povilas Kanapickas
f71c68506e Use std::mutex instead of ArchMutex in ArchMultithreadPosix 2019-08-17 16:40:19 +03:00
Povilas Kanapickas
a841b2858f Make ownership of SocketMultiplexerJob explicit 2019-08-17 16:17:50 +03:00
Povilas Kanapickas
8dd6bc2c55 Make ownership of SocketMultiplexer explicit 2019-08-17 16:17:49 +03:00