Commit Graph

2131 Commits

Author SHA1 Message Date
Geoffrey McRae
f02d61d665 [host] dxgi: sleep until it's close to time to map
This change adds an average function to time how long it takes the GPU
to copy and map the texture, and then uses this average to sleep for 80%
of this average lowering CPU usage and potentially decreasing lock
contention.
2021-06-06 12:26:36 +10:00
Quantum
7f5f46c448 [client] wayland: offer all supported clipboard formats
This commit restructures the Wayland clipboard handling for host->VM.

Before, we select one clipboard format and buffers the data for it, to
be presented to spice when needed.

Now, we simply offer all clipboard formats supported, and only when spice
asks for the data do we actually read the wl_data_offer. The wl_data_offer
is kept around until a new offer is presented, the offer invalidated, or
when we lose keyboard focus. This is in accordance with the specification
for wl_data_device::selection, which states that:

> The data_offer is valid until a new data_offer or NULL is received or
> until the client loses keyboard focus. The client must destroy the
> previous selection data_offer, if any, upon receiving this event.

We still buffer the entire clipboard data into memory because we have no
knowledge of the clipboard data size in advance and cannot do incremental
transfers.

Furthermore, if the user performs drag-and-drop on our window, we may have
need to handle multiple wl_data_offer objects at the same time. Therefore,
instead of storing state on the global wlCb object, we instead allocate
memory and store it as user_data on the wl_data_offer. As a result, we also
handle drag-and-drop so that we can free the memory.
2021-06-06 12:20:42 +10:00
Quantum
24d0aa0c18 [all] normalize copyright on all source files 2021-06-06 11:53:05 +10:00
Quantum
c0bbc88e9a [all] add script to refresh copyright
Simply run `./refresh-copyright` in the repository to normalize the copyright
notice on all project source files.
2021-06-06 11:53:05 +10:00
Geoffrey McRae
fcf6abc7c6 [host] NvFBC/DXGI: make DXGI the default instead of the fallback
It has been detemined that a failure to init NvFBC causes a 20-30%
performance penalty on non NvFBC supported hardware (GeForce) when using
DXGI, as such reverse the order and default to using DXGI as our first
option.

If NvFBC is still desired, pr #500 added the option `app:capture` which
can be used to force NvFBC.
2021-06-06 06:14:24 +10:00
Geoffrey McRae
1d7eb50608 [host] cmake: force -O3 for release with debug builds 2021-06-06 02:25:48 +10:00
Geoffrey McRae
0d9b0bd367 [host] dxgi: increase maxTextures default to 4
Testing shows that at high frame rates the default of 3 is hampering
performance, increasing this to 4 yields a substantial performance
improvement.
2021-06-06 01:35:00 +10:00
Geoffrey McRae
87568f97eb [host] linux: add missing library to fix compilation 2021-06-04 12:44:21 +10:00
Geoffrey McRae
0b4e98881f [host] app: add os_showMessage for Linux
Linux doesn't have a generic way to show a dialog box, so we just use
DEBUG_INFO to print the message out to the console.
2021-06-04 12:39:11 +10:00
Geoffrey McRae
fb1b30b728 [host] app: calculate and report the required IVSHMEM size
One of the most common issues reported in the support channels is the
IVSHMEM size being too small. This change adds a calculation to
determine an optimal size and uses the new `os_showMessage` platform
method to display a message box to the user with the error.
2021-06-04 12:31:15 +10:00
Quantum
75a9e38e3a [client] wayland: remove sync transfer for VM->host copies
Since we are using epoll, there is no longer any need to remove O_NONBLOCK
with fcntl, and the comment is also no longer relevant.
2021-06-02 22:22:59 +10:00
Geoffrey McRae
c4468b1a0d [client] spice: update PureSpice to fix #556 2021-06-02 22:19:37 +10:00
Geoffrey McRae
b2974c38ef [client] app: cleanup clipboard option logic 2021-06-02 22:19:37 +10:00
arcnmx
b657b57016 [obs] install into plugin dir 2021-06-02 07:36:22 +10:00
arcnmx
6058a0e243 [obs] fix oob cursor writes 2021-06-01 14:37:45 +10:00
arcnmx
1462ab0cb4 [obs] fix cursor blending 2021-06-01 14:37:45 +10:00
arcnmx
186b0f1efd [obs] fix monochrome cursor crop 2021-06-01 14:37:45 +10:00
Quantum
000d91afca [client] wayland: prefer PNG over other image types
Support for non-PNG types is optional in the spice agent, so we should
avoid sending those if PNG is available.

Currently, the spice VDAgent supports only PNG and BMP formats.
2021-05-30 14:32:18 +10:00
Quantum
437bba1897 [client] wayland: update to support new spice clipboard type list 2021-05-30 12:39:00 +10:00
Geoffrey McRae
9ddfacc1a8 [client] x11: update to support new spice clipboard type list 2021-05-30 11:37:31 +10:00
Geoffrey McRae
28640295f1 [client] spice: update to support sending clipboard type list 2021-05-30 11:37:15 +10:00
Geoffrey McRae
118d9a086e [client] x11: implement win:noResize
This is the final fix for #506
2021-05-28 20:16:22 +10:00
Geoffrey McRae
77c2b895c6 [client] app: only minimize if lost focus when in full screen mode
This fixes a regression caused by the move from SDL2 which handled this
itself. We should only minimize when focus is lost if the application
was in full screen mode.
2021-05-28 19:32:26 +10:00
Geoffrey McRae
e6ed5574d5 [client] spice: update PureSpice submodule to fix agent message issues 2021-05-28 17:12:20 +10:00
Geoffrey McRae
09a7e177fa [client] core: fix use of unintalized variable
util_guestCurToLocal may not be able to provide the local position if
we do not yet know where the guest cursor is, or the destination render
rect dimensions. Acting on this when this information is unknown causes
undefined behaivour.
2021-05-28 17:00:13 +10:00
Geoffrey McRae
2e239ede3f [client] spice: update PureSpice again for more clipboard fixes 2021-05-27 21:11:43 +10:00
Geoffrey McRae
3dfd8e8dfd [client] spice: update PureSpice to fix large buffer paste bug 2021-05-27 20:48:01 +10:00
Geoffrey McRae
1e4e668c81 [client] spice: update PureSpice to fix clipboard stack overflow bug 2021-05-27 20:04:06 +10:00
Geoffrey McRae
3be645a357 [client] x11: fix BadAtom when pasting large buffers
To start a clipboard incr transfer the client has to delete the INCR
window property as the reply to the selection. This deletion generates a
property change event with the type delete, errornously triggering the
incr processing of the data. This patch corrects this by ignoring
property deletions.
2021-05-27 18:41:54 +10:00
Geoffrey McRae
95ec206b36 [client] x11: cosmetics 2021-05-27 18:41:54 +10:00
Jonathan Rubenstein
a7e4d9ec68 [doc] README.md: Correct docs link 2021-05-25 20:04:16 +10:00
Jonathan Rubenstein
86c7cfe589 [doc] Rerganize content into install and build pages 2021-05-25 19:52:08 +10:00
Jonathan Rubenstein
6da04655f0 [doc] troubleshooting: Move link to new website 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
fcc35331a3 [doc] README: Emphasis fix 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
b7765a22df [doc] index: IRC moved 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
4a2d6851b1 [all] README: Remove most info already in docs/ 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
397af46909 [doc] index: Correct spelling and add irc, trello, and donate info 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
8920d01dab [doc] module: Change AppArmor path for libvirt to include local/ 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
00c15238e8 [doc] host: Better formatting for Windows on Windows 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
75d48de905 [doc] host: Reformat build instructions for all platforms 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
d5fb1bab9a [all] README: Comment out inactive docs url 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
94ffcfba23 [doc] install: Add warning about downloading with git 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
5f20a026b2 [doc] install: Rename Running the Client to Usage
Also move relevant sentence into Usage
2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
b64fa56b26 [doc] module: Add instructions for systemd-modules-load.d 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
df869a8e6b [all] README.md: Update Documentation section with /doc 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
5fb6c73263 [doc] host: Imported from host/README.md
Placed at bottom of Technical FAQ to hide it
host/README.md removed
2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
2bee8d91b0 [module] README.md: Deleted file absorbed into /doc 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
77a4c114e9 [doc] module: Import from module/README.md 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
b2e460d19d [client] doc: Remove README.md as it has been absorbed into doc/install.rst 2021-05-25 16:57:52 +10:00
Jonathan Rubenstein
565b14f517 [doc] install: Add keybinds and full cli options from client/README.md 2021-05-25 16:57:52 +10:00