Commit Graph

468 Commits

Author SHA1 Message Date
Frediano Ziglio
e3dcbcb72f Package SPEC file into Meson distribution file
Put final SPEC file in GIT repository directly to avoid having
to bump Meson version to use distribution script. To avoid
having incoherent version numbers check the versions from CI.
Remove 'c' as project language, project don't need to compile
any files.
Meson however needs C compiler even if is not used so add to package
requirements.
Update CI to build RPM from package directly.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-03-09 19:00:42 +00:00
Eduardo Lima (Etrunko)
33946522aa Remove autotools files in favor of meson
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2020-03-09 19:00:36 +00:00
Eduardo Lima (Etrunko)
bbad3fb944 Update spec file and ci script to use meson as default
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2020-03-09 19:00:28 +00:00
Frediano Ziglio
0724605efc build-sys: post-release version bump 0.14.2
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2020-03-09 10:35:54 +00:00
Victor Toso
e0ec178a72 Release 0.14.1
Signed-off-by: Victor Toso <victortoso@redhat.com>
2020-03-06 17:05:07 +01:00
Frediano Ziglio
47c931ce2f build: Fix typo in SPEC file name
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2020-03-06 13:45:38 +00:00
Victor Toso
4816ae58d2 foreign-menu: mark as deprecated
This patch deprecates this interface and suggests to drop it in the
next release.

I don't know any user for this interface in the past 5 years. Spice
clients like remote-viewer do use oVirt API for foreign menu.

Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2020-03-06 10:46:00 +00:00
Victor Toso
2981f214d3 controller: mark as deprecated
This patch deprecates this interface and suggests to drop it in the
next release.

The last known user of this interface was spice-gtk, which dropped its
implementation in 2017-08-01 with

    spice-gtk@8da3378f "build-sys: remove the spice-controller library"

The commit log there has good enough justification to also drop this
in the protocol.

Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2020-03-06 10:45:55 +00:00
Marc-André Lureau
045a6978d6 vdagent: introduce VD_AGENT_CAP_CLIPBOARD_GRAB_SERIAL
When this capability is negoticated by both the client & the agent,
the clipboard grab messages have an associated serial counter.

The serial is reset to 0 upon client connection.

The counter is increment by 1 on each grab message, by both sides.

The sender of the message with the highest serial should be the
clipboard grab owner, and the current session serial should be
updated.

If a lower serial than the current session serial is received, the
grab should be discarded.

Whenever two grabs share the same serial, the one coming from the
client should have a higher priority and the client should gain the
clipboard ownership.

No special treatement is done for the unlikely case of overflowing the
counter. It may temporarily inverse the priority, until both side have
overflown and/or synchronized.

Note: this mechanism isn't aiming at making "the most recent" (as in
time) side gaining the ownership. One side sending subsequent grab
messages earlier will likely take the ownership over a side sending a
single message simultaneously the other way. It only clears the
situation where both side believe that the other is the current
clipboard owner, by having a global ordering and priority in case of
serial conflict.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2020-03-06 09:24:31 +01:00
Marc-André Lureau
4f397d695d vdagent: introduce VD_AGENT_CAP_CLIPBOARD_NO_RELEASE_ON_REGRAB
This capability means the peer will not send a release event between
two subsequent grabs. This helps with interaction issues with
clipboard managers which can be worked around by time-based filters at
this point. With this capability, there is no need for such filter.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2020-03-06 09:24:26 +01:00
Eduardo Lima (Etrunko)
08a3c23407 meson: generate spice-protocol.spec
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2020-03-04 12:35:35 +00:00
Victor Toso
faed1bf410 vdi_dev: remove deprecated header
Deprecated since 2d7bf3e "vdi-dev: mark as deprecated" in 2014-12-04
and version 0.12.8.

Signed-off-by: Victor Toso <victortoso@redhat.com>
2020-03-02 18:23:16 +01:00
Victor Toso
1366a78cac vd_agent: remove VD_AGENT_CLIPBOARD_MAX_SIZE_[DEFAULT ENV]
Not used since fc1e7e "Mark VD_AGENT_CLIPBOARD_MAX as deprecated" in
2013-11-14, release v0.12.7

Signed-off-by: Victor Toso <victortoso@redhat.com>
2020-03-02 18:15:24 +01:00
Marc-André Lureau
01f49a97bd Add a .gitpublish
Set a default profile for git-publish.
(https://github.com/stefanha/git-publish)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2020-02-29 13:22:26 +00:00
Kevin Pouget
96d7dd9eef stream-device: Define Quality Indicator messages
These messages are used to transmit streaming quality indicators from
the streaming device to SPICE Server.

The message is a variable-length, zero-terminated string.

A new capability is introduced (STREAM_CAP_QUALITY_INDICATOR) for
SPICE server and streaming agent capabilities negotiation.

Signed-off-by: Kevin Pouget <kpouget@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-11-08 14:35:48 +00:00
Kevin Pouget
8ee9c7822c protocol: Define an enumeration for Quality Indicator messages
These messages are used to transmit streaming quality indicators from
SPICE client to SPICE server.

The message data structure is defined in spice-common/spice.proto:

    message {
        Data data @to_ptr;
    } @declare quality_indicator;

Signed-off-by: Kevin Pouget <kpouget@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-11-08 14:35:44 +00:00
Denis Ollier
dbbe765a7e build-sys: remove codegen leftovers
Codegen has been removed since v0.12.11 (commit 2a6e51c7), no python
modules are used anymore by spice-protocol.

Signed-off-by: Denis Ollier <dollierp@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-11-04 15:48:26 +00:00
Frediano Ziglio
18c9917a71 build-sys: Provide spec file during build
Having the RPM spec file produced by the build is helpful in
different situation. Different tools like mock or code
scanners accept source RPMs as input.
Providing this file allows easily build of the source RPM (and
binaries) using a simple command like

  $ rpmbuild -ta spice-protocol-XXXX.tar.bz2

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-10-23 12:58:06 +01:00
Frediano Ziglio
21b06e6585 build-sys: Update URL in SPEC file
Use https instead of http, web server automatically redirects
to secure version.
Remove slash at the end, not needed.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-10-23 12:58:03 +01:00
Frediano Ziglio
fe0df3c546 build-sys: Import spec file from Fedora
Will be used by next commits.
The SPEC file will allow to an RPM from sources with a simple
rpmbuild command.
Package files are useful for easy deployment.
This will also be used to provide automatic package build.
This commit just contain a verbatim copy of upstream SPEC file
to make easier to see changes to it and have a start point.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-10-23 12:57:57 +01:00
Frediano Ziglio
7d28c75ba6 qxl_dev: Add comment to QXLQUICData->data field
Recently a bug using this structure was fixed.
The bug involved understand the usage of this field so add some
note on the field for future reference.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-22 13:30:26 +01:00
Francois Gouget
22f1b1297b protocol: Add some comments to vd_agentd.h
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2019-08-07 10:39:45 +01:00
Frediano Ziglio
81f56cf07a start-packet: Correct misleading comment
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Snir Sheriber <ssheribe@redhat.com>
2019-07-21 13:57:37 +01:00
Frediano Ziglio
2d34651f40 qxl_dev: Move QXLReleaseInfoExt out of start/end-packed.h
This structure is not declares as SPICE_ATTR_PACKED resulting it
as aligned and no packed using GCC (no MingW).
This structure is only packed under MingW or Microsoft compilers.
This structure is not technically a definition for QXL device but
is used only for spice-server QXL interface.
As said above this change could affect only MingW/Microsoft that is
only Windows ABI of spice-server (very recently added) so
following lines are really not much important.
Note that Windows does not support architectures with CPUs not
supporting unaligned access.
Under Win32 this change don't affect size so nothing much can change.
This structure is currently passed as value to release_resource
callback. Under Win64 this structure is passed like a
"const QXLReleaseInfoExt *" so even if the structure is 16 bytes instead
of 12 this is read the same way.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Snir Sheriber <ssheribe@redhat.com>
2019-07-21 09:47:20 +01:00
Frediano Ziglio
f436204ead qxl_dev: Fix alignment for QXLReleaseInfo
Do not declare the structure as aligned.
The start/end-packed.h headers affects structures without
specification only using MingW or Microsoft compilers. For other
platform SPICE_ATTR_PACKED macro should be used.  This way the
definition are the same for all compiler.
This structure is used in a lot of QXL structures which are not
aligned causing to have an aligned structure to be potentially
unaligned. Some compilers may report a warning.
As this structure has no holes this change does not make any size
change using any compiler.
The change will only change the alignment from 4/8 to 1.
This could affect structures containing this union however beside
packed structure in qxl_dev.h (which are not affected) there are no
other usages affecting ABI by spice-gtk, Qemu or spice-server.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Snir Sheriber <ssheribe@redhat.com>
2019-07-18 16:38:04 +01:00
Francois Gouget
5874495db3 macros: Remove unused SPICE_GNUC_XXX macros
We don't want to maintain more macros than necessary and these have
been unused for over two years.

Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-06-27 09:42:07 +01:00
Frediano Ziglio
fc52cac76f build-sys: post-release version bump 0.14.1
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-05-13 14:55:57 +01:00
Victor Toso
f72ece993a build-sys: add README.md and CHANGELOG.md to tarball
Before renaming README to README.md and NEWS to CHANGELOG.md, we were
shipping those files in the tarball.

I'm fixing this in autotools because it is a 'regression' while
meson.build never had those included.

Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-04-12 13:53:14 +00:00
Victor Toso
f8114fc266 NEWS: prepare for 0.14.0 release
Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-04-12 13:04:38 +00:00
Victor Toso
0f6b1848d9 README: Add basic info and .md prefix
Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-04-12 13:04:34 +00:00
Victor Toso
9bb75ff1d9 Rename NEWS to CHANGELOG.md
Uppercase + prefix to make Gitlab happy and format it properly.
This should also be the case for all other spice components in Gitlab.

Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-04-12 13:04:30 +00:00
Victor Toso
fc8f868949 ChangeLog: remove old one
Added 193c54c in 2010-02-04 by Alexander Larsson <alexl@redhat.com>
Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-04-12 13:04:21 +00:00
Victor Toso
26ca56157c gitlab-ci: add fedora meson+autotools
Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-04-12 13:04:17 +00:00
Victor Toso
2256fbe8f6 build-sys: automake: do not require NEWS and ChangeLog
Following patches will rename NEWS to CHANGELOG.md due Gitlab
integration and remove the currently empty ChangeLog.

Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-04-12 13:04:11 +00:00
Frediano Ziglio
0edf46218c Bump minor version to mark cleanup change
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-04-06 13:25:52 +01:00
Frediano Ziglio
f7ba19224d protocol: Generate enums.h again to remove old protocol definitions
spice.proto was updated to remove really old definitions,
update enums.h accordingly.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-29 16:06:32 +00:00
Frediano Ziglio
f6e4cb65da stats: Avoid holes in SpiceStat structure
The SpiceStat structure can be 20 or 24 bytes depending on alignment.
Being a memory mapped structure potentially used with lockless access,
it is not good to have it unaligned.
The only tool that we know of that reads this memory mapped file
(reds_stats) is able to detect if the structure is either 20 or 24
bytes and act accordingly so changing this structure won't affect the
behaviour (unless you have an old tool but as they are usually
packaged together this is quite improbable).
This will also help on Windows as in that system it is not possible
for reds_stats to implement the same discovery trick implemented on
Linux.  On Windows it is not possible to read the size of the file
mapping (on Windows to implement shared memory you can use a file
mapping not associated to a file).
The structure will change layout only on 32-bit architectures which is
not recommended nowadays (the 64-bit platforms that we support align
64-bit integers to 64 bits).

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-01-17 17:10:58 +00:00
Lukáš Hrázký
5ab9f2f7a5 Add the StreamMsgGraphicsDeviceInfo message
The message contains information about the graphics device and monitor
belonging to a particular video stream (which maps to a channel) from
the streaming agent.

Signed-off-by: Lukáš Hrázký <lhrazky@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-01-16 13:48:25 +00:00
Lukáš Hrázký
839cd8c1dd Add the VDAgentGraphicsDeviceInfo message
The message serves for passing the device address and device display ID
information for all display channels from SPICE server to the vd_agent.

Signed-off-by: Lukáš Hrázký <lhrazky@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-01-16 13:48:02 +00:00
Marc-André Lureau
578b92e635 build-sys: post-release version bump 0.12.16
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2019-01-11 21:31:05 +04:00
Marc-André Lureau
9e4414834d NEWS: prepare for 0.12.15 release
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-01-11 21:30:28 +04:00
Frediano Ziglio
334cef51d0 error_codes: Remove obsolete header file
This file was used by the old client to hold return error codes.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Snir Sheriber <ssheribe@redhat.com>
2019-01-02 10:00:52 +00:00
Eduardo Lima (Etrunko)
ee136f0050 meson: Add declare_dependency statement
This is required in the case another project uses this one as a subproject

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2018-09-26 16:22:07 -03:00
Frediano Ziglio
beda5ec7a6 qxl_dev: Align QXLRam to 4 bytes
This avoids compilers detect misaligned access which can lead to
warnings.
In QEMU the structure is allocated at the beginning of a 4Kb page,
in Xspice is allocated with a calloc, so the structure will end up 4
bytes aligned as well with these users. We are not aware of other users
of QXLRam, but if there was, it's likely the struct would be at least
naturally aligned, so this change should not impact anyone.
Aligning to 4 bytes maintains the size of the structure unchanged
avoiding possible ABI changes.
clang currently generates an invalid function call if a misaligned
4 byte atomic operation is detected.

This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1565766

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2018-07-11 10:19:45 +01:00
Christophe Fergeau
dca5931a3a meson: Post-release bump to 0.12.15
This was done for configure.ac earlier, but is missing in meson.build

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2018-06-21 14:43:45 +01:00
Frediano Ziglio
dec80bfe28 Fix typo in comment
extrenal -> external

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2018-06-21 11:27:09 +01:00
Snir Sheriber
5e2001b0ed Add support for h265 video codec
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2018-06-19 15:31:32 +01:00
Victor Toso
8460b25eec build-sys: post-release bump 0.12.15
Signed-off-by: Victor Toso <victortoso@redhat.com>
2018-06-01 12:17:48 +02:00
Victor Toso
d0cfb3648c NEWS: prepare for 0.12.14 release
Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2018-06-01 10:09:13 +02:00
Frediano Ziglio
ccda863268 vd_agent: Do not define structures without fields
According to C standard the size of a structure without fields is
not defined (see
https://stackoverflow.com/questions/21851930/size-of-empty-structure-in-c-and-c).
As we almost only use GCC currently these structures are of size 0.
This can became a problem if 2 sides talking a given protocol use
these structures.
To avoid such possible mismatch (for instance having one side C and
the other C++ which defines these structures as having 1 as size) add
an empty (0-size array) field.
Although a 0-size array is not considered also that portable we use
extensively this feature with different compilers never encountering
issues.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Uri Lublin <uril@redhat.com>
2018-05-31 17:20:54 +01:00