Path to this page:
Subject: CVS commit: wip/xf86-video-qxl
From: othyro
Date: 2014-12-04 21:03:18
Message id: E1Xwcch-0004LM-6F@sfs-ml-4.v29.ch3.sourceforge.com
Log Message:
xf86-video-qxl 0.1.3
Revise the XSpice audio processing to avoid the use of pthreads.
The initial implementation used a separate thread to drive the audio
playback channel. But if you have adaptive streaming turned on,
you will eventually get a update_client_playback_latency message on the
display channel (which in the Xspice case is being driven by the main,
Xorg, thread).
After enough time you would get a thread collision and bad things
would result. I saw this manifest as infinite spin loops in snd_send_data.
This patch eliminates the use of threading altogether, making everything
run in the main Xorg thread using watches and timers, eliminating the
possibility of thread collision.
drmmode: Fix compilation warning
One recent change introduced a gcc compilation warning:
CC qxl_drmmode.lo
qxl_drmmode.c: In function 'drmmode_set_mode_major':
qxl_drmmode.c:251:9: error: ISO C90 forbids mixed declarations and code \
[-Werror=declaration-after-statement]
CursorPtr cursor = xf86_config->cursor;
This commit moves the CursorPtr declaration to the top of the
drmmode_set_mode_major function in order to fix that warning.
Remove call to CrtcRotate()
Our driver doesn't support rotation, and calling CrtcRotoate()
may result in crash. Let's remove that useless call.
Fixes:
http://bugzilla.redhat.com/1067709
Check qxl_download_box() arguments
Sending empty region is invalid and the server returns an error (this
can be triggered by typing space in xfig)
Without the previous patch, error was ignored and the driver would enter
an infinite loop.
Assert on valid arguments, and return early if the given region is empty.
Fixes:
http://bugzilla.redhat.com/1151559
Assert on QXL_INTERRUPT_ERROR
When qemu qxl device reaches a guest bug, it might set the
QXL_INTERRUPT_ERROR interrupt flag, and stops processing guest
commands. Therefore, it makes sense to check that flag in the guest and
quit, instead of running in infinite loop in X and consuming CPU.
Related to:
https://bugzilla.redhat.com/show_bug.cgi?id=1151559
drm: fail gracefuly on monitor resize
If drmModeSetCrtc() failed, try to fallback to previous working
configuration.
Related to:
https://bugzilla.redhat.com/show_bug.cgi?id=1127552
In XSpice audio, fully clear the data structure; silences valgrind warnings.
When uploading a region, do not go outside the source image size.
This problem was exposed (and probably only occurs) when using XSpice
in dfps mode with spice-html5, and resizing from larger to smaller.
The screen would be resized, but the update region would still attempt
to transmit any pending changes to the (now) truncated surface. This
would often lead to a crash.
Initialize the frame buffer used in dfps mode; this silences a number
of valgrind errors.
Tune the dfps region tracking to collapse to the bounding rectangle
if too many small, incremental, updates are provided.
Attempting to use x11perf to measure performance revealed a fairly
serious weakness in the dfps code in that use case. In between
fps ticks, the updated_region would grow to have thousands of
rectangles, which made processing extraordinarily slow.
This patch provides a cap on the number of rectangles inside
a region; once it reaches the cap, we collapse the update_region
to just transmit the bounding rectangle instead.
Add helper functions for updating the boxes and regions; makes the
code a bit cleaner.
In XSpice mode, enable the ability to specify the various ram buffer sizes.
Also adjust the mode selection to fit, and add a few larger modes.
The display of the RAM size subtracts the frame buffer, but it has
already been subtracted in setting the num_pages field.
Skip modes more precisely.
Free the region pointer as well; eliminates a memory leak in dfps mode.
Files: