2025-02-07  Daniel P. Berrangé  <berrange@redhat.com>

	Bump release to 1.5.0 and update NEWS

2025-02-04  Daniel P. Berrangé  <berrange@redhat.com>

	Temporarily disable new cursor tests on big endian systems
	The tests currently fail on s390x and it is not clear whether
	this is a test bug or a client decoding bug.

	Change colour variable names in tests
	The RGB values don't actually correspond to black & white, so rename
	to just 'dark' and 'pale' instead.

	Avoid overflow of challenge buffer in test suite
	We don't want a trailing NUL byte in the buffer, so switch to
	initializing it as bytes instead of a string.

	Switch to use rpm-autospec

	Ensure RPM owns the vala directories

	Change RPM dep used for pod2man

	Drop obsolete gcrypt dep from RPM spec

2025-01-27  Daniel P. Berrangé  <berrange@redhat.com>

	Expand debugging messages for pixel format

2025-01-24  Daniel P. Berrangé  <berrange@redhat.com>

	Fix up for changed API in VncCursor class

2025-01-23  Daniel P. Berrangé  <berrange@redhat.com>

	Add new APIs to force a visible cursor
	Sometimes the remote VNC server will send a cursor definition that is
	0x0 pixels in size, or has no visible pixels defined.

	Add an API that allows applications to request overriding invisible
	cursors with a locally defined cursor, which is a simple crosshair.

	Undo pre-multiplied alpha channel with alpha cursor

	Introduce testing of cursor encodings

	Use encoding constants in test suite

	Use g_assert_cmpint for better error messages

	Tweak debug message for pixel shifts

2025-01-22  Daniel P. Berrangé  <berrange@redhat.com>

	Pull out some common code for handling cursor changes

	meson: expand refusal to use ucontext to all macOS platforms
	We previously blocked use of ucontext on macOS aarch64 hardware, but
	we've had sufficient bug reports on x86_64 hardware that we believe
	ucontext is probably unsafe to use there too.

	Closes: https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/18

	Fix handling of invalid auth types
	When vaildating auth types we must discard any that we don't support
	rather than raising an error about them. An error is only appropriate
	if there are no possible auth types that are supported.

	Fixes: 7ce8c34852f5cf97866e47232a1fc5376db5ae0a
	Closes: https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/30
	Closes: https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/34

	Remove unused variable

2025-01-20  Daniel P. Berrangé  <berrange@redhat.com>

	Remove obsolete wiki links
	Fixes https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/29

	Remove obsolete syms for vnc_image_framebuffer
	This class was deleted when gtk2 support was dropped

	Fixes: https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/33

	Preserve color map across desktop resizes
	The color map is invalidated after a SetPixelFormat message and after
	a VMware Display Mode Change psuedo-encoding update.

	Fixes: https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/28

2025-01-09  Daniel P. Berrangé  <berrange@redhat.com>

	Fix double free in SASL error path
	Fixes c2edfdbd864a64f0bf6d436eaaf092a6d82477f6

2025-01-06  Daniel P. Berrangé  <berrange@redhat.com>

	Add GitLab CI file for making releases
	Derived from recommended minimal example at:

	  https://handbook.gnome.org/maintainers/making-a-release.html

	rpm: add gcc dep and remove mingw-filesystem version
	We should not rely on implicit deps for gcc install.

	All versions of Fedora have new enough mingw-filesystem
	packages.

	Fallback to non-pkg-config lookup of gmp
	Most versions of gmp lack pkg-config support

	Bump version to 1.4.0 and update release notes

	Fix sig of mpz_urandomb in dhtest
	While the API docs declare the 2nd parameter as 'gmp_randstate_t', the
	header files declare it as 'gmp_randstate_ptr'. Either way this does not
	matter for the test suite from a functional POV as the param is not
	used. We just need to avoid triggering the compiler warnings:

	[59/119] Compiling C object src/dhtest.p/dhtest.c.o
	../src/dhtest.c:45:48: warning: argument 2 of type ‘__gmp_randstate_struct[1]’ with mismatched bound [-Warray-parameter=]
	   45 | void mpz_urandomb(mpz_ptr mpi, gmp_randstate_t rng G_GNUC_UNUSED, mp_bitcnt_t bits)
	In file included from /usr/include/gmp.h:59,
	                 from ../src/dhpriv.h:24,
	                 from ../src/dhtest.c:23:
	/usr/include/gmp-x86_64.h:1114:44: note: previously declared as ‘gmp_randstate_ptr’ {aka ‘__gmp_randstate_struct *’}
	 1114 | __GMP_DECLSPEC void mpz_urandomb (mpz_ptr, gmp_randstate_ptr, mp_bitcnt_t);
	      |                                            ^~~~~~~~~~~~~~~~~

2024-12-11  Daniel P. Berrangé  <berrange@redhat.com>

	Replace gcrypt with GMP for DH APIs
	The only remaining use of gcrypt is for the DH API impls,
	which can be replaced with use of GMP.

	Convert connection code to use gnutls for ciphers/hashes
	We already use gnutls for some DES cipher code. Convert the remaining
	places that still use gcrypt over to gnutls for ciphers/hashes/rng.

	Add testcase for ARD auth type

	Add testcase for MS logon auth type

	Add testing of invalid VNC auth types

	Add testing of VNC auth scheme

	Refactor VNC connection test to cope with more scenarios
	This will make it possible to test authentication logic

	Split up connection test init helper

	Make greater use of common init helper in VNC connection test

	Rename VNC connection test methods for greater clarity
	Three naming patterns

	 * server_XXX  - stuff invoked from server thread
	 * client_signal_XXX - helpers for client signals
	 * test_XXX - helper methods

	Use constants for encodings in VNC connection test

	Don't export gcry_mpi_t type in internal DH APIs.
	This will make it easier to remove use of gcrypt in future

	Convert vnc_bytes_to_mpi to use GBytes

	Convert vnc_mpi_to_bytes to use GBytes

	Add test case for DH support

2024-12-10  Daniel P. Berrangé  <berrange@redhat.com>

	Honour warning / deprecation CFLAGS in tests

	Add validation of auth types
	Don't offer apps the option to choose an auth type which is not
	supported by our code, raise this as an auth failure.

	Group signals in 5s and comment signal number
	This makes it easier to correlate with debug messages

2024-10-11  Marek Kasik  <mkasik@redhat.com>

	src: Avoid artifacts on HiDPI displays
	VncDisplay shows horizontal and vertical lines
	when scaling of the widget is performed on HiDPI display.
	This can be avoided by moving the updated rectangle by -0.5
	in both directions and increasing its size by 1 in
	both directions.
	Also the values which currently avoid artifacts on non-HiDPI
	displays has to be modified for both cases when scaling
	of VNC display is enabled and disabled.
	This fixes the issue for 200%, 300% and 400% HiDPI scales.

2024-09-16  Daniel P. Berrangé  <berrange@redhat.com>

	Don't assume SASL client out data is NUL terminated
	It can be arbitrary binary data so should not be formatted
	with '%s', and we should not access 1 past the end of the
	array when sending it, instead an explicit separate NUL byte
	must be sent.

	When receiving data from the server also check for the NUL
	padding byte.

2024-09-11  Daniel P. Berrangé  <berrange@redhat.com>

	rpm: fix adding translations to mingw packages

	Avoid requesting SSF layer over UNIX sockets
	It is valid to run without either an SSF or TLS when usig a UNIX
	socket since they are not ordinarily subject to 3rd party MITM
	attacks/snooping. Relaxing this allows more SASL auth mechanisms
	to be used on UNIX sockets, in particular the SCRAM_SHA256
	challenge/response, which is useful as a plain password auth
	scheme.

	Tweak debug message about SASL mechlist

	Fix leak of socket address during SASL auth process

2024-07-09  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	gvncviewer: Allow ungrabbing keyboard
	It can be frustrating for someone who is used to keyboard navigation
	between windows to find themselves unable to navigate away easily from
	a gvncviewer window, because gvncviewer grabs the keyboard by
	default.  Once it is focused, you can't keep navigating away.

	This change adds an option to the "View" menu called "Grab
	keyboard" (which is initially checked).  When that item is unchecked,
	GVncViewer still reads from the keyboard, but it doesn't take away the
	window manager's (or the compositor's) ability to use the keypress
	first.

2024-05-12  Scrambled 777  <weblate.scrambled777@simplelogin.com>

	Add Hindi translation

2024-04-29  Daniel P. Berrangé  <berrange@redhat.com>

	ci: add lcitool project definitions
	This is consumed by CI in virtualization projects like virt-viewer

2023-09-18  Andre Klapper  <a9016009@gmx.de>

	DOAP / README: Replace defunct Mailing List with Discourse

2023-09-07  Vasil Pupkin  <3abac@3a.by>

	Add Belarusian translation

2023-06-02  Jean-Louis Dupond  <jean-louis@dupond.be>

	Add VNC_DISPLAY_CREDENTIAL_CA_CERT_DATA
	This commits add an additional credential: VNC_DISPLAY_CREDENTIAL_CA_CERT_DATA
	So this can be used by virt-viewer to pass a trusted CA to the TLS
	negotiation.

2023-05-26  Sabri Ünal  <libreajans@gmail.com>

	Update Turkish translation

2023-04-26  Daniel P. Berrangé  <berrange@redhat.com>

	rpm: convert license to SPDX format

2023-01-23  Daniel P. Berrangé  <berrange@redhat.com>

	coroutine: print configured coroutine backend in meson summary

	coroutine: import coroutine test suite from spice-gtk
	This imports a simple unit test program to validate the coroutine
	implementation.

	coroutine: avoid ucontext impl on macOS M1 hardware
	The 'struct ucontext_t' declared by system headers appears too small,
	because getcontext() calls will scribble over memory after the end of
	the struct. The libucontext impl is a suitable alternative, as is the
	fallback gthread impl.

	coroutine: add support for libucontext
	libucontext is a lightweight implementation of ucontext for platforms
	that do not have a built-in implementation. This allows us to use the
	same code to support libucontext as ucontext.

	This is a copy of the spice-gtk commit

	  commit fa812c88492641005a768c72502a8953bd1223b2
	  Author: osy <osy@turing.llc>
	  Date:   Fri Mar 4 15:52:48 2022 -0800

	    coroutine: add support for libucontext

	coroutine: import winfiber impl from spice-gtk
	This will offer greater performance that the gthread impl

	continuation: Simplify implementation
	Instead of using ucontext and setjmp together just use setjmp and
	limit ucontext usage to initialise the initial jmp_buf context.
	This simplifies the code and reduce number of context operations done.
	In particular using _setjmp/_longjmp moving from a context to
	another does not require any system call.
	On x64 the continuation structure is reduced from 2176 to 248 bytes.

	This is a copy of the spice-gtk commit

	  commit 5989350429a79787f02e9c869c7769989781d320
	  Author: Frediano Ziglio <freddy77@gmail.com>
	  Date:   Fri Aug 14 05:26:35 2020 +0100

	    continuation: Simplify implementation

	Allows to use Valgrind with ucontext coroutines
	Changing stack is not usually instrumentation friendly.
	Allows to enable the usage of Valgrind memcheck calling some
	valgrind macros.

	This is a copy of the spice-gtk commit:

	  commit 942bd130ddd3c331045c1d3e4f580909901d285a
	  Author: Frediano Ziglio <freddy77@gmail.com>
	  Date:   Thu Aug 13 14:31:52 2020 +0100

	      Allows to use Valgrind with ucontext coroutines

	coroutine_gthread: Fix recursive yield
	This is a copy of spice-gtk commit:

	  commit 9def63a7a402e491ba79a4aa98ef85f8142f11b4
	  Author: Frediano Ziglio <freddy77@gmail.com>
	  Date:   Tue Aug 11 21:24:26 2020 +0100

	    coroutine_gthread: Fix recursive yield

	coroutine_gthread: Do not call g_cond_init
	Not necessary from Glib 2.32 for static allocated conditions.

	This is a copy of spice-gtk commit:

	  commit 3b24b556fdef88e4582cffec01800d24bb65ae24
	  Author: Frediano Ziglio <freddy77@gmail.com>
	  Date:   Tue Aug 11 21:23:09 2020 +0100

	      coroutine_gthread: Do not call g_cond_init

	coroutine: Initialize "current" at link time
	This is a copy of spice-gtk commit

	  commit 25875b2e26a54a08571376da31684eed316df6d5
	  Author: Frediano Ziglio <freddy77@gmail.com>
	  Date:   Tue Aug 11 17:51:18 2020 +0100

	      coroutine: Initialize "current" at link time

	coroutine: Remove "release" field
	Not used and implemented in different ways by the various
	coroutine implementations

	This is a copy of spice-gtk commit:

	  commit ca2e4ec3bb4f5ce590b8c35fe173247c71958f20
	  Author: Frediano Ziglio <freddy77@gmail.com>
	  Date:   Tue Aug 11 17:49:53 2020 +0100

	      coroutine: Remove "release" field

	coroutine: Make coroutine_swap static
	Only used by different coroutine implementations

	This is a copy of the spice-gtk commit:

	  commit 5f162843f96baf54c74cb9a5fe9b3b5801026d14
	  Author: Frediano Ziglio <freddy77@gmail.com>
	  Date:   Tue Aug 11 17:45:40 2020 +0100

	      coroutine: Make coroutine_swap static

	coroutine-gthread: Modernize a bit coroutine-gthread.
	This is a copy of the spice-gtk commit:

	  commit 274ea2683bb1c9e88ce58e2640e84a47a8fcb939
	  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
	  Date:   Fri Jan 4 17:38:28 2019 +0400

	    coroutine-gthread: fix GThread deprecations

	coroutine: error out on OOM or impossible conditions
	Take an approach similar to gthreads, which are considered as low
	level/must work features by glib, which aborts on failures.

	This change is copied from the spice-gtk commit:

	  commit 0508f586be974a49497a15d5ce39b2f94b68a4bf
	  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
	  Date:   Tue Nov 19 15:29:28 2013 +0100

	    coroutine: error out on OOM or impossible conditions

	coroutine: make gthread coroutine pass tests
	The coroutine entry() return value must be passed via the caller->data,
	since coroutine_swap() returns from->data. (this is needed because
	coroutine_swap() argument is used both to return from entry() or to send
	data to a running coroutine)

	When leaving a coroutine, clear its caller.

	Return correct coroutine_self() before other coroutine are initialized.

	This is a copy of spice-gtk commit

	  commit 0c120e0f6d94da5b7aa2009e8c07fc1290722c01
	  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
	  Date:   Tue Nov 19 14:57:05 2013 +0100

	      coroutine: make gthread coroutine pass tests

	coroutine: fix current coroutine
	When leaving a coroutine, it swaps back to where it came from, not to
	the leader/main coroutine.

	This is a copy of spice-gtk commit

	  commit a9a2c162e0ee03f80e3e6f7450a002719a80d06a
	  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
	  Date:   Fri Nov 15 22:03:40 2013 +0100

	      coroutine: fix current coroutine

	coroutine: add some preconditions
	This is a copy of spice-gtk commit

	  commit baa51c5ee34ca6d0448d02901a0a61dc87c3dff8
	  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
	  Date:   Fri Nov 15 22:03:39 2013 +0100

	    coroutine: add some preconditions

	use _setjmp/_longjmp to speed up coroutine switching
	As described in http://www.1024cores.net/home/lock-free-algorithms/tricks/fibers

	This is a copy from spice-gtk of

	  commit 1cbfe2b8fccb86a20039867fc33bc475f358f8e4
	  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
	  Date:   Fri Aug 12 16:32:20 2011 +0200

	    use _setjmp/_longjmp to speed up coroutine switching

	build: disable syntax-check on non-Linux
	The rules expect GNU make which is not the default.

	build: remove disabled / irrelevant syntax-check rules
	Many of the GNULIB rules are explicitly disabled, while others are
	testing for scenarios that don't apply because we don't use GNULIB,
	and prefer glib2 APIs over raw platform libc APIs.

	build: purge parts of maint.mk unrelated to syntax-check

	build: fix syntax-check test case to actually do something
	The syntax-check script was setting the wrong current directory, so make
	was reporting nothing todo, making the test a no-op.

	examples: remove tabs from python demo

2022-12-23  Olga Smirnova  <mistresssilvara@hotmail.com>

	Add Interlingue translation

2022-11-28  Marc-André Lureau  <marcandre.lureau@redhat.com>

	build-sys: export vnc_color_map_lookup()
	It's in the public API.

2022-09-13  Marc-André Lureau  <marcandre.lureau@redhat.com>

	rpm: add reference documentation

	build-sys: build API docs with gi-docgen
	gtk-doc is being phased out, as unmaintained.

	Despite some current limitations or annoyances, gi-docgen is what
	Glib/Gtk+ is using these days, so follow along.

	I didn't include gvncpulse, it should be trivial to add if necessary...

	build-sys: build meson requirement to >=0.56
	Modernize a little bit the meson file, to avoid extra warnings when
	running a recent meson versions.

2022-09-06  Marc-André Lureau  <marcandre.lureau@redhat.com>

	Add g_autoptr API for exported allocated types

2022-08-08  Daniel P. Berrangé  <berrange@redhat.com>

	rpm: merge mingw specfile into native spec
	Fedora best practice is to now maintain native and mingw
	builds together, to prevent mingw falling behind and reduce
	the maint burden.

2022-07-14  Daniel P. Berrangé  <berrange@redhat.com>

	Bump version to 1.3.1 and add release notes

	Add 'check' arg to meson run_command()

2022-07-07  Zurab Kargareteli  <zuraxt@gmail.com>

	Add Georgian translation

2022-06-27  Eli Schwartz  <eschwartz93@gmail.com>

	fix invalid use of subprojects
	The keycodemapdb Meson subproject provides a program and a source input.
	Since it is a subproject, Meson wants to sandbox that and requires it to
	be explicitly exported. But this never happened -- instead, we manually
	poked at files using the actual string path "subprojects/......"

	This was always a Meson sandbox violation, but Meson 0.63.0 started
	noticing it and erroring out.

	Instead, do the right thing. Update the subproject to a version that has
	a meson.build with actually meaningful contents -- namely, a files
	variable and a found program. Then use these in order to run the needed
	custom_target.

	In the process, it is also necessary to correct the argument ordering
	when running keymap-gen.

2022-02-23  Johannes Maibaum  <jmaibaum@gmail.com>

	Handle ZRLE encoding of zero size alpha cursor

2021-11-17  Daniel P. Berrangé  <berrange@redhat.com>

	Bump version to 1.3.0 and add release notes

	The vala-tools package was dropped long ago
	It has only existed as a virtual Provides line since Fedora 25

2021-11-15  Daniel P. Berrangé  <berrange@redhat.com>

	Remove bogus newlines from VNC_DEBUG calls
	This macro is a wrappar around g_debug and as such doesn't need to add
	its own newline, unless trying to break a single message across lines.

2021-11-12  Daniel P. Berrangé  <berrange@redhat.com>

	tools: fix gvnccapture handling of subauth types

	src: rewrite challenge code to use gnutls
	gcrypt refuses to encrypt DES data using an all-zeros key. While this
	might seem reasonable, this is the key that you get when someone sets
	a zero length password in a VNC server.

	IOW, the gcrypt behaviour prevents gtk-vnc connecting to a server with
	zero length password.

	GNUTLS doesn't have this problem but also doesn't support DES-ECB,
	so we have to fake it by calling DES-CBC for each block individually.
	Conceptually this is horribly inefficient, but since the VNC challenge
	is only 16 bytes long it isn't a problem in the real world.

	src: pull challenge encryption out into separate helper method

2021-05-27  Daniel P. Berrangé  <berrange@redhat.com>

	fix missing includes for quartz and broadway GDK backends
	This is another case of the bug fixed in

	commit d2c93a2bc0a9caa73bbebb41333fa7930d4165ab
	Author: Daniel P. Berrangé <dan@berrange.com>
	Date:   Tue Mar 30 15:00:00 2021 +0100

	    Add missing include of gdkwin32.h

	Closes: https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/16

	Remove unused variables

2021-05-27  Thomas Loimer  <thomas.loimer@tuwien.ac.at>

	Add a button to rotate the screen
	On each click on the new menu item, the screen is rotated by additional
	90 degrees clockwise.

2021-05-27  Jakub Janků  <jjanku@redhat.com>

	ard: set connection error
	As with vncEncryptBytes2 in the earlier patch,
	the connection error must be set, otherwise the connection
	stays in the mainloop, but nothing is happening.

	ard: cleanup properly
	With the current code, if one of the gcry functions in
	vnc_connection_perform_auth_ard() fails:
	* key isn't released
	* md5 isn't closed
	* mpis and dh aren't released

	vncEncryptBytes2: set connection error and cleanup
	If vncEncryptBytes2 fails, the false return value propagates
	upwards, but no error is set. The connection ends up stuck in
	the mainloop with nothing happening.

	Additionally, the mpis and dh aren't freed.

	To fix that, return the gcry error from vncEncryptBytes2
	and set the connection error accordingly.

	vnc-auth: emit "vnc-auth-failure" for weak key
	In vnc_connection_perform_auth_vnc(), if the user enters an empty
	password, gcry_cipher_setkey() fails with GPG_ERR_WEAK_KEY.

	In such case, we want to give the useranother chance to reenter
	the password, as is the case when the password is incorrect.

	To enable that, the auth-failure signal needs to be emitted.

	Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1941398

2021-05-07  Mart Raudsepp  <leio@gentoo.org>

	meson: Find python explicitly to honor downstream python choice

2021-04-28  Matt Turner  <mattst88@gmail.com>

	meson: Fix configuration failure with -Dwith-vala=disabled
	Otherwise with_vala is not defined, and meson setup results in

	    src/meson.build:169:5: ERROR: Unknown variable "with_vala".

2021-04-26  Jakub Janků  <jjanku@redhat.com>

	build: improve --with-coroutine=auto choice
	When the required ucontext functions aren't found, switch to gthread
	coroutines instead of failing during the build.

	These functions are absent from the POSIX.1-2008.

	Fixes: https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/11

2021-04-14  Daniel P. Berrangé  <berrange@redhat.com>

	meson: bump release to 1.2.0

	Fill in NEWS for 1.2.0 release

	meson: only run syntax-check if runnin from git
	The syntax-check rules use git to get a list of files to check.

2021-04-07  Daniel P. Berrangé  <berrange@redhat.com>

	src: add support for zoom level
	This allows the remote desktop be to kept at a fixed scaling
	factor between 10% and 400%.

	src: fix incorrect method names in API docs and inconsistent param names

	src: implement preferred width/height helpers
	This is the more modern approach to layout sizing in GTK, compared to
	setting an explicit size request. The main benefit is that we can
	force a resize to match the remote desktop size, while still allowing
	the user to resize the window smaller. This is useful when either
	scaling, or client initiated framebuffer resizes are enabled.

	examples: default hostname to "localhost" if not specified

2021-04-06  Marc-André Lureau  <marcandre.lureau@redhat.com>

	connection: annotate vnc-cursor-changed can be NULL

	connection: use boxed type for pixel-format-changed

	connection: simplify sharedFlag argument name
	Lower_case is the prefered glib C style.

	misc: spelling in doc

	colormap: fix GI annotation for lookup

	connection: document VncConnectionAuth
	GEnum works with values that fit in int. However 0xffffffa doesn't fit,
	it is actually -6. We can't change the assigned value as this would
	likely change the representation of the enum back to int and may break ABI.

2021-04-01  Daniel P. Berrangé  <berrange@redhat.com>

	rpm: ensure Obsoletes rules are versioned
	Obsoletes are recommended to include the max version that is intended to
	be erased, to allow the package to be reintroduced more easily at a
	later date if required.

	build: simplify release prep script to reduce number of builds

	rpm: update URLs for home page and download

	rpm: remove obsolete ldconfig scriptlets

	rpm: cull conditionals related to RHEL-7

	po: refresh po files with latest content

	meson: set cflags directly on targets
	Setting the cflags globally causes them to be picked up by g-ir-scanner
	which is not desired.

	meson: only set extra warning flags when warninglevel==2
	This makes us respect the meson warning level and avoids warnings from
	meson about reinventing its warninglevel feature.

	meson: set _FORTIFY_SOURCE in config.h
	Avoiding setting it in meson.build means we can honour the optimization
	level defined by meson.

	Revert "src: unset size request if scaling is active"
	This (mostly) reverts commit 0b0afcad76d208d8c371706123a731e215bff710.

	Widget resize requests are handled asynchronously, so when the
	idle func runs, we may not have actually done the resize yet.
	This resulted in the window not honouring the desktop resize
	notifications at all times.

	The do_size_request() call in vnc_display_set_scaling was
	a separate bug fix that must be kept.

	examples: enable lossy encodings in demo program

	src: add logging of encodings that are sent

2021-03-31  Daniel P. Berrangé  <berrange@redhat.com>

	src: add debugging when setting pixel format

	src: fix pixel shifts in rgb24_blt functions
	The src pixel is always rgb24 format, regardless of what the
	remote pixel format is, so we should not be using the remote
	pixel shifts.

	Fixes https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/14

	src: fix inverted rgb24_blt function lookup
	We we picking the rgb24_blt function based on the remote
	pixel format, rather than the local pixel format. This
	caused the pixel data to be horizontally compressed in
	low color depth modes.

	Fixes https://gitlab.gnome.org/GNOME/gtk-vnc/-/issues/14

	src: fix remote pixel format when reading alpha cursor
	The remote pixel format for alpha cursor is always RGB888
	true colour, regardless of the framebuffer pixel format.

	src: remove overly verbose debug logging
	This avoids printing debug messages on every mouse event

2021-03-30  Daniel P. Berrangé  <berrange@redhat.com>

	Add missing include of gdkwin32.h
	This is needed for GDK_IS_WIN32_DISPLAY. This bug was masked until

	  commit 78225889ce861c0d3ea4aa97603fef252817505f
	  Author: Marc-André Lureau <marcandre.lureau@gmail.com>
	  Date:   Wed Mar 24 12:45:27 2021 +0400

	    Cleanup Gtk2 leftovers

	src: clear resize event source ID after cancelling
	If we don't clear it then we'll later try to remove the source a second,
	third, fourth time which isn't desirable.

	examples: add menu option for keep aspect ratio

	examples: always enable scaling and resizing
	These are both features that are generally expected to be used.

	Also protecting the use of scaling behind an is_composited
	check is wrong on Wayland. Any modern platform can cope with
	scaling these days.

	src: add option to keep aspect ratio when scaling the display
	Currently applications like virt-viewer will apply their own workaround
	to keep the aspect ratio by fixing the widget size. Since applications
	want this behaviour, we should support it directly.

	src: introduce helper for calculating scaling/offset info
	Currently the widget either scales the rendering, or offsets it.
	In the future it needs to be able to do both. There are multiple
	methods which need to know this info, so introduce a helper to
	calculate it.

	src: fix mem leaks in SASL, rich cursor and xcursor code

2021-03-24  Marc-André Lureau  <marcandre.lureau@redhat.com>

	meson: use pkgconfig module to generate pc files

	Cleanup Gtk2 leftovers

2021-03-17  Jakub Janků  <jjanku@redhat.com>

	connection: fix format string for auth failure
	This error is visible when entering an empty password and results
	into an error message like this:

	"Unknown authentication failure: %s: Weak encryption key"

2021-03-11  Daniel P. Berrangé  <berrange@redhat.com>

	src: avoid sending a resize with dimensions -1, -1
	When we receive a desktop resize request, we blank out the last resize
	data, but we failed to cancel the timer. This results in us later
	sending a resize for -1, -1, which is interpreted as 65535, 65535
	and then clamped to the max possible framebuffer size by the server.

2021-03-10  Daniel P. Berrangé  <berrange@redhat.com>

	src: ensure vncversion.h includes glib.h

	src: ensure vncversion.h is installed

2021-03-09  Daniel P. Berrangé  <berrange@redhat.com>

	src: introduce a vncversion.h header file
	This header can be used by apps which want to conditionally use newer
	functionality at build time.

	src: remove emacs indent variables from all source files
	The top level .dir-locals.el file can achieve the same end goal.

2021-01-08  Daniel P. Berrangé  <berrange@redhat.com>

	examples: add menu option to enable desktop resizing

	src: implement dynamic resize of remote desktop on widget resize
	This wires up the widget to send remote desktop resize requests to
	the server when the widget changes size. Resize requests will be
	delayed for 500ms each time a resize is seen, so that when the user
	is resizing the windows we only send a request once they've stopped
	instead of for the 100's of intermediate sizes.

	src: add APIs to control whether desktop resizing is allowed
	If desktop resizing is allowed, it will take priority over scaling when
	the server supports it.

	src: add API for requesting a desktop resize

	src: block non-incremental updates after extended desktop resize
	A compliant server must send a extended desktop resize framebuffer
	update after receiving an update reqest with incremental==0. This will
	trigger an infinite loop if the client responds to a desktop resize
	with incremental==0.

	Block the next framebuffer update request from using incremental==0
	if it immediately follows a extended desktop resize.

	src: add minimal support for extended desktop resize
	This processes extended desktop resize frame buffer updates in the
	same way as the traditional desktop resize updates.

	build: disable introspection in mingw builds

	build: change with-vala and introspection options into features
	Using "feature" type lets us automatically disable them when appropriate

	build: enable glib/gtk API version usage checking

2021-01-07  Daniel P. Berrangé  <berrange@redhat.com>

	build: bump min versions of dependancies to RHEL8 vintage

	src: remove use of obsolete thread APIs
	Threading is always initialized from glib 2.32 onwards

2021-01-04  Daniel P. Berrangé  <berrange@redhat.com>

	meson: fix undefined variables for syms files on non-Linux builds
	Even though we don't pass the linker args to use the sym files on
	non-Linux, we still reference the syms files as dependencies.

2020-12-11  Daniel P. Berrangé  <berrange@redhat.com>

	src: unset size request if scaling is active
	If scaling is active at the same time as force size, we want to set the
	new size request, and then unset to let the user continue to resize.

	src: reset widget size request when changing force-resize prop
	Currently once force-resize is turned on, we never unset the widget size
	request if it is turned back off.

	src: optimize to avoid recreating framebuffer if size/format is unchanged
	The QEMU VNC server will send a desktop size rectangle immediately
	following any vmware desktop size change rectangle. This is redundant as
	the latter already reports the size change. This leads to the display
	needlessly re-creating the framebuffer despite nothing having changed.

	src: fix handling of WMVi updates
	The WMVi update encodes a new pixel format and desktop size in one
	request. Clients should not assume that a separate desktop size message
	will arrive, although QEMU does send one.  IOW, the desktop resize
	signal must be emitted in response to a WMVi update too.

	src: ensure libraries are rebuilt when syms file changes

	examples: wire up to handle desktop renames

	examples: wire up a menu for power control options

	src: add support for desktop rename
	Desktop rename allows the remote server to change the name associated
	with a desktop.

	src: add support for "last rect" encoding type
	The last rect encoding allows servers to be more efficient by sending
	rectangles before knowing how many there will be in total.

	src: add support for VNC power control actions
	This allows a client to request shutdown/reboot/reset of remote virtual
	machines when appropriate.

	Add support for VeNCrypt "plain" auth mode
	The "plain" auth mode sends a username and password "as is" to the
	server. This mode is only sensible to use if combined with TLS
	session encryption, or if the channel is otherwise immune from
	MITM attacks, such as a UNIX domain socket.

	src: correctly handle zero size alpha cursor
	Even with a zero size cursor we still have to read the encoding type off
	the wire. Assuming we get a raw encoding, we don't have any further data
	to read.

	src: dont emit framebuffer refresh signals for alpha cursor

2020-12-10  Daniel P. Berrangé  <berrange@redhat.com>

	src: enable the alpha cursor encoding preferrentially
	The alpha cursor provides better quality than the older x-cursor or
	rich cursor extensions.

	src: add support for alpha cursor encoding
	The alpha cursor encoding sends the cursor in RGBA format.

2020-12-08  Daniel P. Berrangé  <berrange@redhat.com>

	src: check connections errors earlier when processing cursor changes

	src: pass the framebuffer object into update handlers
	We can't assume there will be only one framebuffer going forward, so
	need to pass around an instance explicitly.

	src: use framebuffer dimensions for validating framebuffer updates
	The framebuffer size would match the remote desktop size at all times so
	there is no functional change here. This will be useful, however, when
	the update code is reused for decoding data unrelated to the primary
	desktop.

2020-12-08  Dr. Matthias St. Pierre  <matthias.st.pierre@ncp-e.com>

	gvncviewer.py: suppress noisy output
	Don't print anything to stdout unless the `--verbose (-v)`
	option is provided.

	gvncviewer.py: fix the screenshot feature
	It seems like GdkPixbuf.Pixbuf.save() was replaced by GdkPixbuf.Pixbuf.savev(),
	which yields the following error:

	  Traceback (most recent call last):
	    File ".../gtk-vnc/examples/gvncviewer.py", line 64, in vnc_screenshot
	      pix.save("gvncviewer.png", "png", { "tEXt::Generator App": "gvncviewer.py" })
	  AttributeError: 'Pixbuf' object has no attribute 'save'

	gvncviewer.py add menu items for sending Ctrl+Alt+F2 and  Ctrl+Alt+F3
	You can never have enough console windows ;-)

	gvncviewer.py: add window close handler to terminate the program
	This fixes the issue that the program hangs when the window is
	closed using the 'X' button.

	gvncviewer.py: add a '-h' and '--help' switch
	Also postpone the time consuming loading of the Gtk libraries until
	the sys.argv has been checked.

	gvncviewer.py: add support for UNIX domain sockets
	In addition to specifying a <host> name (and optional <display> number)

	    gvncviewer.py <host>[:<display>] [password]

	it is now also possible to specify the <path> of a UNIX domain socket:

	    gvncviewer.py unix:<path> [password]

	The syntax is inspired by QEMU's `-vnc unix:<path>` argument.

	gvncviewer.py: fix TypeError in GtkVnc.Display.send_keys()
	GtkVnc.Display.send_keys() now expects X11 key value constants
	instead of strings, which resulted in a TypeError:
