Commit Graph

341 Commits

Author SHA1 Message Date
Geoffrey McRae
fbbee1cdac [opengl] added support for alerts 2018-05-29 11:08:25 +10:00
Geoffrey McRae
89959b48a7 [client] added linked list utility 2018-05-29 11:08:01 +10:00
Geoffrey McRae
b26a535451 [client] added support for alert text 2018-05-29 11:06:42 +10:00
Geoffrey McRae
86207993b8 [client] alert the user when capture mode is on or off 2018-05-29 09:02:34 +10:00
Geoffrey McRae
ee9213da76 [client] add alert method to renderer api 2018-05-29 08:59:07 +10:00
Geoffrey McRae
a084b2b32f [client] added the ability to specify the capture key (-m) 2018-05-29 08:51:58 +10:00
Geoffrey McRae
afdae8efc0 [client] allow the system screensaver to operate, -S to disable 2018-05-29 08:34:52 +10:00
Geoffrey McRae
64ad862116 [client] remove noise about scaling/alignment as this is fixed 2018-05-29 08:28:55 +10:00
r4m0n
4d81aaa763 Code cleanup 2018-05-29 02:18:17 +10:00
r4m0n
8cb25792ba Fixing scaled mouse movement 2018-05-29 02:18:17 +10:00
Geoffrey McRae
97749b335a [client] start rendering a little earlier 2018-05-28 15:36:12 +10:00
Geoffrey McRae
a647a602bf [opengl] render a blue screen while waiting for sync 2018-05-28 15:30:31 +10:00
Geoffrey McRae
882b31aeaa [client] add support for masked colour cursors (fixes #61)
Also allows early SDL usage for cursor and keyboard control before
the host application starts
2018-05-28 11:40:56 +10:00
Geoffrey McRae
62e67c345c [client] reduce weight of FPS limiter feedback 2018-05-25 08:35:52 +10:00
Geoffrey McRae
5de9a8dce6 [client] prevent usleep underflow in FPS limiter 2018-05-24 18:10:23 +10:00
Geoffrey McRae
a4600e7278 [client] added FPS limiter for when running without vsync 2018-05-24 11:56:11 +10:00
Geoffrey McRae
c42bff99e2 [client] adjustments for better sync 2018-05-24 11:26:09 +10:00
Geoffrey McRae
df7183a572 [kvmfr] decouple cursor flags from frame flags and fix timings 2018-05-24 09:01:53 +10:00
Geoffrey McRae
7a5bbb1e59 [client] add unix socket support, fixes #67 2018-05-23 12:16:44 +10:00
Geoffrey McRae
a3cd0385d0 [doc] Fix formatting 2018-05-23 08:46:03 +10:00
Geoffrey McRae
8fdc11813d [doc] Rename DEBUGGING file for Markdown formatting 2018-05-23 08:45:07 +10:00
Geoffrey McRae
fb412e8440 [doc] Added some documentaion for how to debug the LG client 2018-05-23 08:44:11 +10:00
Geoffrey McRae
6f141fe393 [client] removed unused define in rsa.c 2018-05-22 15:40:08 +10:00
Geoffrey McRae
9b0f974648 [client] switch to nettle and gmp for RSA EME-OAEP support
Fixes #68
2018-05-22 15:36:36 +10:00
Geoffrey McRae
ceac6a60e6 [spice] initial GnuTLS implementation (incomplete) 2018-05-22 09:49:35 +10:00
Geoffrey McRae
cba6630aa0 [spice] relocate openssl code into seperate function
This is in preperation of switching to an alternative SSL library
as OpenSSL conflicts with the GNU licence.
2018-05-22 09:39:03 +10:00
Geoffrey McRae
b3aadccfc4 [client] use glFinish to prevent buffering and re-enable by default 2018-05-21 23:16:16 +10:00
Geoffrey McRae
b8a1743d8f [client] fixed crash when specifying the shmFile as a command 2018-05-21 21:46:48 +10:00
Geoffrey McRae
d097531926 [client] allow the mouse and keyboard to operate early 2018-05-16 18:19:32 +10:00
Geoffrey McRae
d339ca3599 [client] remove dependencies on libva until h264 is ready 2018-05-16 18:14:08 +10:00
Geoffrey McRae
adb1ca58b9 [opengl-basic] removed basic renderer as it is no longer needed 2018-05-16 18:13:20 +10:00
Geoffrey McRae
70ffe1de43 [h264] disable the module until I or someone finds time to finish it 2018-05-16 18:12:29 +10:00
Geoffrey McRae
cf4d16b528 [opengl] numerous improvements to buffer transfer 2018-05-16 17:58:36 +10:00
Geoffrey McRae
d0756cf00c [main] make it possible to manually specify the memory size 2018-05-15 20:07:48 +10:00
Geoffrey McRae
4fd59ce8c9 [opengl] fix free bug with new contiguous buffer 2018-05-15 19:25:22 +10:00
Geoffrey McRae
adca879fb9 [opengl] use a single contiguous buffer for the AMD pinned buffer 2018-05-15 19:23:57 +10:00
Geoffrey McRae
3a2d612b41 [decoders] change the API to allow more flexability in the future 2018-05-15 19:19:39 +10:00
Geoffrey McRae
332d53e016 [opengl] Add support for AMD_pinned_memory if it is available 2018-05-15 13:23:44 +10:00
Geoffrey McRae
ae1344d1a0 [spice] fix out by one error in call to strncpy 2018-05-15 09:56:42 +10:00
Geoffrey McRae
ae382949c8 [opengl] glxWaitVideoSyncSGI is not well supported in Mesa 18
It seems Mesa 18 has problems with the glxWaitVideoSyncSGI API so
we disable the 'preventBuffer' option by default
2018-05-15 09:54:24 +10:00
Geoffrey McRae
fd8d4d3d38 [client] enable configuration of spice via config 2018-02-05 19:08:31 +11:00
Geoffrey McRae
a2216e4b68 [client] cosmetics 2018-02-05 19:08:15 +11:00
Alam Arias
4fb9fc3b3f [client]: ignore Alt-F4 in ignoreQuit mode (#46)
* [client]: ignore Alt-F4 in ignoreQuit mode

* [client]: turn down the SNR for SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4

* [client]: turn down the SNR for SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS
2018-02-02 10:32:46 +11:00
arcnmx
d7321d5f5f [client] fix event loop sleep (#45) 2018-01-30 21:07:14 +11:00
Geoffrey McRae
35eda57cb2 [client] remoted accidential commit of experimental method from header 2018-01-29 17:30:46 +11:00
Geoffrey McRae
78a100135b [client] fix improper spice socket shutdown 2018-01-29 17:27:12 +11:00
Geoffrey McRae
dc6932a9ba [client] no need to supress bin directory creation command 2018-01-29 17:04:08 +11:00
Geoffrey McRae
d765674913 [client] fix concurrent make, fixes #43 2018-01-29 17:02:41 +11:00
Geoffrey McRae
2af522aea7 [client] prevent 100% CPU usage in event loop, fixes #41 2018-01-29 16:56:23 +11:00
arcnmx
9aba969296 [client] fix SDL mutex compile errors (#42) 2018-01-29 16:51:14 +11:00
Geoffrey McRae
2114b73c11 [client] makefile: use $(CC) instead of assuming gcc 2018-01-25 09:58:03 +11:00
Geoffrey McRae
d591e2fd36 [client] added xlib-shim to disable calls to XSync
The compiled xlib-shim.so can be used to intercept and prevent SDL
from calling XSync, which causes latency issues on some video
hardware.

To use specify the full path to the file in the LD_PRELOAD
environment variable, like so:

LD_PRELOAD=/full/path/xlib-shim.so ./looking-glass
2018-01-25 09:55:21 +11:00
Geoffrey McRae
c61d97b0ac [client] spice: add channel and mouse locking
This fixes a race condition which causes the mouse ringbuffer to
overflow. It also corrects out of order message index IDs due to
multiple threads sending messages asyncronously.
2018-01-25 07:41:11 +11:00
Geoffrey McRae
37ea662998 [client] use SDL_SetEventFilter for better mouse performance
This partially resolves lag issues on hosts running the amdgpu driver.
If mouse caputure is enable the lag issue returns, this is because SDL
calls `XSync` in `X11_WarpMouse` and `X11_WarpMouseGlobal`, if these
calls are removed all input lag issues dissapear.

This issue has been reported to SDL as the calls to `XSync` are not
required per the xlib documentation.
2018-01-24 23:46:11 +11:00
Aaron
3d9d275d61 Ignore SDL_MOUSEBUTTONDOWN events incompatible with SPICE (#38)
* Ignore SDL_MOUSEBUTTONDOWN events that aren't compatible with the SPICE PS/2 mouse
2018-01-15 10:55:17 +11:00
Geoffrey McRae
a02087e5e4 [client] h264: unroll silly loop 2018-01-06 13:47:35 +11:00
Geoffrey McRae
2ccf17b9b7 [client] h264: setup slice parameters correctly (incomplete) 2018-01-06 13:43:24 +11:00
Geoffrey McRae
8ccce5666c [client] nal: corrections to parsing logic 2018-01-06 13:40:31 +11:00
Geoffrey McRae
859e984827 [client] h264: vaapi deprecated these fields, FMO is not supported
fbed1dbb5b/va/va.h (L2840)
2018-01-06 09:47:49 +11:00
Geoffrey McRae
5e84cfb3f1 [client] h264: use parameters from nal (incomplete) 2018-01-06 00:11:38 +11:00
Geoffrey McRae
5a84d3bef7 [client] h264: don't treat parse failure as fatal 2018-01-05 23:18:52 +11:00
Geoffrey McRae
634be5b096 [client] nal: removed useless debug print 2018-01-05 23:13:22 +11:00
Geoffrey McRae
80c9e24604 [client] nal: added final SLICE parser features 2018-01-05 23:09:43 +11:00
Geoffrey McRae
5808089fce [client] nal: added SLICE parser 2018-01-05 21:36:26 +11:00
Geoffrey McRae
d6f84ddd12 [client] nal: added PPS parser 2018-01-05 16:18:28 +11:00
Geoffrey McRae
c809eeb2a8 [client] fixed nal parser memory leaks 2018-01-05 15:27:36 +11:00
Geoffrey McRae
2dfb1cf1a6 [client] Makefile: stop at the first error 2018-01-05 11:45:30 +11:00
Geoffrey McRae
50ba9b4899 [client] added initial NAL unit parser 2018-01-05 11:36:45 +11:00
Geoffrey McRae
b9723adc30 [client] h264: use high profile as it's more compatible on newer cards 2018-01-04 09:27:24 +11:00
Geoffrey McRae
7648ea712c [client] opengl: fix termination on configure failure 2018-01-04 09:25:42 +11:00
Geoffrey McRae
3f29897506 [client] fix application termination on error 2018-01-04 09:25:17 +11:00
Geoffrey McRae
bebbdc4089 [client] h264 switch to contrained decoder as baseline is deprecated 2018-01-01 12:56:26 +11:00
Geoffrey McRae
fbf08b94aa [client] initial vaapi h264 decode support (unfinished) 2017-12-31 00:27:26 +11:00
Geoffrey McRae
e854723aa3 [client] fixed incorrect cursor dataPos validation 2017-12-30 13:48:32 +11:00
Geoffrey McRae
076a45acc5 [client] added initial decoder framework 2017-12-29 22:48:21 +11:00
Geoffrey McRae
c239306d82 [client] initial support for compressed frames 2017-12-29 21:20:51 +11:00
Geoffrey McRae
40bfdcdf8c [client] added configuration file loading support
the client now will look for a configuration file in the following
locations by default.

* /etc/looking-glass.conf
* ~/.looking-glass.conf

All configuration files are loaded and may override values specified by
any prior configuration files loaded.

Sample Config:

    global:
    {
      fullScreen=false;
      showFPS=true;
      x=0;
      y=0;
      w=800;
      h=600;
    }

    OpenGL:
    {
      mipmap="false";
    }
2017-12-28 19:58:19 +11:00
Geoffrey McRae
6a6e53f728 [client] removed the dependency on the ivshmem-server
Since we do not use IRQs anymore we can use the ivshmem-plain device
which doesn't need the ivshmem-server. The QEMU arguments now should be
as follows:

-device ivshmem-plain,memdev=ivshmem
-object memory-backend-file,id=ivshmem,share=on,mem-path=/dev/shm/looking-glass,size=32M

Obviously adjusting the memory size as required. It is suggested that
the shared memory file be created before the guest is started with the
appropriate permissions, for example:

touch /dev/shm/looking-glass
chown user:kvm /dev/shm/looking-glass
chmod 660 /dev/shm/looking-glass
2017-12-28 15:34:18 +11:00
Geoffrey McRae
db52a55b36 [client] opengl: remove deprecated glScissor, fixes FPS display 2017-12-23 17:40:50 +11:00
Geoffrey McRae
0574daca13 [client] removed unused function argument 2017-12-23 17:38:25 +11:00
Geoffrey McRae
a08aad8009 [client] opengl: don't scale the FPS readout 2017-12-21 06:50:57 +11:00
Geoffrey McRae
2b66fa6136 [client] warn about unreliable cursor scaling
This also logs the scaling information to assist with reports about
improper mouse alignment
2017-12-21 06:39:41 +11:00
Geoffrey McRae
e3a426f378 [client] update dimension information after the first frame 2017-12-21 06:38:34 +11:00
Geoffrey McRae
e5f86a824a [client] switch back to atomic locking as the default
The prior patch to correct the mouse loop resolves the CPU load issue
with the atomic locking method. SDL mutexes are still available if
desired but full mutex locking is far slower then fast spinlocks
2017-12-21 02:12:19 +11:00
Geoffrey McRae
c0b2c8e655 [client] added missing wait to cursor update thread 2017-12-21 01:56:59 +11:00
Geoffrey McRae
c5cbb948e2 [client] report locking mode used for diagnostics 2017-12-21 01:35:36 +11:00
Geoffrey McRae
58ed978767 [client] opengl: switch to SDL_mutex locking 2017-12-21 01:23:25 +11:00
Geoffrey McRae
c098967293 [client] opengl: update FPS even when there is no updates 2017-12-21 01:17:45 +11:00
Geoffrey McRae
8fbacba82e [client] make startup sleep nicer on the CPU 2017-12-21 01:15:16 +11:00
Geoffrey McRae
0753e63644 [client] fixed unlock define 2017-12-21 01:11:42 +11:00
Geoffrey McRae
5501d22a2d [client] fixed missed usage of new locking semantics 2017-12-21 01:03:21 +11:00
Geoffrey McRae
2f6b7e08f8 [client] define locking types and semantics to allow for alt methods 2017-12-21 00:58:16 +11:00
Geoffrey McRae
695822bd6d [client] redesign of the renderer archiceture for mt support
This is the first of two commits that completely turn the rendering code
on it's head. This change set decouples the guest's capture rate from
the host's render rate for both cursor and frame updates. This helps
prevent the host application from stalling when waiting for frame draws
when all it want's to do is send cursor updates.

* Breaks OpenGL-Basic for now
2017-12-20 00:53:45 +11:00
Geoffrey McRae
a70adb2568 [client] correct help text for new -o argument 2017-12-19 15:40:52 +11:00
Geoffrey McRae
21a4e15868 [client] cosmetics 2017-12-19 15:37:49 +11:00
Geoffrey McRae
8b25f8a344 [client] opengl: show actual FPS seperate from updates per second (UPS) 2017-12-19 12:17:50 +11:00
Geoffrey McRae
7d307c0a9c [client] improved option parsing 2017-12-19 11:58:38 +11:00
Geoffrey McRae
133d8ec21f [client] opengl: added preventBuffer option 2017-12-19 11:02:35 +11:00
Geoffrey McRae
f4b95eeda9 [client] fix option output counts and dynamic name padding 2017-12-19 10:56:23 +11:00
Geoffrey McRae
c38e38d43d [client] opengl: add splitmouse option
This feature was previously hardcoded enabled, it is now optional as
some hardware pipelines stall with the excessive flushes resulting in a
jumpy cursor. Default is disabled and may be re-enabled with
`-o opengl:splitmouse=1` or `-o opengl-basic:splitmouse=1` depending on
the renderer selected.
2017-12-19 10:21:45 +11:00